html, body {
    min-height: 100%;
    margin: 0;
    font-family: "Segoe UI", "Trebuchet MS", system-ui, sans-serif;
    background: var(--cm-page-background);
    color: var(--cm-text-primary);
}

a {
    color: inherit;
}

:root {
    /* Palette tokens: change these to retheme the application. */
    --cm-palette-navy-950: #0b1220;
    --cm-palette-navy-900: #0f172a;
    --cm-palette-navy-800: #172033;
    --cm-palette-ink-700: #243029;
    --cm-palette-ink-500: #68736c;
    --cm-palette-sand-100: #f5f1e8;
    --cm-palette-sand-50: #fbfaf6;
    --cm-palette-white: #ffffff;
    --cm-palette-blue-600: #0d6efd;
    --cm-palette-blue-700: #0a58ca;
    --cm-palette-blue-100: #e7f1ff;
    --cm-palette-amber-700: #946215;
    --cm-palette-amber-100: #faefd9;
    --cm-palette-green-700: #315f48;
    --cm-palette-green-100: #e8f0eb;
    --cm-palette-red-700: #9f3733;
    --cm-palette-red-100: #f9e7e5;
    --cm-palette-border: #c9cbc0;
    --cm-palette-border-soft: #ecece7;

    /* Semantic role tokens: components should depend on these, not palettes. */
    --cm-page-background: var(--cm-palette-sand-100);
    --cm-surface: var(--cm-palette-white);
    --cm-surface-soft: var(--cm-palette-sand-50);
    --cm-context-surface: var(--cm-palette-sand-100);
    --cm-table-line: var(--cm-palette-border-soft);
    --cm-table-header-bg: #fdfdfb;
    --cm-table-hover-bg: #fcfcf8;
    --cm-text-primary: var(--cm-palette-navy-800);
    --cm-text-strong: var(--cm-palette-ink-700);
    --cm-text-muted: var(--cm-palette-ink-500);
    --cm-border: var(--cm-palette-border);
    --cm-primary: var(--cm-palette-blue-600);
    --cm-primary-hover: var(--cm-palette-blue-700);
    --cm-primary-soft: var(--cm-palette-blue-100);
    --cm-focus-color: var(--cm-primary);
    --cm-selection-color: var(--cm-primary-soft);
    --cm-success: var(--cm-palette-green-700);
    --cm-success-soft: var(--cm-palette-green-100);
    --cm-warning: var(--cm-palette-amber-700);
    --cm-warning-soft: var(--cm-palette-amber-100);
    --cm-danger: var(--cm-palette-red-700);
    --cm-danger-soft: var(--cm-palette-red-100);
    --cm-brand-amber: #f59e0b;
    --cm-brand-amber-deep: #a16207;
    --cm-shell-deep: var(--cm-palette-navy-950);
    --cm-shell-mid: var(--cm-palette-navy-900);
    --cm-shell-border: rgba(255, 255, 255, .06);
    --cm-on-brand: var(--cm-palette-white);
    --cm-nav-section-text: rgba(249, 250, 251, .76);
    --cm-nav-link-text: rgba(248, 250, 252, .92);
    --cm-nav-icon-text: rgba(226, 232, 240, .72);
    --cm-nav-hover-surface: rgba(255, 255, 255, .06);
    --cm-nav-focus-surface: rgba(255, 255, 255, .08);
    --cm-nav-active-surface: rgba(245, 158, 11, .22);
    --cm-nav-active-focus-surface: rgba(245, 158, 11, .28);
    --cm-nav-active-border: rgba(245, 158, 11, .25);
    --cm-nav-active-text: var(--cm-palette-white);
    --cm-nav-accent: rgba(251, 191, 36, .96);
    --cm-nav-focus: rgba(251, 191, 36, .95);
    --cm-nav-focus-shadow: rgba(17, 24, 39, .35);

    /* Keep Bootstrap controls aligned while the component migration continues. */
    --bs-primary: var(--cm-primary);
    --bs-primary-rgb: 13, 110, 253;
    --bs-link-color: var(--cm-primary);
    --bs-link-hover-color: var(--cm-primary-hover);
    --bs-body-bg: var(--cm-page-background);
    --bs-body-color: var(--cm-text-primary);
    --bs-border-color: var(--cm-border);

    /* Shared motion and density primitives. */
    --cm-motion-duration-fast: 120ms;
    --cm-motion-duration-standard: 160ms;
    --cm-motion-duration-slow: 180ms;
    --cm-motion-duration-loop: 1.5s;
    --cm-motion-ease-standard: cubic-bezier(.2, .65, .3, 1);
    --cm-control-height: 2.5rem;
    --cm-density-card-padding: var(--cm-space-6);
    --cm-density-table-cell-y: .65rem;
    --cm-density-table-cell-x: .75rem;
    --cm-density-form-gap: var(--cm-space-4);

    --cm-ink: var(--cm-text-strong);
    --cm-muted: var(--cm-text-muted);
    --cm-page-width: 88rem;
    --cm-page-width-narrow: 58rem;
    --cm-page-width-workspace: 104rem;
    --cm-radius-card: .9rem;
    --cm-radius-control: .55rem;
    --cm-shadow-subtle: 0 .4rem 1.1rem rgba(35, 48, 40, .045);
    --cm-shadow-elevated: 0 .6rem 1.5rem rgba(35, 48, 40, .06);
    --cm-focus-ring: 0 0 0 3px color-mix(in srgb, var(--cm-focus-color) 35%, transparent);
    --cm-space-1: .25rem;
    --cm-space-2: .5rem;
    --cm-space-3: .75rem;
    --cm-space-4: 1rem;
    --cm-space-6: 1.5rem;
    --cm-space-8: 2rem;
}

