﻿html, body {
    font-family: "Source Sans Pro", arial, sans-serif;
}

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

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

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

.content {
    padding-top: 1.1rem;
}

h1:focus {
    outline: none;
}

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

.invalid {
    outline: 1px solid rgb(220, 53, 69);
}

.validation-message {
    color: rgb(220, 53, 69);
}

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

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


.custom-tab .mud-tab {
    justify-content: left !important;
}

.flex-grow-2 {
    flex-grow: 2;
}
/* --- Data Agent knowledge dialog ------------------------------------------------------------- */

/*
    The dialog is a fixed frame: the title, the tab bar and the action bar hold still, and only the body of
    the active tab scrolls. Letting the whole dialog scroll is what used to carry the tabs off the top of
    the screen and leave an orphaned sentence behind them, and it made the dialog change height on every
    tab.
*/
.data-agent-dialog {
    display: flex;
    flex-direction: column;
    height: min(90vh, 60rem);
    max-height: 90vh;

    /* MudBlazor lets the dialog itself scroll; here the panels do, and nothing else. */
    overflow: hidden;
}

.data-agent-dialog .mud-dialog-title {
    flex: 0 0 auto;
    padding-bottom: 0.75rem;
}

.data-agent-dialog .mud-dialog-content {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 0 1.5rem;
    overflow: hidden;
}

.data-agent-dialog .mud-dialog-actions {
    flex: 0 0 auto;
    margin: 0;
    padding: 0.5rem 1.5rem;
    border-top: 1px solid var(--mud-palette-lines-default);
}

.data-agent-body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
}

.data-agent-centre {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 3rem 1rem;
}

/* --- header ---------------------------------------------------------------------------------- */

.data-agent-head {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
}

.data-agent-head__text {
    min-width: 0;
}

.data-agent-head__title {
    line-height: 1.2;
}

/* The state of the report in three chips, so it is read rather than deduced from a paragraph. */
.data-agent-head__state {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-wrap: wrap;
    margin-left: auto;
}

/* --- tabs ------------------------------------------------------------------------------------ */

.data-agent-notices {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding-top: 0.75rem;
}

.data-agent-tabs {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
}

.data-agent-tabs .mud-tabs-tabbar {
    flex: 0 0 auto;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

/* The one scrolling region of the dialog. */
.data-agent-tabs .mud-tabs-panels {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
}

.data-agent-panel {
    padding: 1.25rem 0.25rem 1.5rem;
}

/* A filter bar belongs to what is under it, so it stays put while that scrolls. */
.data-agent-toolbar {
    position: sticky;
    top: 0;
    z-index: 4;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
    padding: 0.6rem 0;
    background-color: var(--mud-palette-surface);
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.data-agent-toolbar__filter {
    flex: 1 1 14rem;
    max-width: 24rem;
    margin-left: auto;
}

.data-agent-toolbar__user {
    max-width: 16rem;
    min-width: 11rem;
}

.data-agent-toolbar__end {
    display: flex;
    align-items: center;
    margin-left: auto;
}

/* --- the numbers that describe a model ------------------------------------------------------- */

.data-agent-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr));
    gap: 0.5rem;
    margin-bottom: 1.25rem;
}

.data-agent-stat {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    column-gap: 0.55rem;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
}

.data-agent-stat__icon {
    grid-row: 1 / span 2;
    color: var(--mud-palette-text-secondary);
}

.data-agent-stat__value {
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
}

.data-agent-stat__label {
    font-size: 0.7rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

/* --- cards and columns ----------------------------------------------------------------------- */

.data-agent-card {
    padding: 1rem 1.1rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
}

.data-agent-card--flat {
    margin-bottom: 1.25rem;
    background-color: var(--mud-palette-background-gray);
}

.data-agent-card__head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.data-agent-cols {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

.data-agent-cols--even {
    grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
}

@media (max-width: 1100px) {
    .data-agent-cols {
        grid-template-columns: minmax(0, 1fr);
    }
}

.data-agent-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.5rem;
}

.data-agent-link__select {
    flex: 1 1 20rem;
    min-width: 14rem;
    max-width: 32rem;
}

.data-agent-switch {
    margin-top: 0.75rem;
}

.data-agent-answering {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.4rem;
    margin-top: 1.25rem;
}

.data-agent-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 3rem 1rem;
}

