/* ============================================================================
   Klar editing blocks (frontendlib/Components/Klar/Editing, README.md there):
   identity header, attention strip, tabs, banners, editor layout, save bar,
   review dialog, guided flow, matrix.

   Linked right after assetmanager.frontend.styles.css in both host pages.
   Colour comes only from --mud-palette-* and --klar-* tokens, so every theme
   (Klar, Nucera, Purple, Default, Yeti) and dark mode work without changes.
   ========================================================================= */


/* == shared helpers ======================================================= */

/* the header's secondary buttons: inline from 600 px, in ⋯ below */
@media (max-width: 599.98px) {
    .klar-wide-only {
        display: none !important;
    }
}

@media (min-width: 600px) {
    .klar-narrow-only {
        display: none !important;
    }
}

/* entries under the red "Danger zone" header of any menu turn red */
.klar-menu-header-danger ~ .mud-menu-item,
.klar-menu-header-danger ~ .mud-menu-item .mud-icon-root {
    color: color-mix(in srgb, var(--mud-palette-error) 85%, var(--mud-palette-text-primary));
}


/* == identity header (KlarIdentityHeader) ================================= */

.klar-identity-titlerow {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .25rem .5rem;
    min-width: 0;
}

.klar-identity-titlerow .klar-identity-title {
    min-width: 0;
}

.klar-identity-sub {
    font-size: .875rem;
    color: var(--mud-palette-text-secondary);
    overflow-wrap: anywhere;
}

.klar-identity-state {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .375rem .625rem;
    font-size: .8125rem;
}

.klar-identity-since {
    color: var(--mud-palette-text-secondary);
    font-variant-numeric: tabular-nums;
}

.klar-identity-where {
    font-size: .8125rem;
    overflow-wrap: anywhere;
}

.klar-identity-last {
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
    font-variant-numeric: tabular-nums;
    overflow-wrap: anywhere;
}

.klar-identity-label {
    color: var(--mud-palette-text-secondary);
}

.klar-identity-last .klar-identity-label {
    font-weight: 600;
}

/* initials of a person instead of a type icon */
.klar-typebox.klar-avatar {
    border-radius: 50%;
    font-family: var(--klar-font-display);
    font-size: 1.0625rem;
    font-weight: 650;
    letter-spacing: .02em;
}

/* narrow: a smaller icon keeps the name beside it; the actions wrap under the
   text and keep the primary first */
@media (max-width: 599.98px) {
    .klar-identity-main > .klar-typebox {
        width: 2.25rem;
        height: 2.25rem;
    }

    .klar-identity-main > .klar-identity-text {
        flex-basis: 12rem;
    }

    .klar-identity-actions {
        flex: 1 1 100%;
    }
}


/* == attention strip (KlarAttentionStrip) ================================= */

.klar-attention {
    --klar-tone: var(--klar-tone-warning);
    margin-top: .75rem;
    padding: .5rem .875rem .625rem;
    border: 1px solid color-mix(in srgb, var(--klar-tone) 55%, var(--klar-hairline));
    border-radius: var(--klar-radius-card);
    background-color: color-mix(in srgb, var(--klar-tone) 9%, var(--mud-palette-surface));
}

.klar-attention-error {
    --klar-tone: var(--klar-tone-error);
}

.klar-attention-h {
    display: flex;
    align-items: center;
    gap: .5rem;
    min-height: 2rem;
}

.klar-attention-icon.mud-icon-root {
    color: color-mix(in srgb, var(--klar-tone) 80%, var(--mud-palette-text-primary));
}

.klar-attention-title {
    margin: 0;
    font-family: var(--klar-font-display);
    font-size: .9375rem;
    font-weight: 650;
}

.klar-attention-rows {
    margin: 0;
    padding: 0;
    list-style: none;
}

.klar-attention-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .375rem .75rem;
    min-height: 2.75rem;
    padding: .25rem 0;
    border-top: 1px solid color-mix(in srgb, var(--klar-tone) 22%, transparent);
    font-size: .8125rem;
}

.klar-attention-row-icon.mud-icon-root {
    color: var(--mud-palette-text-secondary);
}

.klar-attention-text {
    flex: 1 1 16rem;
    min-width: 0;
    overflow-wrap: anywhere;
}

.klar-attention-row .klar-attention-action {
    flex: none;
    background-color: var(--mud-palette-surface);
}