:root[data-density="compact"] {
    --cm-control-height: 2.25rem;
    --cm-density-card-padding: var(--cm-space-4);
    --cm-density-table-cell-y: .45rem;
    --cm-density-table-cell-x: .6rem;
    --cm-density-form-gap: var(--cm-space-3);
    --cm-space-3: .625rem;
    --cm-space-4: .75rem;
    --cm-space-6: 1.25rem;
}

/* Standard form controls are opaque surfaces over the application canvas. */
.form-control,
.form-select,
.form-control:focus,
.form-select:focus {
    background-color: var(--cm-surface);
}

html {
    scroll-behavior: smooth;
}

::selection {
    color: var(--cm-text-primary);
    background: var(--cm-selection-color);
}

.cm-page {
    /* The page is the application canvas; child surfaces establish work areas. */
    width: min(100%, var(--cm-page-width));
    margin-inline: auto;
    min-width: 0;
}
.cm-page--narrow { max-width: var(--cm-page-width-narrow); }
.cm-page--workspace { width: min(100%, var(--cm-page-width-workspace)); }
.cm-content-card,
.cm-table-shell {
    /* These are the two principal contained surfaces. Keep the canvas neutral. */
    min-width: 0;
    border: 1px solid var(--cm-border);
    border-radius: var(--cm-radius-card);
    background: var(--cm-surface);
    box-shadow: var(--cm-shadow-subtle);
}
.cm-content-card { padding: var(--cm-density-card-padding); }

/* Read-only key/value summaries (posted document headers, etc). Pair with a page-specific
   grid class that sets column count -- this only carries the dt/dd typography so every
   read-only summary in the app renders label/value pairs a screen reader can associate. */
.cm-metadata-grid { margin: 0; }
.cm-metadata-grid > div { display: flex; flex-direction: column; gap: .15rem; }
.cm-metadata-grid dt { font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--cm-muted); }
.cm-metadata-grid dd { margin: 0; }
/* A number of legacy pages still use Bootstrap's card-body inside the semantic
   surface. The surface owns its padding so those pages do not become
   card-on-card layouts as they migrate. */
.cm-content-card > .card-body { padding: 0; }
.cm-eyebrow { color: var(--cm-muted); font-size: .7rem; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; }

.cm-button-primary,
.cm-button-secondary,
.cm-button-tertiary,
.cm-button-danger,
.cm-row-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--cm-space-2);
    min-height: var(--cm-control-height);
    padding: .45rem .75rem;
    border: 1px solid transparent;
    border-radius: var(--cm-radius-control);
    font: inherit;
    font-size: .9rem;
    font-weight: 700;
    text-decoration: none;
}
.cm-button-primary { color: #fff; background: var(--cm-primary); }
.cm-button-secondary { border-color: var(--cm-border); color: var(--cm-ink); background: var(--cm-surface); }
.cm-button-tertiary { color: var(--cm-primary); background: transparent; }
.cm-button-danger { color: #fff; background: var(--cm-danger); }
.cm-button-danger-outline {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--cm-space-2);
    min-height: 2.25rem;
    padding: .45rem .75rem;
    border: 1px solid var(--cm-danger);
    border-radius: var(--cm-radius-control);
    color: var(--cm-danger);
    background: var(--cm-surface);
    font: inherit;
    font-size: .9rem;
    font-weight: 700;
    text-decoration: none;
}
.cm-button-danger-outline:hover:not(:disabled) {
    color: #fff;
    background: var(--cm-danger);
}
.cm-button-danger-outline:disabled {
    opacity: .58;
    cursor: not-allowed;
}
.cm-row-action { min-height: var(--cm-control-height); padding: .3rem .55rem; border-color: var(--cm-border); color: var(--cm-ink); background: var(--cm-surface); font-size: .8rem; }
.cm-icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    white-space: nowrap;
    line-height: 1;
}