.mud-icon-root.data-agent-empty__icon {
    font-size: 3.5rem;
}

.data-agent-empty__text {
    max-width: 34rem;
}

/* --- load history ---------------------------------------------------------------------------- */

.data-agent-history {
    margin: 0;
    padding: 0;
    list-style: none;
}

.data-agent-history__item {
    display: flex;
    gap: 0.5rem;
    padding: 0.45rem 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.data-agent-history__item:last-child {
    border-bottom: 0;
}

.data-agent-history__body {
    min-width: 0;
}

.data-agent-history__name {
    font-size: 0.82rem;
    overflow-wrap: anywhere;
}

.data-agent-history__meta {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-history__error {
    font-size: 0.72rem;
    color: var(--mud-palette-error);
}

/* --- readiness ------------------------------------------------------------------------------- */

.data-agent-coverage {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: -0.5rem 0 0.75rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/*
    Five stacked alerts used to push the model itself off the screen. The findings are summed up in one
    line and only unfold when there is something to act on.
*/
.data-agent-findings {
    margin-bottom: 0.75rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    overflow: hidden;
}

.data-agent-findings--error {
    border-color: var(--mud-palette-error);
}

.data-agent-findings--warning {
    border-color: var(--mud-palette-warning);
}

.data-agent-findings__head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 0;
    background: transparent;
    font: inherit;
    font-size: 0.82rem;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.data-agent-findings__head:hover {
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-findings__title {
    flex: 1 1 auto;
    font-weight: 600;
}

.data-agent-findings--error .data-agent-findings__head {
    color: var(--mud-palette-error);
}

.data-agent-findings--warning .data-agent-findings__head {
    color: var(--mud-palette-warning);
}

.data-agent-findings__list {
    margin: 0;
    padding: 0 0.75rem 0.35rem;
    list-style: none;
}

.data-agent-finding {
    display: flex;
    gap: 0.55rem;
    padding: 0.45rem 0;
    border-top: 1px solid var(--mud-palette-lines-default);
}

.data-agent-finding--error .mud-icon-root {
    color: var(--mud-palette-error);
}

.data-agent-finding--warning .mud-icon-root {
    color: var(--mud-palette-warning);
}

.data-agent-finding--info .mud-icon-root {
    color: var(--mud-palette-info);
}

.data-agent-finding__title {
    font-size: 0.82rem;
    font-weight: 600;
}

.data-agent-finding__text {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/* --- rows, tags and entries ------------------------------------------------------------------ */

.data-agent-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.data-agent-row--line {
    padding: 0.3rem 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.data-agent-row--head {
    margin-bottom: 0.6rem;
}

.data-agent-row--head .data-agent-segments {
    margin-left: auto;
}

.data-agent-row__name {
    overflow: hidden;
    font-size: 0.88rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.data-agent-row__name--mono {
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.8rem;
}

.data-agent-row__meta {
    margin-left: auto;
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

.data-agent-tag {
    display: inline-flex;
    align-items: center;
    padding: 0.05rem 0.45rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 999px;
    font-size: 0.68rem;
    line-height: 1.55;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

.data-agent-tag--info {
    border-color: var(--mud-palette-info);
    color: var(--mud-palette-info);
}

.data-agent-tag--success {
    border-color: var(--mud-palette-success);
    color: var(--mud-palette-success);
}

.data-agent-tag--warning {
    border-color: var(--mud-palette-warning);
    color: var(--mud-palette-warning);
}

.data-agent-tag--primary {
    border-color: var(--mud-palette-primary);
    color: var(--mud-palette-primary);
}

.data-agent-subhead {
    margin-bottom: 0.35rem;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.data-agent-subhead__note {
    margin-bottom: 0.5rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-entry {
    padding: 0.3rem 0;
}

.data-agent-entry__note {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-entry__note--indent {
    padding-left: 1.75rem;
}

/* DAX and M expressions: readable, never widening the dialog. */
.data-agent-code {
    margin: 0.25rem 0 0.5rem 0;
    padding: 0.5rem 0.75rem;
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
    color: var(--mud-palette-text-primary);
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.78rem;
    line-height: 1.35;
    max-height: 14rem;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
}

/* --- import ---------------------------------------------------------------------------------- */

.data-agent-upload,
.data-agent-upload label {
    display: block;
    width: 100%;
}

.data-agent-drop {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 2.5rem 1rem;
    border: 1px dashed var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
    text-align: center;
    cursor: pointer;
    transition: border-color 120ms ease, background-color 120ms ease;
}

.data-agent-drop:hover {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.mud-icon-root.data-agent-drop__icon {
    font-size: 2.75rem;
}

.data-agent-progress {
    margin-top: 1rem;
}

/* --- prompts --------------------------------------------------------------------------------- */

.data-agent-prompts {
    display: grid;
    grid-template-columns: minmax(14rem, 20rem) minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

@media (max-width: 1100px) {
    .data-agent-prompts {
        grid-template-columns: minmax(0, 1fr);
    }
}

.data-agent-prompt-list {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.data-agent-prompt-item {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    width: 100%;
    padding: 0.5rem 0.65rem;
    border: 1px solid transparent;
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
    font: inherit;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.data-agent-prompt-item:hover {
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-prompt-item--on {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-prompt-item__head {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.data-agent-prompt-item__head .data-agent-tag {
    margin-left: auto;
}

.data-agent-prompt-item__name {
    font-size: 0.85rem;
    font-weight: 600;
}

.data-agent-prompt-item__text {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

/* A prompt is read and edited as a whole, so it gets a monospaced, roomy editor. */
.data-agent-prompt .mud-input-slot {
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.82rem;
    line-height: 1.4;
}

/* --- picked models --------------------------------------------------------------------------- */

/* The model in effect, under the stage it belongs to on the stage list. */
.data-agent-prompt-item__foot {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.15rem;
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-prompt-item__foot .mud-icon-root {
    font-size: 0.95rem;
}

.data-agent-prompt-item__foot .data-agent-tag {
    margin-left: auto;
}

.data-agent-model-name {
    overflow: hidden;
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.data-agent-models {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

/* One card per model: what it is called, what it costs, and what the price list says it is for. */
.data-agent-model {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-surface);
    font: inherit;
    color: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color 120ms ease, background-color 120ms ease;
}

.data-agent-model:hover:not(:disabled) {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-model:disabled {
    opacity: 0.6;
    cursor: default;
}

.data-agent-model--on {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-model__head {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.data-agent-model__head .data-agent-tag {
    margin-left: auto;
}

.data-agent-model__name {
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.85rem;
    font-weight: 600;
}

.data-agent-model__price {
    padding-left: 1.65rem;
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-model__text {
    padding-left: 1.65rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/* --- segmented control ----------------------------------------------------------------------- */

.data-agent-segments {
    display: inline-flex;
    overflow: hidden;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 999px;
    background-color: var(--mud-palette-surface);
}

.data-agent-segment {
    padding: 0.3rem 0.85rem;
    border: 0;
    background: transparent;
    font: inherit;
    font-size: 0.78rem;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    cursor: pointer;
}

.data-agent-segment + .data-agent-segment {
    border-left: 1px solid var(--mud-palette-lines-default);
}

.data-agent-segment:hover:not(:disabled) {
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-segment:disabled {
    opacity: 0.5;
    cursor: default;
}

.data-agent-segment--on,
.data-agent-segment--on:hover:not(:disabled) {
    background-color: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
}

/* --- usage ----------------------------------------------------------------------------------- */

.data-agent-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.data-agent-kpi {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
}

.data-agent-kpi__label {
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.data-agent-kpi__value {
    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
}

.data-agent-kpi__note {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-tablewrap {
    margin: 0.25rem 0 1.5rem;
    overflow-x: auto;
}

.data-agent-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

.data-agent-table th {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    font-weight: 600;
    text-align: left;
    white-space: nowrap;
    color: var(--mud-palette-text-secondary);
}

.data-agent-table td {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    vertical-align: middle;
}

.data-agent-table tbody tr:hover {
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-table .num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.data-agent-table .nowrap {
    white-space: nowrap;
}

.data-agent-table__question {
    min-width: 16rem;
}

/* The opening row of a dialog. It carries the totals of the whole dialog, so it reads as a heading. */
.data-agent-row--chat > td {
    font-weight: 600;
}

.data-agent-chat__head {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

/* The questions inside an opened dialog, set back from the row that opens it. */
.data-agent-row--turn > td {
    background-color: var(--mud-palette-background-grey);
}

.data-agent-table__turn {
    padding-left: 2rem;
}

/* The person whose questions the report is currently filtered to. */
.data-agent-row--selected {
    background-color: var(--mud-palette-action-default-hover);
    box-shadow: inset 3px 0 0 var(--mud-palette-primary);
}

/* --- action bar ------------------------------------------------------------------------------ */

.data-agent-foot {
    display: flex;
    align-items: center;
    gap: 1rem;
    width: 100%;
}

.data-agent-foot__hint {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-height: 1.5rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-foot__actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}


/* ------------------------------------------------------------------ Data Agent: live run status */

/*
    What the assistant is doing right now, in place of the rotating sentence that used to stand here and
    said nothing. The actor is the loud part: knowing that the DAX developer is on its second attempt is
    what makes a slow answer legible instead of merely slow.
*/
.dac__status {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem;
}

.dac__status-actor {
    font-weight: 600;
    color: var(--mud-palette-primary);
}

.dac__status-detail {
    color: var(--mud-palette-text-secondary);
}

.dac__status-attempt {
    padding: 0.05rem 0.4rem;
    border-radius: 999px;
    background-color: var(--mud-palette-warning-lighten);
    color: var(--mud-palette-warning-darken);
    font-size: 0.7rem;
}

.dac__status-bar {
    height: 2px;
    margin-top: 0.5rem;
    border-radius: 999px;
    background-color: var(--mud-palette-lines-default);
    overflow: hidden;
}

.dac__status-bar-fill {
    height: 100%;
    background-color: var(--mud-palette-primary);
    transition: width 240ms ease;
}

/* The report frame has a fixed viewport-based height in the normal layout because the
   application header sits above it. The header is outside #main-content and disappears
   when that element enters fullscreen, so let flexbox consume the actual remaining space
   instead of retaining the header allowance as an empty strip at the bottom. */
#main-content:fullscreen {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

#main-content:fullscreen .fullscreen-report-frame {
    flex: 1 1 0;
    min-height: 0;
    height: auto !important;
}

#main-content:fullscreen .fullscreen-report-frame iframe {
    display: block;
    width: 100%;
    height: 100%;
}

/* Compact breadcrumb trail (SmCrumbTrail, used by SmBreadcrumbs and ReportBreadcrumbs).
   One 20px row: Home icon › parent › current. Global because the icons are Mud
   components, which CSS isolation cannot reach. Colors come from the Mud palette so
   every tenant theme (light and dark) applies. */
.sm-crumbs {
    margin: 0 0 6px;
    font-size: 0.8125rem;
    line-height: 20px;
    min-width: 0;
}

.sm-crumbs ol {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    min-width: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

.sm-crumbs li {
    display: flex;
    align-items: center;
    min-width: 0;
    flex: 0 1 auto;
}

/* The current page keeps its width first; ancestors shrink before it does. */
.sm-crumbs li:last-child {
    flex-shrink: 0;
    max-width: 50%;
}

.sm-crumbs a,
.sm-crumbs__text,
.sm-crumbs__current {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 40ch;
    border-radius: 4px;
}

.sm-crumbs a,
.sm-crumbs__text {
    color: var(--mud-palette-text-secondary);
    text-decoration: none;
}

.sm-crumbs a {
    transition: color 120ms ease;
}

.sm-crumbs a:hover {
    color: var(--mud-palette-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.sm-crumbs a:focus-visible {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 1px;
}

.sm-crumbs__current {
    color: var(--mud-palette-text-primary);
    font-weight: 500;
}

.sm-crumbs__home {
    display: inline-flex;
    align-items: center;
    padding: 0 2px;
}

.sm-crumbs__home-icon.mud-icon-root {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

.sm-crumbs__sep.mud-icon-root {
    font-size: 14px;
    width: 14px;
    height: 14px;
    margin: 0 4px;
    flex-shrink: 0;
    color: var(--mud-palette-text-disabled);
}

@media (max-width: 600px) {
    .sm-crumbs a,
    .sm-crumbs__text,
    .sm-crumbs__current {
        max-width: 18ch;
    }
}

/* --- Data Agent knowledge dialog ------------------------------------------------------------- */

/*
    The dialog is a fixed frame: the title, the tab bar and the action bar hold still, and only the body of
    the active tab scrolls. Letting the whole dialog scroll is what used to carry the tabs off the top of
    the screen and leave an orphaned sentence behind them, and it made the dialog change height on every
    tab.
*/
.data-agent-dialog {
    display: flex;
    flex-direction: column;
    height: min(90vh, 60rem);
    max-height: 90vh;

    /* MudBlazor lets the dialog itself scroll; here the panels do, and nothing else. */
    overflow: hidden;
}

.data-agent-dialog .mud-dialog-title {
    flex: 0 0 auto;
    padding-bottom: 0.75rem;
}

.data-agent-dialog .mud-dialog-content {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 0 1.5rem;
    overflow: hidden;
}

.data-agent-dialog .mud-dialog-actions {
    flex: 0 0 auto;
    margin: 0;
    padding: 0.5rem 1.5rem;
    border-top: 1px solid var(--mud-palette-lines-default);
}

.data-agent-body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
}

.data-agent-centre {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 3rem 1rem;
}

/* --- header ---------------------------------------------------------------------------------- */

.data-agent-head {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
}

.data-agent-head__text {
    min-width: 0;
}

.data-agent-head__title {
    line-height: 1.2;
}

/* The state of the report in three chips, so it is read rather than deduced from a paragraph. */
.data-agent-head__state {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-wrap: wrap;
    margin-left: auto;
}

/* --- tabs ------------------------------------------------------------------------------------ */

.data-agent-notices {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding-top: 0.75rem;
}

.data-agent-tabs {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
}

.data-agent-tabs .mud-tabs-tabbar {
    flex: 0 0 auto;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

/* The one scrolling region of the dialog. */
.data-agent-tabs .mud-tabs-panels {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
}

.data-agent-panel {
    padding: 1.25rem 0.25rem 1.5rem;
}

/* A filter bar belongs to what is under it, so it stays put while that scrolls. */
.data-agent-toolbar {
    position: sticky;
    top: 0;
    z-index: 4;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
    padding: 0.6rem 0;
    background-color: var(--mud-palette-surface);
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.data-agent-toolbar__filter {
    flex: 1 1 14rem;
    max-width: 24rem;
    margin-left: auto;
}

.data-agent-toolbar__user {
    max-width: 16rem;
    min-width: 11rem;
}

.data-agent-toolbar__end {
    display: flex;
    align-items: center;
    margin-left: auto;
}

/* --- the numbers that describe a model ------------------------------------------------------- */

.data-agent-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr));
    gap: 0.5rem;
    margin-bottom: 1.25rem;
}

.data-agent-stat {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    column-gap: 0.55rem;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
}

.data-agent-stat__icon {
    grid-row: 1 / span 2;
    color: var(--mud-palette-text-secondary);
}

.data-agent-stat__value {
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
}

.data-agent-stat__label {
    font-size: 0.7rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

/* --- cards and columns ----------------------------------------------------------------------- */

.data-agent-card {
    padding: 1rem 1.1rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
}

.data-agent-card--flat {
    margin-bottom: 1.25rem;
    background-color: var(--mud-palette-background-gray);
}

.data-agent-card__head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.data-agent-cols {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

.data-agent-cols--even {
    grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
}

@media (max-width: 1100px) {
    .data-agent-cols {
        grid-template-columns: minmax(0, 1fr);
    }
}

.data-agent-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.5rem;
}

.data-agent-link__select {
    flex: 1 1 20rem;
    min-width: 14rem;
    max-width: 32rem;
}

.data-agent-switch {
    margin-top: 0.75rem;
}

.data-agent-answering {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.4rem;
    margin-top: 1.25rem;
}

.data-agent-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 3rem 1rem;
}

.mud-icon-root.data-agent-empty__icon {
    font-size: 3.5rem;
}

.data-agent-empty__text {
    max-width: 34rem;
}

/* --- load history ---------------------------------------------------------------------------- */

.data-agent-history {
    margin: 0;
    padding: 0;
    list-style: none;
}

.data-agent-history__item {
    display: flex;
    gap: 0.5rem;
    padding: 0.45rem 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.data-agent-history__item:last-child {
    border-bottom: 0;
}

.data-agent-history__body {
    min-width: 0;
}

.data-agent-history__name {
    font-size: 0.82rem;
    overflow-wrap: anywhere;
}

.data-agent-history__meta {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-history__error {
    font-size: 0.72rem;
    color: var(--mud-palette-error);
}

/* --- readiness ------------------------------------------------------------------------------- */

.data-agent-coverage {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: -0.5rem 0 0.75rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/*
    Five stacked alerts used to push the model itself off the screen. The findings are summed up in one
    line and only unfold when there is something to act on.
*/
.data-agent-findings {
    margin-bottom: 0.75rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    overflow: hidden;
}

.data-agent-findings--error {
    border-color: var(--mud-palette-error);
}

.data-agent-findings--warning {
    border-color: var(--mud-palette-warning);
}

.data-agent-findings__head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 0;
    background: transparent;
    font: inherit;
    font-size: 0.82rem;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.data-agent-findings__head:hover {
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-findings__title {
    flex: 1 1 auto;
    font-weight: 600;
}

.data-agent-findings--error .data-agent-findings__head {
    color: var(--mud-palette-error);
}

.data-agent-findings--warning .data-agent-findings__head {
    color: var(--mud-palette-warning);
}

.data-agent-findings__list {
    margin: 0;
    padding: 0 0.75rem 0.35rem;
    list-style: none;
}

.data-agent-finding {
    display: flex;
    gap: 0.55rem;
    padding: 0.45rem 0;
    border-top: 1px solid var(--mud-palette-lines-default);
}

.data-agent-finding--error .mud-icon-root {
    color: var(--mud-palette-error);
}

.data-agent-finding--warning .mud-icon-root {
    color: var(--mud-palette-warning);
}

.data-agent-finding--info .mud-icon-root {
    color: var(--mud-palette-info);
}

.data-agent-finding__title {
    font-size: 0.82rem;
    font-weight: 600;
}

.data-agent-finding__text {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/* --- rows, tags and entries ------------------------------------------------------------------ */

.data-agent-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.data-agent-row--line {
    padding: 0.3rem 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.data-agent-row--head {
    margin-bottom: 0.6rem;
}

.data-agent-row--head .data-agent-segments {
    margin-left: auto;
}

.data-agent-row__name {
    overflow: hidden;
    font-size: 0.88rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.data-agent-row__name--mono {
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.8rem;
}

.data-agent-row__meta {
    margin-left: auto;
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

.data-agent-tag {
    display: inline-flex;
    align-items: center;
    padding: 0.05rem 0.45rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 999px;
    font-size: 0.68rem;
    line-height: 1.55;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

.data-agent-tag--info {
    border-color: var(--mud-palette-info);
    color: var(--mud-palette-info);
}

.data-agent-tag--success {
    border-color: var(--mud-palette-success);
    color: var(--mud-palette-success);
}

.data-agent-tag--warning {
    border-color: var(--mud-palette-warning);
    color: var(--mud-palette-warning);
}

.data-agent-tag--primary {
    border-color: var(--mud-palette-primary);
    color: var(--mud-palette-primary);
}

.data-agent-subhead {
    margin-bottom: 0.35rem;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.data-agent-subhead__note {
    margin-bottom: 0.5rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-entry {
    padding: 0.3rem 0;
}

.data-agent-entry__note {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-entry__note--indent {
    padding-left: 1.75rem;
}

/* DAX and M expressions: readable, never widening the dialog. */
.data-agent-code {
    margin: 0.25rem 0 0.5rem 0;
    padding: 0.5rem 0.75rem;
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
    color: var(--mud-palette-text-primary);
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.78rem;
    line-height: 1.35;
    max-height: 14rem;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
}

/* --- import ---------------------------------------------------------------------------------- */

.data-agent-upload,
.data-agent-upload label {
    display: block;
    width: 100%;
}

.data-agent-drop {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 2.5rem 1rem;
    border: 1px dashed var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
    text-align: center;
    cursor: pointer;
    transition: border-color 120ms ease, background-color 120ms ease;
}

.data-agent-drop:hover {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.mud-icon-root.data-agent-drop__icon {
    font-size: 2.75rem;
}

.data-agent-progress {
    margin-top: 1rem;
}

/* --- prompts --------------------------------------------------------------------------------- */

.data-agent-prompts {
    display: grid;
    grid-template-columns: minmax(14rem, 20rem) minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

@media (max-width: 1100px) {
    .data-agent-prompts {
        grid-template-columns: minmax(0, 1fr);
    }
}

.data-agent-prompt-list {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.data-agent-prompt-item {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    width: 100%;
    padding: 0.5rem 0.65rem;
    border: 1px solid transparent;
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
    font: inherit;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.data-agent-prompt-item:hover {
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-prompt-item--on {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-prompt-item__head {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.data-agent-prompt-item__head .data-agent-tag {
    margin-left: auto;
}

.data-agent-prompt-item__name {
    font-size: 0.85rem;
    font-weight: 600;
}

.data-agent-prompt-item__text {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

/* A prompt is read and edited as a whole, so it gets a monospaced, roomy editor. */
.data-agent-prompt .mud-input-slot {
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.82rem;
    line-height: 1.4;
}

/* --- picked models --------------------------------------------------------------------------- */

/* The model in effect, under the stage it belongs to on the stage list. */
.data-agent-prompt-item__foot {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.15rem;
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-prompt-item__foot .mud-icon-root {
    font-size: 0.95rem;
}

.data-agent-prompt-item__foot .data-agent-tag {
    margin-left: auto;
}

.data-agent-model-name {
    overflow: hidden;
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.data-agent-models {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

/* One card per model: what it is called, what it costs, and what the price list says it is for. */
.data-agent-model {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-surface);
    font: inherit;
    color: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color 120ms ease, background-color 120ms ease;
}

.data-agent-model:hover:not(:disabled) {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-model:disabled {
    opacity: 0.6;
    cursor: default;
}

.data-agent-model--on {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-model__head {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.data-agent-model__head .data-agent-tag {
    margin-left: auto;
}

.data-agent-model__name {
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.85rem;
    font-weight: 600;
}

.data-agent-model__price {
    padding-left: 1.65rem;
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-model__text {
    padding-left: 1.65rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/* --- segmented control ----------------------------------------------------------------------- */

.data-agent-segments {
    display: inline-flex;
    overflow: hidden;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 999px;
    background-color: var(--mud-palette-surface);
}

.data-agent-segment {
    padding: 0.3rem 0.85rem;
    border: 0;
    background: transparent;
    font: inherit;
    font-size: 0.78rem;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    cursor: pointer;
}

.data-agent-segment + .data-agent-segment {
    border-left: 1px solid var(--mud-palette-lines-default);
}

.data-agent-segment:hover:not(:disabled) {
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-segment:disabled {
    opacity: 0.5;
    cursor: default;
}

.data-agent-segment--on,
.data-agent-segment--on:hover:not(:disabled) {
    background-color: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
}

/* --- usage ----------------------------------------------------------------------------------- */

.data-agent-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.data-agent-kpi {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background-color: var(--mud-palette-background-gray);
}

.data-agent-kpi__label {
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.data-agent-kpi__value {
    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
}

.data-agent-kpi__note {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-tablewrap {
    margin: 0.25rem 0 1.5rem;
    overflow-x: auto;
}

.data-agent-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

.data-agent-table th {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    font-weight: 600;
    text-align: left;
    white-space: nowrap;
    color: var(--mud-palette-text-secondary);
}

.data-agent-table td {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    vertical-align: middle;
}

.data-agent-table tbody tr:hover {
    background-color: var(--mud-palette-action-default-hover);
}

.data-agent-table .num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.data-agent-table .nowrap {
    white-space: nowrap;
}

.data-agent-table__question {
    min-width: 16rem;
}

/* The opening row of a dialog. It carries the totals of the whole dialog, so it reads as a heading. */
.data-agent-row--chat > td {
    font-weight: 600;
}

.data-agent-chat__head {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

/* The questions inside an opened dialog, set back from the row that opens it. */
.data-agent-row--turn > td {
    background-color: var(--mud-palette-background-grey);
}

.data-agent-table__turn {
    padding-left: 2rem;
}

/* The person whose questions the report is currently filtered to. */
.data-agent-row--selected {
    background-color: var(--mud-palette-action-default-hover);
    box-shadow: inset 3px 0 0 var(--mud-palette-primary);
}

/* --- action bar ------------------------------------------------------------------------------ */

.data-agent-foot {
    display: flex;
    align-items: center;
    gap: 1rem;
    width: 100%;
}

.data-agent-foot__hint {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-height: 1.5rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.data-agent-foot__actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}


/* ------------------------------------------------------------------ Data Agent: live run status */

/*
    What the assistant is doing right now, in place of the rotating sentence that used to stand here and
    said nothing. The actor is the loud part: knowing that the DAX developer is on its second attempt is
    what makes a slow answer legible instead of merely slow.
*/
.dac__status {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem;
}

.dac__status-actor {
    font-weight: 600;
    color: var(--mud-palette-primary);
}

.dac__status-detail {
    color: var(--mud-palette-text-secondary);
}

.dac__status-attempt {
    padding: 0.05rem 0.4rem;
    border-radius: 999px;
    background-color: var(--mud-palette-warning-lighten);
    color: var(--mud-palette-warning-darken);
    font-size: 0.7rem;
}

.dac__status-bar {
    height: 2px;
    margin-top: 0.5rem;
    border-radius: 999px;
    background-color: var(--mud-palette-lines-default);
    overflow: hidden;
}

.dac__status-bar-fill {
    height: 100%;
    background-color: var(--mud-palette-primary);
    transition: width 240ms ease;
}

/* ------------------------------------------------------------------ Data Agent: conversation history */

.dac__history {
    border-bottom: 1px solid var(--mud-palette-lines-default);
    background-color: var(--mud-palette-background-gray);
    max-height: 45%;
    display: flex;
    flex-direction: column;
}

.dac__history-head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    font-size: 0.8rem;
    font-weight: 600;
}

.dac__history-empty {
    padding: 1rem 0.75rem;
    color: var(--mud-palette-text-secondary);
    font-size: 0.8rem;
}

.dac__history-list {
    overflow-y: auto;

    /* A box cannot scroll on one axis and overflow visibly on the other: asking for overflow-y alone
       makes the browser scroll this list sideways too, and one long title then drags every row out of
       view. The titles ellipsize, so there is nothing to reach by scrolling. */
    overflow-x: hidden;
}

.dac__history-item {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0 0.5rem 0 0;
    border-top: 1px solid var(--mud-palette-lines-default);

    /* Without this the row refuses to shrink below the width of its title and pushes the buttons out. */
    min-width: 0;
}

.dac__history-item:hover {
    background-color: var(--mud-palette-action-default-hover);
}

.dac__history-item--current {
    box-shadow: inset 3px 0 0 var(--mud-palette-primary);
}

.dac__history-open {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    padding: 0.5rem 0.75rem;
    border: 0;
    background: transparent;
    text-align: left;
    cursor: pointer;
    color: inherit;
    font: inherit;
    min-width: 0;
}

.dac__history-open:disabled {
    cursor: default;
    opacity: 0.6;
}

.dac__history-title {
    font-size: 0.85rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dac__history-meta {
    font-size: 0.7rem;
    color: var(--mud-palette-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dac__history-rename {
    flex: 1 1 auto;
    margin: 0.25rem 0 0.25rem 0.5rem;
}