.klar-attention-more {
    padding-top: .375rem;
    font-size: .8125rem;
    color: var(--mud-palette-text-secondary);
}


/* == tabs with counts (KlarTabs) ========================================== */

.klar-tabs-block {
    margin-top: .875rem;
}

.klar-tablist-row {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: .5rem;
    border-bottom: 1px solid var(--klar-hairline);
}

.klar-tablist {
    display: flex;
    gap: .125rem;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
}

.klar-tab {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    min-height: 2.75rem;
    padding: 0 .875rem;
    border-bottom: 2px solid transparent;
    border-radius: 6px 6px 0 0;
    color: var(--mud-palette-text-secondary);
    font-size: .875rem;
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
    transition: color var(--klar-micro) ease, background-color var(--klar-micro) ease;
}

.klar-tab:hover {
    color: var(--mud-palette-text-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.klar-tab:focus-visible {
    outline: 2px solid var(--klar-accent);
    outline-offset: -2px;
}

.klar-tab-active {
    color: var(--mud-palette-text-primary);
    font-weight: 650;
    border-bottom-color: var(--klar-primary-ink);
}

.klar-tab-active .klar-count {
    background-color: color-mix(in srgb, var(--mud-palette-primary) 14%, var(--mud-palette-surface));
    color: var(--klar-primary-ink);
}

.klar-tabs-block .klar-tabs-tools {
    margin-inline-start: auto;
    padding: .25rem 0;
}

.klar-tabpanel {
    padding-top: .875rem;
}


/* == banners (KlarBanner, KlarConcurrencyBanner) ========================== */

.klar-banner {
    --klar-tone: var(--klar-tone-muted);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem .75rem;
    margin-top: .75rem;
    padding: .625rem .875rem;
    border: 1px solid color-mix(in srgb, var(--klar-tone) 45%, var(--klar-hairline));
    border-radius: var(--klar-radius-card);
    background-color: color-mix(in srgb, var(--klar-tone) 9%, var(--mud-palette-surface));
    color: var(--mud-palette-text-primary);
    font-size: .8125rem;
}

.klar-banner-muted { --klar-tone: var(--mud-palette-text-secondary); }
.klar-banner-neutral { --klar-tone: var(--klar-tone-neutral); }
.klar-banner-primary { --klar-tone: var(--klar-tone-primary); }
.klar-banner-success { --klar-tone: var(--klar-tone-success); }
.klar-banner-warning { --klar-tone: var(--klar-tone-warning); }
.klar-banner-error { --klar-tone: var(--klar-tone-error); }

.klar-banner-icon.mud-icon-root {
    flex: none;
    color: color-mix(in srgb, var(--klar-tone) 80%, var(--mud-palette-text-primary));
}

.klar-banner-text {
    flex: 1 1 18rem;
    min-width: 0;
    overflow-wrap: anywhere;
}

.klar-banner-note {
    margin-top: .125rem;
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
}

.klar-banner-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-inline-start: auto;
}

.klar-banner-actions .mud-button-outlined {
    background-color: var(--mud-palette-surface);
}


/* == editor layout (KlarEditorLayout) ===================================== */

.klar-editor-banners {
    display: flex;
    flex-direction: column;
}

.klar-editor-cols {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: .875rem;
    align-items: start;
    margin-top: .875rem;
}

.klar-editor-col-main,
.klar-editor-col-side {
    display: flex;
    flex-direction: column;
    gap: .875rem;
    min-width: 0;
}

/* the right column from 1280 px; below it follows the main column */
@media (min-width: 1280px) {
    .klar-editor-cols {
        grid-template-columns: minmax(0, 1fr) 19rem;
    }

    .klar-editor-cols-single {
        grid-template-columns: minmax(0, 1fr);
    }

    .klar-editor-col-side {
        position: sticky;
        top: calc(var(--mud-appbar-height) + 1rem);
    }
}

.klar-used-by-list,
.klar-used-by-details {
    margin: 0;
    padding: 0;
    list-style: none;
}

.klar-used-by-list > li + li {
    margin-top: .5rem;
}

.klar-used-by-line {
    display: flex;
    align-items: center;
    gap: .5rem;
    min-height: 1.75rem;
    font-size: .8125rem;
}

.klar-used-by-line .klar-used-by-link,
.klar-used-by-text {
    font-weight: 600;
}

.klar-used-by-list .klar-muted .klar-used-by-text {
    font-weight: 400;
}

.klar-used-by-details {
    padding-inline-start: 1.75rem;
    font-size: .75rem;
}

.klar-used-by-details li {
    padding: .125rem 0;
    overflow-wrap: anywhere;
}

.klar-recent-history .klar-tl {
    margin-bottom: .25rem;
}

.klar-recent-all {
    font-size: .8125rem;
}


/* == save bar (KlarSaveBar) =================================================
   The bar itself (sticky, surface, hairline) is section 16 of the main file;
   these are the parts of the extended bar. */

.klar-savebar {
    flex-wrap: nowrap;
    align-items: center;
}

.klar-savebar-icon.mud-icon-root {
    flex: none;
    color: var(--mud-palette-text-secondary);
}

.klar-savebar-body {
    display: flex;
    flex-direction: column;
    gap: .125rem;
    flex: 1 1 auto;
    min-width: 0;
}

.klar-savebar-line {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    min-width: 0;
    font-size: .8125rem;
}

.klar-savebar-count {
    flex: none;
    font-weight: 650;
    color: var(--mud-palette-text-primary);
}

.klar-savebar-line .klar-savebar-summary {
    flex: 0 1 auto;
}

.klar-savebar-line .klar-savebar-summary::before {
    content: "· ";
}

.klar-savebar-toggle {
    flex: none;
    padding: 0 .25rem;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--klar-primary-ink);
    font: inherit;
    font-size: .8125rem;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.klar-savebar-toggle:focus-visible {
    outline: 2px solid var(--klar-accent);
    outline-offset: 2px;
}

.klar-savebar-impact {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .25rem;
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
}

.klar-savebar-impact-label {
    font-weight: 650;
}

.klar-savebar-impact-warn {
    color: color-mix(in srgb, var(--mud-palette-warning) 70%, var(--mud-palette-text-primary));
}

.klar-savebar-spinner.mud-progress-circular {
    width: 14px !important;
    height: 14px !important;
}

.klar-savebar-list {
    max-height: 9rem;
    margin: .25rem 0 0;
    padding-inline-start: 1.125rem;
    overflow-y: auto;
    font-size: .8125rem;
    color: var(--mud-palette-text-secondary);
}

.klar-savebar .klar-savebar-problems {
    flex: none;
}

.klar-savebar .mud-button-root {
    flex: none;
}

/* narrow: the text takes a row of its own, the buttons the next (the spacer
   wraps with them and keeps them at the end) */
@media (max-width: 719.98px) {
    .klar-savebar {
        flex-wrap: wrap;
    }

    .klar-savebar-body {
        flex-basis: calc(100% - 2.5rem);
    }
}


/* == review dialog (KlarReviewSaveDialog) ================================= */

.klar-review-h {
    margin: 1rem 0 .25rem;
    font-size: .875rem;
    font-weight: 650;
}

.klar-review-impact {
    margin: 0;
    padding-inline-start: 1.125rem;
    font-size: .8125rem;
}

.klar-review-impact li {
    padding: .125rem 0;
}

.klar-review-affects::marker {
    color: var(--mud-palette-warning);
}

.klar-review-unknown {
    margin: 0;
    font-size: .8125rem;
    color: var(--mud-palette-text-secondary);
}

.klar-review-comment {
    margin-top: 1rem;
}


/* == guided flow (KlarFlowLayout, KlarFlowResult) ========================= */

.klar-flow-head {
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: .5rem 1rem;
    margin: .125rem 0 .875rem;
}

.klar-flow-logo {
    flex: 0 0 auto;
}

.klar-flow-title {
    flex: 1 1 18rem;
    min-width: 0;
}

.klar-flow-sub {
    margin-top: .25rem;
    font-size: .8125rem;
    color: var(--mud-palette-text-secondary);
}

.klar-stepper {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    margin: 0 0 .875rem;
    padding: 0;
    list-style: none;
    font-size: .8125rem;
    counter-reset: none;
}

.klar-step {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    color: var(--mud-palette-text-secondary);
}

/* the line between steps */
.klar-step + .klar-step::before {
    content: "";
    width: 1.5rem;
    height: 1px;
    margin-inline-end: .25rem;
    background-color: var(--klar-hairline);
}

.klar-step-n {
    display: inline-grid;
    place-items: center;
    flex: none;
    width: 1.375rem;
    height: 1.375rem;
    border: 1px solid var(--klar-hairline);
    border-radius: 50%;
    background-color: var(--mud-palette-surface);
    font-size: .6875rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.klar-step-done {
    color: var(--mud-palette-text-primary);
}

.klar-step-done .klar-step-n {
    border-color: color-mix(in srgb, var(--mud-palette-success) 60%, transparent);
    background-color: color-mix(in srgb, var(--mud-palette-success) 12%, var(--mud-palette-surface));
    color: color-mix(in srgb, var(--mud-palette-success) 75%, var(--mud-palette-text-primary));
}

.klar-step-current {
    color: var(--mud-palette-text-primary);
    font-weight: 650;
}

.klar-step-current .klar-step-n {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
}

.klar-step-button {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    min-height: 2rem;
    padding: 0 .25rem;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: inherit;
    font: inherit;
    cursor: pointer;
}

.klar-step-button:hover > span:not(.klar-step-n) {
    text-decoration: underline;
}

.klar-step-button:focus-visible {
    outline: 2px solid var(--klar-accent);
    outline-offset: 2px;
}

.klar-flow-cols {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: .875rem;
    align-items: start;
}

@media (min-width: 1100px) {
    .klar-flow-cols {
        grid-template-columns: minmax(0, 1fr) 22rem;
    }

    .klar-flow-cols-single {
        grid-template-columns: minmax(0, 52rem);
    }

    .klar-flow-aside {
        position: sticky;
        top: calc(var(--mud-appbar-height) + 1rem);
    }
}

.klar-flow-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    margin: 0;
    background-color: var(--mud-palette-surface);
    border-radius: var(--klar-radius-card);
}

.klar-flow-question {
    padding: 1rem 1.125rem 0;
}

.klar-flow-question h2:focus {
    outline: none;
}

.klar-flow-help {
    margin-top: .25rem;
    font-size: .8125rem;
    color: var(--mud-palette-text-secondary);
}

.klar-flow-body {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1rem 1.125rem;
}

.klar-flow-foot {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    padding: .75rem 1.125rem;
    border-top: 1px solid var(--klar-hairline);
}

.klar-flow-hint {
    font-size: .8125rem;
    color: var(--mud-palette-text-secondary);
}

.klar-flow-aside {
    display: flex;
    flex-direction: column;
    gap: .875rem;
    min-width: 0;
}

.klar-flow-result-card {
    display: flex;
    flex-direction: column;
    gap: .75rem;
    max-width: 52rem;
    padding: 1rem 1.125rem;
    background-color: var(--mud-palette-surface);
    border-radius: var(--klar-radius-card);
}

.klar-flow-result-card .klar-banner {
    margin-top: 0;
}

.klar-flow-result-headline:focus {
    outline: none;
}

.klar-flow-result-body {
    font-size: .8125rem;
}

.klar-flow-result-actions,
.klar-flow-result-another {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
}

.klar-flow-result-another {
    padding-top: .75rem;
    border-top: 1px solid var(--klar-hairline);
}


/* == matrix (KlarMatrix) ================================================== */

.klar-matrix-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem .75rem;
    margin-bottom: .75rem;
}