.cm-icon-button__icon {
    display: block;
    flex: 0 0 auto;
    width: 1.125rem;
    height: 1.125rem;
}

.cm-search-control {
    position: relative;
    width: 100%;
}
.cm-search-control__icon {
    position: absolute;
    top: 50%;
    left: .75rem;
    z-index: 1;
    display: block;
    color: var(--cm-muted);
    pointer-events: none;
    transform: translateY(-50%);
}
.cm-search-control__input {
    display: block;
    width: 100%;
    min-height: 2.5rem;
    padding-right: 2.75rem;
    padding-left: 2.5rem;
}
.cm-search-control__clear {
    position: absolute;
    top: 50%;
    right: .25rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border: 0;
    border-radius: var(--cm-radius-control);
    color: var(--cm-muted);
    background: transparent;
    transform: translateY(-50%);
}
.cm-search-control__clear:hover {
    color: var(--cm-ink);
    background: var(--cm-surface-soft);
}
.cm-search-control__clear:focus-visible {
    outline: none;
    box-shadow: var(--cm-focus-ring);
}
.stock-maintenance-toolbar {
    display: grid;
    grid-template-columns: minmax(16rem, 1fr) auto;
    gap: .65rem;
    align-items: end;
    margin-bottom: 1rem;
}
.stock-maintenance-toolbar__search {
    min-width: 0;
}
.stock-maintenance-filter__label {
    display: block;
    margin-bottom: .25rem;
    color: var(--cm-muted);
    font-size: .75rem;
    font-weight: 700;
    line-height: 1.1;
}
.stock-maintenance-result-count {
    align-self: end;
    justify-self: end;
    margin: 0 0 .55rem;
    color: var(--cm-muted);
    font-size: .9rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.cm-table-row-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .65rem;
    white-space: nowrap;
}
.cm-table-row-action {
    min-height: 2.25rem;
    padding: .3rem .35rem;
    border: 0;
    border-radius: var(--cm-radius-control);
    background: transparent;
    font-size: .8rem;
    line-height: 1;
    white-space: nowrap;
}
.cm-table-row-action__icon {
    display: block;
    flex: 0 0 auto;
}
.cm-table-row-action--edit {
    color: var(--cm-primary);
}
.cm-table-row-action--danger {
    color: var(--cm-danger);
}
.cm-table-row-action--edit:hover:not(:disabled) {
    background: var(--cm-primary-soft);
}
.cm-table-row-action--danger:hover:not(:disabled) {
    background: var(--cm-danger-soft);
}
.cm-table-row-action:focus-visible {
    outline: none;
    box-shadow: var(--cm-focus-ring);
}
.cm-table-row-action:disabled {
    opacity: .58;
    cursor: not-allowed;
}

@media (max-width: 700px) {
    .stock-maintenance-toolbar {
        grid-template-columns: 1fr;
    }

    .stock-maintenance-result-count {
        justify-self: start;
        margin: 0;
    }
}

.cm-icon-button__icon,
.nav-panel__icon,
.cm-action-tile__icon svg,
.cm-metric-display__icon svg,
.page-header__icon svg,
.cm-icon-catalogue svg {
    display: block;
    flex: 0 0 auto;
}

.cm-icon-catalogue__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); gap: var(--cm-space-3); }
.cm-icon-catalogue__item { display: grid; gap: var(--cm-space-2); padding: var(--cm-space-3); border: 1px solid var(--cm-border); border-radius: var(--cm-radius-card); background: var(--cm-surface); }
.cm-icon-catalogue__examples, .cm-icon-catalogue__buttons { display: flex; align-items: center; flex-wrap: wrap; gap: var(--cm-space-2); color: var(--cm-text-muted); }
.cm-icon-catalogue__buttons { color: inherit; }
.cm-icon-catalogue__buttons button { display: inline-flex; align-items: center; gap: var(--cm-space-2); }
.cm-button-primary:disabled,
.cm-button-secondary:disabled,
.cm-button-tertiary:disabled,
.cm-button-danger:disabled,
.cm-row-action:disabled,
.cm-action-tile:disabled { opacity: .58; cursor: not-allowed; }