.klar-matrix-search {
    flex: 0 1 18rem;
    min-width: 12rem;
}

.klar-matrix-search.mud-input-control,
.klar-matrix-search .mud-input-control,
.klar-matrix-compare .mud-input-control {
    margin: 0;
}

.klar-matrix-compare {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    font-size: .8125rem;
}

.klar-matrix-compare-select {
    width: 12.5rem;
}

.klar-matrix.mud-paper {
    overflow: hidden;
}

/* both headers stick inside this scroll container */
.klar-matrix-scroll {
    max-height: max(18rem, calc(100vh - var(--mud-appbar-height) - 15rem));
    overflow: auto;
    overscroll-behavior: contain;
}

.klar-matrix-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: .8125rem;
}

.klar-matrix-table th,
.klar-matrix-table td {
    border-bottom: 1px solid var(--klar-hairline);
}

.klar-matrix-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    padding: .5rem;
    background-color: var(--mud-palette-background-gray);
    color: var(--mud-palette-text-secondary);
    font-size: .75rem;
    font-weight: 650;
    text-align: center;
    vertical-align: bottom;
}

/* the second header row sits under the column group row */
.klar-matrix-table thead .klar-matrix-colgroups + tr th {
    top: 2rem;
}

.klar-matrix-colgroups th {
    height: 2rem;
    font-size: .6875rem !important;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.klar-matrix-table .klar-matrix-rowh {
    position: sticky;
    left: 0;
    z-index: 1;
    min-width: 14rem;
    max-width: 24rem;
    padding: .375rem .75rem;
    background-color: var(--mud-palette-surface);
    text-align: start;
    font-weight: 400;
    box-shadow: 1px 0 0 var(--klar-hairline), 6px 0 8px -8px rgba(0, 0, 0, .35);
}

.klar-matrix-table thead .klar-matrix-corner {
    left: 0;
    z-index: 3;
    text-align: start;
    background-color: var(--mud-palette-background-gray);
}

.klar-matrix-label {
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    overflow-wrap: anywhere;
}

.klar-matrix-desc {
    font-size: .71875rem;
    color: var(--mud-palette-text-secondary);
    overflow-wrap: anywhere;
}

.klar-matrix-colh {
    min-width: 5.5rem;
}

.klar-matrix-colh-text {
    display: block;
    color: var(--mud-palette-text-primary);
}

.klar-matrix-colh-detail {
    display: block;
    font-size: .6875rem;
    font-weight: 400;
}

/* many columns: rotated headers keep the columns narrow */
.klar-matrix-vertical .klar-matrix-colh {
    min-width: 2.25rem;
    height: 7.5rem;
    padding: .5rem 0;
}

.klar-matrix-vertical .klar-matrix-colh-text,
.klar-matrix-vertical .klar-matrix-colh-detail {
    display: inline-block;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    white-space: nowrap;
}

.klar-matrix-table .klar-matrix-sep {
    border-inline-start: 1px solid color-mix(in srgb, var(--mud-palette-text-secondary) 45%, var(--klar-hairline));
}

.klar-matrix-group th {
    position: sticky;
    left: 0;
    padding: .5rem .75rem;
    background-color: var(--mud-palette-background-gray);
    color: var(--mud-palette-text-secondary);
    font-size: .6875rem;
    font-weight: 700;
    letter-spacing: .05em;
    text-align: start;
    text-transform: uppercase;
}

.klar-matrix-group .klar-count {
    margin-inline-start: .375rem;
    letter-spacing: 0;
    text-transform: none;
}

.klar-matrix-cell {
    padding: 0;
    text-align: center;
    vertical-align: middle;
    background-color: var(--mud-palette-surface);
}

.klar-matrix-table tbody tr:hover > .klar-matrix-cell,
.klar-matrix-table tbody tr:hover > .klar-matrix-rowh {
    background-color: color-mix(in srgb, var(--mud-palette-table-hover) 100%, var(--mud-palette-surface));
}

.klar-matrix-value {
    display: grid;
    place-items: center;
    min-width: 2.25rem;
    min-height: 2.75rem;
    border-radius: 6px;
}

.klar-matrix-interactive {
    cursor: pointer;
}

.klar-matrix-interactive:focus-visible,
.klar-matrix-interactive:focus {
    outline: 2px solid var(--klar-accent);
    outline-offset: -3px;
}

/* the compared columns (AD-6) */
.klar-matrix-table thead th.klar-matrix-compared {
    background-color: color-mix(in srgb, var(--mud-palette-primary) 14%, var(--mud-palette-background-gray));
    color: var(--klar-primary-ink);
}

.klar-matrix-table .klar-matrix-cell.klar-matrix-compared {
    background-color: color-mix(in srgb, var(--mud-palette-primary) 5%, var(--mud-palette-surface));
}

/* a changed cell until it is saved (the save bar lists it) */
.klar-matrix-table .klar-matrix-cell.klar-matrix-changed,
.klar-matrix-table tbody tr:hover > .klar-matrix-cell.klar-matrix-changed {
    background-color: color-mix(in srgb, var(--mud-palette-warning) 16%, var(--mud-palette-surface));
    box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--mud-palette-warning) 60%, transparent);
}

/* checkbox cells */
.klar-matrix-check {
    display: inline-grid;
    place-items: center;
    width: 1.125rem;
    height: 1.125rem;
    border: 2px solid var(--mud-palette-text-secondary);
    border-radius: 4px;
    background-color: var(--mud-palette-surface);
}

.klar-matrix-check-on {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-primary);
}

.klar-matrix-check-on::after {
    content: "";
    width: .3125rem;
    height: .5625rem;
    margin-top: -.125rem;
    border: solid var(--mud-palette-primary-text);
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

/* level marks (DE-5): a symbol on a small badge, the tone as its colour */
.klar-matrix-mark {
    --klar-tone: var(--klar-tone-neutral);
    display: inline-grid;
    place-items: center;
    flex: none;
    min-width: 1.375rem;
    height: 1.375rem;
    padding: 0 .25rem;
    border-radius: 6px;
    color: color-mix(in srgb, var(--klar-tone) 80%, var(--mud-palette-text-primary));
    font-size: .8125rem;
    font-weight: 700;
    line-height: 1;
}

.klar-matrix-mark-primary { --klar-tone: var(--klar-tone-primary); }
.klar-matrix-mark-success { --klar-tone: var(--klar-tone-success); }
.klar-matrix-mark-warning { --klar-tone: var(--klar-tone-warning); }
.klar-matrix-mark-error { --klar-tone: var(--klar-tone-error); }
.klar-matrix-mark-muted { --klar-tone: var(--klar-tone-muted); }

.klar-matrix-mark-filled {
    background-color: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    font-size: .6875rem;
}

.klar-matrix-mark-filled.klar-matrix-mark-error {
    background-color: var(--mud-palette-error);
    color: var(--mud-palette-error-text);
}

.klar-matrix-foot {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem 1rem;
    padding: .5rem .75rem;
    border-top: 1px solid var(--klar-hairline);
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
}

.klar-matrix-legend {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .875rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.klar-matrix-legend li {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
}

/* the value menu of a cell */
.klar-matrix-menu-popover.mud-popover {
    min-width: 13rem;
    padding: .25rem 0;
}

.klar-matrix-menu {
    display: flex;
    flex-direction: column;
}

.klar-matrix-option {
    display: flex;
    align-items: center;
    gap: .625rem;
    min-height: 2.5rem;
    padding: 0 .875rem;
    border: 0;
    background: transparent;
    color: var(--mud-palette-text-primary);
    font: inherit;
    font-size: .875rem;
    text-align: start;
    cursor: pointer;
}

.klar-matrix-option:hover,
.klar-matrix-option:focus {
    background-color: var(--mud-palette-action-default-hover);
    outline: none;
}

.klar-matrix-option:focus-visible {
    box-shadow: inset 2px 0 0 var(--klar-accent);
}

.klar-matrix-option-label {
    flex: 1 1 auto;
}

.klar-matrix-kbd {
    padding: 0 .3125rem;
    border: 1px solid var(--klar-hairline);
    border-radius: 4px;
    color: var(--mud-palette-text-secondary);
    font-family: var(--klar-font-mono);
    font-size: .6875rem;
}

/* catches the click outside the open value menu (below the popover layer) */
.klar-matrix-backdrop {
    position: fixed;
    inset: 0;
    z-index: calc(var(--mud-zindex-popover, 1200) - 1);
}

@media (prefers-reduced-motion: reduce) {
    .klar-tab {
        transition: none;
    }
}


/* == demo page /dev/klar/editing (Development only) ======================== */

.klar-demo-intro {
    margin-bottom: .25rem;
}

.klar-demo-name {
    font-family: var(--klar-font-display);
    font-size: 1.25rem;
    font-weight: 650;
}

.klar-demo-sections > .klar-tablist-row {
    margin-bottom: .25rem;
}

.klar-demo-section {
    display: flex;
    flex-direction: column;
}

.klar-demo-switches {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .25rem 1rem;
    margin-bottom: .75rem;
    padding: .25rem .75rem;
    border: 1px dashed var(--klar-hairline);
    border-radius: var(--klar-radius-card);
}

.klar-demo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
    gap: .875rem;
    margin-top: .875rem;
    align-items: start;
}

.klar-demo-note {
    margin-top: .5rem;
    font-size: .8125rem;
}

.klar-demo-caption {
    margin-bottom: .875rem;
    font-size: .8125rem;
}

.klar-demo-h1 {
    margin-bottom: .75rem;
}

.klar-demo-radios {
    display: flex;
    flex-direction: column;
    gap: .25rem;
}