.page-header__content { display: flex; align-items: flex-start; gap: var(--cm-space-3); }
.page-header__title-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cm-space-2); }
.page-header__icon,
.cm-action-tile__icon,
.cm-metric-display__icon,
.cm-state-panel__icon { display: grid; flex: none; place-items: center; color: var(--cm-primary); }
.page-header__icon { width: 2.4rem; height: 2.4rem; border-radius: var(--cm-radius-control); background: var(--cm-primary-soft); }
.cm-context-panel { padding: var(--cm-space-4) var(--cm-space-6); border: 1px solid var(--cm-border); border-radius: var(--cm-radius-card); background: linear-gradient(135deg, var(--cm-surface) 0%, var(--cm-surface-soft) 100%); box-shadow: var(--cm-shadow-elevated); }
.cm-context-panel__header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--cm-space-4); }
.cm-context-panel__content { min-width: 0; flex: 1 1 16rem; }
.cm-context-panel__title-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cm-space-2); }
.cm-context-panel h2,
.cm-section-header h2,
.cm-state-panel h2,
.cm-table-shell h2 { margin: var(--cm-space-1) 0 0; color: var(--cm-ink); font-size: 1.15rem; }
.cm-context-panel p,
.cm-section-header p,
.cm-state-panel p,
.cm-table-shell p { margin: var(--cm-space-1) 0 0; color: var(--cm-muted); }
.cm-context-panel__details { min-width: 14rem; flex: 1 1 auto; max-width: 28rem; }
.cm-context-panel__footer { margin-top: var(--cm-space-4); padding-top: var(--cm-space-4); border-top: 1px solid var(--cm-border); }
.cm-section-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--cm-space-4); margin-bottom: var(--cm-space-3); }
.cm-section-header__actions { display: flex; flex: none; flex-wrap: wrap; gap: var(--cm-space-2); }
.cm-state-panel { display: flex; align-items: flex-start; gap: var(--cm-space-3); padding: var(--cm-space-4); border: 1px solid var(--cm-border); border-radius: var(--cm-radius-card); background: var(--cm-surface-soft); }
.cm-state-panel__content { min-width: 0; }
.cm-state-panel__actions { display: flex; flex: none; flex-wrap: wrap; gap: var(--cm-space-2); margin-left: auto; }
.cm-state-panel--problem { border-color: color-mix(in srgb, var(--cm-danger) 35%, var(--cm-border)); background: var(--cm-danger-soft); }
.cm-state-panel--stale,
.cm-state-panel--prerequisite { border-color: color-mix(in srgb, var(--cm-warning) 35%, var(--cm-border)); background: var(--cm-warning-soft); }
.cm-state-panel--success { border-color: color-mix(in srgb, var(--cm-success) 35%, var(--cm-border)); background: var(--cm-success-soft); }
.cm-state-panel--problem .cm-state-panel__icon { color: var(--cm-danger); }
.cm-state-panel--stale .cm-state-panel__icon,
.cm-state-panel--prerequisite .cm-state-panel__icon { color: var(--cm-warning); }
.cm-state-panel--success .cm-state-panel__icon { color: var(--cm-success); }

.cm-metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: var(--cm-space-3); }
.cm-metric-display { display: flex; gap: var(--cm-space-3); padding: var(--cm-space-4); border: 1px solid var(--cm-border); border-radius: var(--cm-radius-card); background: var(--cm-surface); }
.cm-metric-display__value { color: var(--cm-ink); font-size: 1.65rem; font-weight: 800; line-height: 1; }
.cm-metric-display__label { margin-top: var(--cm-space-1); color: var(--cm-muted); font-size: .85rem; font-weight: 700; }
.cm-metric-display__description { margin-top: var(--cm-space-1); color: var(--cm-muted); font-size: .8rem; }
.cm-action-tile { display: flex; align-items: flex-start; width: 100%; gap: var(--cm-space-3); padding: var(--cm-space-4); border: 1px solid var(--cm-border); border-radius: var(--cm-radius-card); color: var(--cm-ink); background: var(--cm-surface); font: inherit; text-align: left; text-decoration: none; }
.cm-action-tile__icon { width: 2.35rem; height: 2.35rem; border-radius: .6rem; background: var(--cm-primary-soft); }
.cm-action-tile__copy { min-width: 0; }
.cm-action-tile__copy strong,
.cm-action-tile__copy small { display: block; }
.cm-action-tile__copy small { margin-top: var(--cm-space-1); color: var(--cm-muted); line-height: 1.35; }
.cm-action-tile__chevron { flex: none; margin: auto 0 auto auto; color: var(--cm-primary); }
.cm-table-shell { overflow: hidden; --bs-table-hover-bg: var(--cm-table-hover-bg); }
.cm-table-shell__header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--cm-space-4); padding: var(--cm-space-4) var(--cm-space-6); border-bottom: 1px solid var(--cm-border); background: var(--cm-surface-soft); }
.cm-table-shell__toolbar { display: flex; flex: none; flex-wrap: wrap; align-items: center; gap: var(--cm-space-2); }

/* A compact inline label+select field for TableShell toolbars (status/type filters etc).
   Reuse this instead of a page-scoped filter class so every list page's toolbar matches. */
.cm-toolbar-filter { display: flex; align-items: center; gap: var(--cm-space-2); }
.cm-toolbar-filter .form-label { margin: 0; white-space: nowrap; }
.cm-toolbar-filter .form-select { min-width: 11rem; }
.cm-table-shell__overflow {
    max-width: 100%;
    overflow-x: auto;
    background:
        linear-gradient(to right, var(--cm-surface) 30%, rgba(255, 255, 255, 0)),
        linear-gradient(to left, var(--cm-surface) 30%, rgba(255, 255, 255, 0)) 100% 0,
        linear-gradient(to right, rgba(20, 24, 20, .12), rgba(20, 24, 20, 0)),
        linear-gradient(to left, rgba(20, 24, 20, .12), rgba(20, 24, 20, 0)) 100% 0;
    background-repeat: no-repeat;
    background-color: var(--cm-surface);
    background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%;
    background-position: 0 0, 100% 0, 0 0, 100% 0;
    background-attachment: local, local, scroll, scroll;
}
.cm-table-shell__overflow table { width: 100%; margin: 0; font-size: .82rem; --bs-table-bg: transparent; }
.cm-table-shell__overflow th,
.cm-table-shell__overflow td { padding: .65rem .75rem; border-bottom: 1px solid var(--cm-table-line); vertical-align: middle; }
.cm-table-shell__overflow th { color: var(--cm-muted); background: var(--cm-table-header-bg); font-size: .66rem; letter-spacing: .07em; text-align: left; text-transform: uppercase; white-space: nowrap; }
.cm-table-shell__overflow tbody tr:hover { background: var(--cm-table-hover-bg); }
.cm-table-shell__footer { padding: .65rem .75rem; color: var(--cm-muted); background: var(--cm-surface-soft); font-size: .72rem; }
.cm-numeric { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.cm-currency { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Shared confirmation/summary panel for a review-before-you-act step (posting, cancelling, etc). */
.cm-review-panel { margin-bottom: 1rem; padding: 1rem; border: 1px solid color-mix(in srgb, var(--cm-warning) 28%, var(--cm-border)); border-radius: .75rem; background: var(--cm-warning-soft); }

.cm-button-primary:focus-visible,
.cm-button-secondary:focus-visible,
.cm-button-tertiary:focus-visible,
.cm-button-danger:focus-visible,
.cm-button-danger-outline:focus-visible,
.cm-row-action:focus-visible,
.cm-action-tile:focus-visible,
.page-header__actions a:focus-visible,
.page-header__actions button:focus-visible { outline: none; box-shadow: var(--cm-focus-ring); }

code {
    color: var(--cm-warning);
}

.page-panel {
    display: flex;
    flex-direction: column;
    gap: var(--cm-density-form-gap);
    max-width: 100%;
}

.page-header {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
    min-width: 0;
}

.page-header h1 {
    margin: 0;
    font-size: 2rem;
    font-weight: 800;
    color: var(--cm-text-primary);
    border-radius: var(--cm-radius-control);
}

.page-header h1:focus-visible {
    outline: none;
    box-shadow: var(--cm-focus-ring);
}

.page-header p {
    margin: 0.35rem 0 0;
    color: var(--cm-text-muted);
}

.page-header__actions {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    flex: none;
}

@media (max-width: 700px) {
    .catalogue-import-review__result-count {
        flex-basis: 100%;
        margin-left: 0;
    }
}

.badge-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border-radius: 999px;
    padding: 0.55rem 0.85rem;
    border: 1px solid color-mix(in srgb, var(--cm-border) 80%, transparent);
    background: color-mix(in srgb, var(--cm-surface) 70%, transparent);
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.04);
}

.badge-pill__label {
    text-transform: uppercase;
    font-size: 0.7rem;
    letter-spacing: 0.08em;
    color: var(--cm-text-muted);
    font-weight: 700;
}

.badge-pill__value {
    font-weight: 800;
    color: var(--cm-text-primary);
}

.badge-pill__meta {
    color: var(--cm-text-muted);
    font-size: 0.92rem;
}

.badge-pill--warm {
    background: linear-gradient(135deg, var(--cm-surface), var(--cm-warning-soft));
}

.badge-pill--muted {
    background: color-mix(in srgb, var(--cm-surface) 74%, transparent);
}

.state-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.1rem;
    border-radius: 1rem;
    background: color-mix(in srgb, var(--cm-surface) 85%, transparent);
    border: 1px solid color-mix(in srgb, var(--cm-border) 80%, transparent);
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.06);
}

.state-card__title {
    font-weight: 800;
    color: var(--cm-text-primary);
}

.state-card__text {
    color: var(--cm-text-muted);
}

.state-card__details {
    margin-top: 0.35rem;
    font-size: 0.92rem;
    color: var(--cm-text-muted);
}

.state-card--error {
    border-color: color-mix(in srgb, var(--cm-danger) 35%, var(--cm-border));
    background: color-mix(in srgb, var(--cm-danger-soft) 90%, transparent);
}

.state-card--forbidden,
.state-card--unauthorized {
    background: color-mix(in srgb, var(--cm-warning-soft) 90%, transparent);
}

.state-card--loading {
    background: color-mix(in srgb, var(--cm-surface) 90%, transparent);
}

.status-badge {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: 0.3rem 0.65rem;
    font-size: 0.82rem;
    font-weight: 700;
}

.status-badge--success {
    background: var(--cm-success-soft);
    color: var(--cm-success);
}

.status-badge--muted {
    background: color-mix(in srgb, var(--cm-border) 55%, var(--cm-surface));
    color: var(--cm-text-muted);
}

.status-badge--neutral {
    background: var(--cm-warning-soft);
    color: var(--cm-warning);
}

.status-badge--warning {
    background: var(--cm-warning-soft);
    color: var(--cm-warning);
}

.status-badge--info {
    background: var(--cm-primary-soft);
    color: var(--cm-primary-hover);
}

.status-badge--danger {
    background: var(--cm-danger-soft);
    color: var(--cm-danger);
}

.feature-card {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 1.1rem;
    border-radius: 1rem;
    text-decoration: none;
    background: color-mix(in srgb, var(--cm-surface) 88%, transparent);
    border: 1px solid color-mix(in srgb, var(--cm-border) 80%, transparent);
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.06);
    transition: transform var(--cm-motion-duration-fast) var(--cm-motion-ease-standard), box-shadow var(--cm-motion-duration-fast) var(--cm-motion-ease-standard);
}

.feature-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 30px rgba(15, 23, 42, 0.1);
}

.feature-card:focus-visible {
    outline: 2px solid var(--cm-brand-amber);
    outline-offset: 3px;
    transform: translateY(-2px);
    box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.18), 0 16px 30px rgba(15, 23, 42, 0.1);
}

.feature-card__eyebrow {
    text-transform: uppercase;
    font-size: 0.7rem;
    letter-spacing: 0.08em;
    color: var(--cm-warning);
    font-weight: 700;
}

.feature-card__title {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--cm-text-primary);
}

.feature-card__text {
    color: var(--cm-text-muted);
}

.diagnostics-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.diagnostics-card {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1.1rem;
    border-radius: 1rem;
    background: color-mix(in srgb, var(--cm-surface) 88%, transparent);
    border: 1px solid color-mix(in srgb, var(--cm-border) 80%, transparent);
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.06);
}

.diagnostics-card--mismatch {
    border-color: color-mix(in srgb, var(--cm-warning) 35%, var(--cm-border));
    background: color-mix(in srgb, var(--cm-warning-soft) 94%, transparent);
}

.diagnostics-card__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.diagnostics-card__eyebrow {
    text-transform: uppercase;
    font-size: 0.7rem;
    letter-spacing: 0.08em;
    color: var(--cm-warning);
    font-weight: 700;
    margin-bottom: 0.25rem;
}

.diagnostics-card h2 {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--cm-text-primary);
}

.diagnostics-permission-text {
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
    font-size: 0.88rem;
    white-space: normal;
    overflow-wrap: anywhere;
}

.diagnostics-table code {
    white-space: normal;
    overflow-wrap: anywhere;
}

.card-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.stack-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.stack-list__item {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: center;
    padding: 0.95rem 1rem;
    border-radius: 0.95rem;
    background: color-mix(in srgb, var(--cm-surface) 88%, transparent);
    border: 1px solid color-mix(in srgb, var(--cm-border) 80%, transparent);
}

.stack-list__item-meta {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.helper-text {
    color: var(--cm-text-muted);
    margin: 0;
    font-size: 0.92rem;
}

.cm-role-error-summary,
#permission-errors,
#role-name,
#role-description {
    scroll-margin-top: 6rem;
}

.cm-permission-toolbar {
    display: flex;
    align-items: flex-end;
    gap: 1rem;
    margin-top: 0.75rem;
}

.cm-permission-toolbar__search {
    min-width: 0;
    flex: 1 1 auto;
}

.cm-permission-toolbar__counts {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem;
    min-height: 2.4rem;
    padding-bottom: 0.15rem;
}

.cm-permission-group {
    overflow: hidden;
    border: 1px solid rgba(15, 23, 42, 0.12);
    border-radius: 0.75rem;
    background: rgba(255, 255, 255, 0.8);
}

.cm-permission-group__header {
    padding: 0.35rem 0.65rem;
    background: rgba(248, 250, 252, 0.9);
}

.cm-permission-group__toggle {
    display: flex;
    min-width: 0;
    flex: 1;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0;
    color: inherit;
    text-align: left;
    border: 0;
    background: transparent;
}

.cm-permission-group__chevron {
    font-size: 1.25rem;
    line-height: 1;
    transition: transform var(--cm-motion-duration-fast) var(--cm-motion-ease-standard);
}

.cm-permission-group__toggle[aria-expanded="true"] .cm-permission-group__chevron {
    transform: rotate(90deg);
}

.cm-permission-group__count {
    color: #64748b;
    font-size: 0.8rem;
    font-weight: 500;
}

.cm-permission-group__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.35rem;
    padding: 0.6rem 0.75rem 0;
}

.cm-permission-bulk-action {
    padding: 0.25rem 0.45rem;
    color: var(--cm-primary);
    font: inherit;
    font-size: 0.82rem;
    font-weight: 700;
    border: 0;
    border-radius: 0.35rem;
    background: transparent;
}

.cm-permission-bulk-action:hover:not(:disabled),
.cm-permission-bulk-action:focus-visible {
    background: var(--cm-primary-soft);
}

.cm-permission-bulk-action:focus-visible {
    outline: 0;
    box-shadow: var(--cm-focus-ring);
}

.cm-permission-bulk-action:disabled {
    color: var(--cm-muted);
    opacity: 0.55;
}

.cm-permission-group__panel {
    border-top: 1px solid rgba(15, 23, 42, 0.1);
}

.cm-permission-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
    gap: 0.55rem;
    padding: 0.75rem;
}

.cm-permission-card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: flex-start;
    gap: 0.55rem;
    min-width: 0;
    margin: 0;
    padding: 0.7rem 0.75rem;
    color: inherit;
    cursor: pointer;
    border: 1px solid rgba(15, 23, 42, 0.1);
    border-radius: 0.55rem;
    background: rgba(248, 250, 252, 0.8);
    transition: border-color var(--cm-motion-duration-fast) var(--cm-motion-ease-standard), background-color var(--cm-motion-duration-fast) var(--cm-motion-ease-standard), box-shadow var(--cm-motion-duration-fast) var(--cm-motion-ease-standard);
}

.cm-permission-card:hover {
    border-color: color-mix(in srgb, var(--cm-primary) 40%, var(--cm-border));
    background: var(--cm-primary-soft);
}

.cm-permission-card:focus-within {
    border-color: var(--cm-primary);
    box-shadow: var(--cm-focus-ring);
}

.cm-permission-card--selected {
    border-color: color-mix(in srgb, var(--cm-primary) 52%, var(--cm-border));
    background: color-mix(in srgb, var(--cm-primary) 8%, white);
}

.cm-permission-card input[type="checkbox"] {
    width: 1rem;
    height: 1rem;
    margin: 0.15rem 0 0;
    accent-color: var(--cm-primary);
}

.cm-permission-card__content {
    display: grid;
    min-width: 0;
    gap: 0.15rem;
}

.cm-permission-card__key {
    overflow-wrap: anywhere;
    font-size: 0.9rem;
    font-weight: 750;
}

.cm-permission-card__description {
    color: var(--cm-muted);
    font-size: 0.8rem;
    line-height: 1.35;
}

.cm-permission-summary {
    display: grid;
    gap: 0.75rem;
    margin-top: 1rem;
    padding: 1rem;
    border: 1px solid var(--cm-border);
    border-radius: var(--cm-radius-card);
    background: var(--cm-surface-soft);
}

.cm-permission-summary__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.cm-permission-summary__title {
    margin: 0.1rem 0 0;
    font-size: 1rem;
    font-weight: 800;
}

.cm-permission-summary__clear {
    flex: none;
    padding: 0.3rem 0.5rem;
    color: var(--cm-muted);
    font: inherit;
    font-size: 0.82rem;
    font-weight: 700;
    border: 0;
    border-radius: 0.35rem;
    background: transparent;
}

.cm-permission-summary__clear:hover,
.cm-permission-summary__clear:focus-visible,
.cm-permission-summary__remove:hover,
.cm-permission-summary__remove:focus-visible {
    color: var(--cm-ink);
    background: rgba(15, 23, 42, 0.07);
}

.cm-permission-summary__clear:focus-visible,
.cm-permission-summary__remove:focus-visible {
    outline: 0;
    box-shadow: var(--cm-focus-ring);
}

.cm-permission-summary__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
    gap: 0.5rem;
}

.cm-permission-summary__item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    padding: 0.55rem 0.65rem;
    border: 1px solid rgba(15, 23, 42, 0.1);
    border-radius: 0.5rem;
    background: var(--cm-surface);
}

.cm-permission-summary__item-text {
    display: grid;
    min-width: 0;
    gap: 0.1rem;
}

.cm-permission-summary__key {
    overflow-wrap: anywhere;
    font-size: 0.82rem;
    font-weight: 750;
}

.cm-permission-summary__group {
    color: var(--cm-muted);
    font-size: 0.72rem;
}

.cm-permission-summary__remove {
    display: inline-grid;
    width: 1.7rem;
    height: 1.7rem;
    place-items: center;
    padding: 0;
    color: var(--cm-muted);
    font: inherit;
    font-size: 1.15rem;
    line-height: 1;
    border: 0;
    border-radius: 50%;
    background: transparent;
}

@media (prefers-reduced-motion: reduce) {
    .cm-permission-group__chevron,
    .cm-permission-card {
        transition: none;
    }
}

.cm-pagination { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; color: var(--cm-text-muted); font-size: 0.85rem; }
.cm-pagination__summary { flex: 0 0 auto; }
.cm-pagination__controls { display: flex; align-items: center; justify-content: flex-end; gap: 0.5rem; margin-left: auto; }
.cm-pagination__controls label { margin: 0; white-space: nowrap; }
.cm-pagination__controls select { width: auto; min-width: 4.5rem; }
.cm-pagination__fixed-size { white-space: nowrap; }
.cm-pagination__ellipsis { padding-inline: 0.15rem; }
.cm-pagination .btn:focus-visible,
.cm-pagination select:focus-visible { position: relative; z-index: 1; outline: 3px solid var(--cm-brand-amber); outline-offset: 2px; }
@media (max-width: 700px) {
    .cm-pagination__controls { width: 100%; margin-left: 0; justify-content: flex-start; }
}

@media (max-width: 900px) {
    .card-grid {
        grid-template-columns: 1fr;
    }

    .page-header {
        flex-direction: column;
    }

    .cm-context-panel__header,
    .cm-section-header,
    .cm-table-shell__header {
        flex-direction: column;
    }

    .page-header__content,
    .page-header__actions,
    .cm-context-panel__content,
    .cm-context-panel__details,
    .cm-section-header__actions,
    .cm-state-panel__actions,
    .cm-table-shell__toolbar {
        width: 100%;
    }

    .cm-context-panel__content {
        flex-basis: auto;
    }

    .page-header__actions,
    .cm-section-header__actions,
    .cm-state-panel__actions,
    .cm-table-shell__toolbar {
        justify-content: flex-start;
    }

    .cm-state-panel { flex-direction: column; }
    .cm-state-panel__actions { margin-left: 0; }
    .cm-content-card { padding-inline: var(--cm-space-4); }
    .cm-table-shell__header { padding-inline: var(--cm-space-4); }

    .diagnostics-grid {
        grid-template-columns: 1fr;
    }

    .stack-list__item {
        align-items: flex-start;
        flex-direction: column;
    }

    .cm-permission-toolbar {
        align-items: stretch;
        flex-direction: column;
        gap: 0.5rem;
    }

    .cm-permission-toolbar__counts {
        justify-content: flex-start;
        min-height: 0;
        padding-bottom: 0;
    }
}

/* Density overrides stay additive so legacy page families can migrate incrementally. */
.cm-table-shell__overflow th,
.cm-table-shell__overflow td {
    padding-block: var(--cm-density-table-cell-y);
    padding-inline: var(--cm-density-table-cell-x);
}

:root[data-density="compact"] .card-grid,
:root[data-density="compact"] .diagnostics-grid,
:root[data-density="compact"] .stack-list,
:root[data-density="compact"] .cm-metric-grid {
    gap: var(--cm-space-2);
}

:root[data-density="compact"] .feature-card,
:root[data-density="compact"] .diagnostics-card,
:root[data-density="compact"] .stack-list__item {
    padding: var(--cm-space-3);
}

.cm-content-card,
.cm-metric-display,
.cm-action-tile,
.cm-state-panel,
.cm-permission-summary {
    transition: padding var(--cm-motion-duration-standard) var(--cm-motion-ease-standard);
}

@media (max-width: 600px) {
    .cm-button-primary,
    .cm-button-secondary,
    .cm-button-tertiary,
    .cm-button-danger,
    .cm-button-danger-outline,
    .cm-row-action,
    .cm-icon-button {
        min-height: 2.75rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        transition-delay: 0ms !important;
    }
}
