/* ==========================================================================
   RDS WORKSPACE MODULE STYLES
   File: App.Web/wwwroot/css/rdsworkspace.css

   Owner: Module.RdsWorkspace
   Principle: MINIMAL MODULE CSS (HR-RDS-CSS1)
     Only RDS-specific overrides that cannot be expressed in informationmodel.css
     belong here. Before adding any rule, verify it is genuinely RDS-only and
     cannot be promoted to informationmodel.css or an existing shared token.

   Forbidden categories (must NOT be placed in this file):
     • Workspace shell layout    — belongs in informationmodel.css
     • Drawer / panel layout     — belongs in informationmodel.css
     • Node selection visuals    — belongs in informationmodel.css
     • Card patterns             — belongs in components.css or informationmodel.css
     • Generic AG Grid styling   — belongs in informationmodel.css
     • Generic Cytoscape styling — belongs in informationmodel.css
     • Bootstrap utility classes — absolutely forbidden (HR-UI5)

   Load order in App.razor (§6A.3):
     … → informationmodel.css → rdsworkspace.css
   ========================================================================== */

/* ==========================================================================
   S1.15 — RDS indicator strip + RDS-only drawer offset adjustment
   ========================================================================== */

/* Deviation color tokens — defined globally so badges/charts work anywhere the card renders */
:root {
    /* V3D.10 — Shared Color Palette (3dViewerRDSApp.txt, RdsDeviationPalette, DeviationBucketService) */
    --rds-deviation-strong-red: #b85c5c;
    --rds-deviation-medium-red: #d98888;
    --rds-deviation-light-red: #e8b4b4;
    --rds-deviation-green: #5a9a6e;
    --rds-deviation-medium-yellow: #d4b85c;
    --rds-deviation-strong-yellow: #c9a227;
    --rds-deviation-orange: #c97840;
    --rds-deviation-neutral: #9e9e9e;

    --rds-deviation-on-dark: #fff;
    --rds-deviation-on-light: rgba(0, 0, 0, 0.78);

    --rds-deviation-strong-red-fg: var(--rds-deviation-on-dark);
    --rds-deviation-medium-red-fg: var(--rds-deviation-on-light);
    --rds-deviation-light-red-fg: var(--rds-deviation-on-light);
    --rds-deviation-green-fg: var(--rds-deviation-on-dark);
    --rds-deviation-medium-yellow-fg: var(--rds-deviation-on-light);
    --rds-deviation-strong-yellow-fg: var(--rds-deviation-on-light);
    --rds-deviation-orange-fg: var(--rds-deviation-on-dark);
    --rds-deviation-neutral-fg: var(--rds-deviation-on-dark);

    /* SOLL/IST property-row badge — derived from shared deviation palette */
    --color-soll-equal-text: color-mix(in srgb, var(--rds-deviation-green) 75%, #000);
    --color-soll-equal-bg: color-mix(in srgb, var(--rds-deviation-green) 16%, var(--color-surface, #fff));
    --color-soll-under-text: color-mix(in srgb, var(--rds-deviation-strong-red) 80%, #000);
    --color-soll-under-bg: color-mix(in srgb, var(--rds-deviation-light-red) 38%, var(--color-surface, #fff));
    --color-soll-over-text: color-mix(in srgb, var(--rds-deviation-orange) 85%, #000);
    --color-soll-over-bg: color-mix(in srgb, var(--rds-deviation-medium-yellow) 30%, var(--color-surface, #fff));

}

.deviation-strong-red { color: var(--rds-deviation-strong-red); }
.deviation-medium-red { color: var(--rds-deviation-medium-red); }
.deviation-light-red { color: var(--rds-deviation-light-red); }
.deviation-green { color: var(--rds-deviation-green); }
.deviation-medium-yellow { color: var(--rds-deviation-medium-yellow); }
.deviation-strong-yellow { color: var(--rds-deviation-strong-yellow); }
.deviation-orange { color: var(--rds-deviation-orange); }

.deviation-strong-red--fill { background-color: var(--rds-deviation-strong-red); }
.deviation-medium-red--fill { background-color: var(--rds-deviation-medium-red); }
.deviation-light-red--fill { background-color: var(--rds-deviation-light-red); }
.deviation-green--fill { background-color: var(--rds-deviation-green); }
.deviation-medium-yellow--fill { background-color: var(--rds-deviation-medium-yellow); }
.deviation-strong-yellow--fill { background-color: var(--rds-deviation-strong-yellow); }
.deviation-orange--fill { background-color: var(--rds-deviation-orange); }
.deviation-neutral { color: var(--rds-deviation-neutral); }
.deviation-neutral--fill { background-color: var(--rds-deviation-neutral); }

.rds-workspace-shell {
    --rds-indicator-row-height: 78px;
    --rds-base-appbar-height: var(--mud-appbar-height, 64px);
    --rds-base-appbar-height-sm: var(--mud-appbar-height-sm, 56px);
}

.rds-workspace-shell .rds-indicator-strip {
    flex-shrink: 0;
    padding: 6px var(--space-10);
    border-bottom: 1px solid var(--color-border);
    background: color-mix(in srgb, var(--color-surface) 92%, var(--color-grey-100));
}

.rds-workspace-shell .rds-indicator-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
    gap: 8px;
    align-items: stretch;
}

    .rds-workspace-shell .rds-indicator-card {
        background: var(--color-surface);
        border: 1px solid var(--color-border);
        border-radius: 8px;
        padding: 8px 10px;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 4px;
        min-height: 64px;
        max-height: 110px;
        box-shadow: var(--shadow-sm);
    }

.rds-workspace-shell .rds-indicator-card-pill {
    border-color: color-mix(in srgb, var(--color-primary) 45%, var(--color-border));
    background: color-mix(in srgb, var(--color-primary) 10%, var(--color-surface));
}

.rds-workspace-shell .rds-indicator-label {
    font-size: 0.85rem;
    line-height: 1.2;
    color: var(--color-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

    .rds-workspace-shell .rds-indicator-value {
        font-size: 1.0rem;
        font-weight: 600;
        line-height: 1.2;
        color: var(--color-text-primary);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

.rds-workspace-shell .rds-indicator-card-tone-positive {
    border-color: color-mix(in srgb, var(--color-success) 45%, var(--color-border));
    background: color-mix(in srgb, var(--color-success) 10%, var(--color-surface));
}

.rds-workspace-shell .rds-indicator-card-tone-negative {
    border-color: color-mix(in srgb, var(--color-danger) 45%, var(--color-border));
    background: color-mix(in srgb, var(--color-danger) 10%, var(--color-surface));
}

.rds-workspace-shell .rds-indicator-card-tone-warning {
    border-color: color-mix(in srgb, var(--color-warning) 45%, var(--color-border));
    background: color-mix(in srgb, var(--color-warning) 12%, var(--color-surface));
}

.rds-workspace-shell .rds-indicator-card--action {
    cursor: pointer;
    text-align: inherit;
    font: inherit;
    width: 100%;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}

.rds-workspace-shell .rds-indicator-card--action:hover {
    border-color: color-mix(in srgb, var(--color-primary) 45%, var(--color-border));
    background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
}

.rds-workspace-shell .rds-indicator-card--action:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.rds-workspace-shell .workspace-layout {
    --mud-appbar-height: calc(var(--rds-base-appbar-height) + var(--rds-indicator-row-height));
    --mud-appbar-height-sm: calc(var(--rds-base-appbar-height-sm) + var(--rds-indicator-row-height));
}

/* ==========================================================================
   S1.8 — Module diagram surface / context menu
   ========================================================================== */

.rds-workspace-diagram-surface {
    width: 100%;
    height: 100%;
    min-height: 0;
    display: flex;
}

.rds-diagram-status-card {
    margin: auto;
    max-width: 420px;
    text-align: center;
    padding: 24px;
}

.rds-diagram-status-card-error {
    border-color: var(--color-danger);
}

.rds-diagram-status-text {
    margin: 0;
    color: var(--color-text-muted);
}

.rds-node-context-menu-popover {
    z-index: 1400;
    min-width: 220px;
    max-width: min(320px, calc(100vw - 16px));
}

.rds-node-context-menu {
    min-width: 220px;
    display: flex;
    flex-direction: column;
    padding: 8px;
    gap: 2px;
}

.rds-node-context-menu-item {
    width: 100%;
    justify-content: flex-start;
    gap: 10px;
    text-transform: none;
    color: var(--color-text);
    min-height: 34px;
    border-radius: 6px;
}

.rds-node-context-menu-item i {
    font-size: 0.95rem;
    width: 16px;
    text-align: center;
}

.rds-node-context-menu-item-danger {
    color: var(--color-danger);
}

.rds-node-context-menu-divider {
    height: 1px;
    margin: 6px 4px;
    background: var(--color-border);
}

/* ==========================================================================
   S1.9 — Module matrix surface
   ========================================================================== */

.rds-workspace-matrix-surface {
    width: 100%;
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.rds-matrix-status-card {
    margin: auto;
    max-width: 460px;
    text-align: center;
    padding: 24px;
}

.rds-matrix-status-card-error {
    border-color: var(--color-danger);
}

.rds-matrix-status-text {
    margin: 0;
    color: var(--color-text-muted);
}

.rds-matrix-guidance-card {
    margin: 8px 8px 0;
    padding: 10px 12px;
}

.rds-matrix-guidance-text {
    margin: 0;
    color: var(--color-text-muted);
}

.rds-matrix-toolbar {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    padding: var(--space-3);
    margin: 0 8px;
}

.rds-matrix-toolbar-row {
    display: flex;
    flex-wrap: nowrap;
    gap: var(--space-3);
    align-items: center;
}

.rds-matrix-toolbar-row-single {
    justify-content: space-between;
}

.rds-matrix-toolbar-left,
.rds-matrix-toolbar-right {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    min-width: 0;
}

.rds-matrix-toolbar-left {
    flex: 1 1 auto;
    padding-left: var(--space-4);
}

.rds-matrix-toolbar-right {
    flex: 0 0 auto;
    padding-right: var(--space-4);
}

.rds-matrix-toolbar-field {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    min-width: 130px;
    max-width: 170px;
}

.rds-matrix-toolbar-field span {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--color-text-muted);
}

.rds-matrix-toolbar-field input,
.rds-matrix-toolbar-field select {
    width: 100%;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    padding: 5px 8px;
    background: var(--color-surface);
    color: var(--color-text-primary);
}

.rds-matrix-toolbar-field-compact {
    min-width: 120px;
    max-width: 180px;
}

.rds-matrix-toolbar-check-dropdown {
    position: relative;
    width: 100%;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
}

.rds-matrix-toolbar-check-dropdown > summary {
    list-style: none;
    display: block;
    width: 100%;
    cursor: pointer;
    padding: 5px 8px;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rds-matrix-toolbar-check-dropdown > summary::-webkit-details-marker {
    display: none;
}

.rds-matrix-toolbar-check-dropdown-content {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 20;
    width: max(100%, min(360px, 42vw));
    max-height: 260px;
    overflow: auto;
    padding: 8px;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
    box-shadow: var(--shadow-md);
}

.rds-matrix-toolbar-check-option {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 4px 0;
    font-size: 0.8125rem;
}

.rds-matrix-toolbar-check-clear {
    margin-top: 8px;
    width: 100%;
}

.rds-matrix-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-left: auto;
    align-items: center;
}

.rds-matrix-toolbar-meta {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--space-1);
    font-size: 0.8125rem;
    color: var(--color-text-muted);
}

.rds-matrix-toolbar-notice {
    color: var(--color-text-secondary);
}

.rds-matrix-toolbar-row-count,
.rds-model-toolbar-row-count {
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    white-space: nowrap;
}

.rds-matrix-toolbar-clear {
    color: var(--color-primary);
    border-color: var(--color-primary);
    background: var(--color-surface);
}

.rds-matrix-toolbar-clear:hover:not(:disabled) {
    background: color-mix(in srgb, var(--color-primary) 6%, var(--color-surface));
}

.rds-matrix-toolbar-search-inline {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

.rds-matrix-toolbar-search-inline input {
    width: clamp(150px, 16vw, 260px);
    border: 1px solid var(--color-border);
    border-radius: 6px;
    padding: 5px 8px;
    background: var(--color-surface);
    color: var(--color-text-primary);
}

.rds-matrix-toolbar-help {
    margin-top: var(--space-1);
    font-size: 0.8125rem;
    color: var(--color-text-muted);
}

.rds-floorplan-surface {
    width: 100%;
    height: 100%;
    min-height: 0;
    display: flex;
    flex: 1;
    flex-direction: column;
}

.rds-model-surface {
    width: 100%;
    height: 100%;
    min-height: 0;
    display: flex;
    flex: 1;
    flex-direction: column;
}

.rds-model-status-bar {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: var(--space-4);
    padding: 8px 12px;
    border-bottom: 1px solid var(--color-border);
    background: var(--color-surface);
    pointer-events: auto;
}

.rds-model-status-bar--error {
    border-bottom-color: var(--color-danger);
    background: rgba(229, 57, 53, 0.08);
}

.rds-model-status-bar-message {
    min-width: 0;
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-model-toolbar-right-actions {
    display: inline-flex;
    align-items: flex-end;
    gap: var(--space-2);
}

.rds-model-status-icon--spinning {
    display: inline-block;
    animation: rds-floorplan-spin 1s linear infinite;
}

.rds-model-tree-panel .infomodel-node-tree,
.rds-floorplan-tree-panel .infomodel-node-tree,
.rds-ds-tree-panel .infomodel-node-tree,
.rds-v3d-tree-panel .infomodel-node-tree {
    flex: 1;
    min-height: 0;
    font-size: 0.8125rem;
}

.rds-model-tree-panel {
    height: 100%;
    min-height: 0;
    border: none;
    box-shadow: none;
}

.rds-model-tree-header {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--color-text-muted);
    margin-bottom: var(--space-2);
}

.rds-floorplan-status-bar {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: var(--space-4);
    padding: 8px 12px;
    border-bottom: 1px solid var(--color-border);
    background: var(--color-surface);
}

.rds-floorplan-status-bar--error {
    border-bottom-color: var(--color-danger);
    background: rgba(229, 57, 53, 0.08);
}

.rds-floorplan-status-bar-message {
    min-width: 0;
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-floorplan-status-bar-actions {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    margin-left: auto;
}

.rds-floorplan-toolbar-right-actions {
    display: inline-flex;
    align-items: flex-end;
    gap: var(--space-2);
}

.rds-floorplan-status-icon--spinning {
    display: inline-block;
    animation: rds-floorplan-spin 1s linear infinite;
}

.rds-floorplan-error {
    margin: 8px 12px 0;
    font-size: 0.8125rem;
    color: var(--color-danger);
}

@keyframes rds-floorplan-spin {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

/* ==========================================================================
   RDS-specific side-panel and inventory details
   ========================================================================== */

.rds-buildings-toolbar {
    margin-bottom: var(--space-8);
}

.rds-buildings-empty-card {
    text-align: center;
    padding: var(--space-24);
    margin-top: var(--space-8);
}

.rds-buildings-empty-card p {
    margin: 0;
}

.rds-building-card {
    cursor: pointer;
    margin-bottom: var(--space-8);
}

.rds-building-card .app-card-header {
    justify-content: space-between;
}

.rds-building-card-check {
    color: var(--color-primary);
}

.rds-building-card--active {
    border-color: color-mix(in srgb, var(--color-primary) 45%, var(--color-border));
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--color-primary) 22%, transparent), var(--shadow-sm);
}

.rds-inv-row {
    margin-bottom: var(--space-8);
}

.rds-inv-row:last-child {
    margin-bottom: 0;
}

.rds-inv-row-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--space-8);
}

.rds-inv-layers {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-4);
    margin-top: var(--space-4);
}

.rds-inv-row-name {
    font-weight: 600;
}

.rds-inv-cell {
    min-width: 120px;
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.rds-inv-layer-label {
    font-size: 0.75rem;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.rds-inv-value {
    display: inline-block;
    min-height: 28px;
    padding: 4px 8px;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
    cursor: pointer;
}

.rds-inv-value:hover {
    border-color: color-mix(in srgb, var(--color-primary) 40%, var(--color-border));
}

.rds-inv-edit-field {
    min-width: 120px;
}

/* ==========================================================================
   S3.3 — Property row action menu (kebab)
   ========================================================================== */

/* Modifier applied on top of .infomodel-prop-row--layer when the row needs a kebab menu. */
.rds-prop-row {
    position: relative;
}

/* Trailing flex cell that hosts the kebab button. */
.rds-prop-row-actions {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    margin-left: auto;
}

/* Kebab button: hidden by default, revealed on row hover or focus. */
.rds-prop-row-actions .rds-prop-kebab-btn {
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.12s ease;
}

.rds-prop-row:hover .rds-prop-row-actions .rds-prop-kebab-btn,
.rds-prop-row:focus-within .rds-prop-row-actions .rds-prop-kebab-btn {
    opacity: 1;
    pointer-events: auto;
}

/* Menu item style — mirrors .rds-node-context-menu-item. */
.rds-prop-menu-item {
    width: 100%;
    justify-content: flex-start;
    gap: 10px;
    text-transform: none;
    color: var(--color-text);
    min-height: 34px;
    border-radius: 6px;
}

.rds-prop-menu-item i {
    font-size: 0.95rem;
    width: 16px;
    text-align: center;
}

/* ==========================================================================
   Shared — SOLL/IST deviation analysis badge (inline in property row)
   ========================================================================== */

/* Deviation badge — compact pill, inline in the property header row. */
.rds-qty-deviation {
    flex-shrink: 0;
    min-width: 90px;
    text-align: right;
    font-size: 0.75rem;
    font-weight: 600;
    border-radius: var(--radius-small);
    padding: 2px 6px;
}

/* Within 5% tolerance: green */
.rds-qty-deviation--equal {
    color: var(--color-soll-equal-text);
    background: var(--color-soll-equal-bg);
}

/* Comparison value too low (under reference): red */
.rds-qty-deviation--under {
    color: var(--color-soll-under-text);
    background: var(--color-soll-under-bg);
}

/* Comparison value too high (over reference): orange, readable on white */
.rds-qty-deviation--over {
    color: var(--color-soll-over-text);
    background: var(--color-soll-over-bg);
}

/* ==========================================================================
   Session C — Analysis surface shell + top bar
   ========================================================================== */

.rds-analysis-surface {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 8px;
    overflow: hidden;
}

.rds-analysis-topbar {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 10px;
}

.rds-analysis-topbar-left,
.rds-analysis-topbar-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.rds-analysis-filter-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: var(--color-surface);
    color: var(--color-text-secondary);
    font-size: 0.75rem;
    padding: 3px 8px;
    cursor: pointer;
}

.rds-analysis-filter-badge--info {
    cursor: default;
    background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.rds-analysis-filter-badge:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

/* ── Main content: chart area + collapsible table panel ─── */
.rds-analysis-content {
    flex: 1;
    min-height: 0;
    display: grid;
    gap: 8px;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    overflow: hidden;
    transition: grid-template-columns 0.2s ease;
}

/* When table is collapsed, chart takes full width */
.rds-analysis-content--table-collapsed {
    grid-template-columns: minmax(0, 1fr) auto;
}

/* Single main chart area (replaces old left + bottom-row split) */
.rds-analysis-chart-area {
    min-height: 0;
    padding: 10px 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    overflow: auto;
}

.rds-analysis-table-panel {
    min-height: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.rds-analysis-right-panel {
    min-height: 0;
    overflow: hidden;
}

/* Collapsed right panel: allow overflow so the toggle button stays visible */
.rds-analysis-right-panel--collapsed {
    overflow: visible;
}

/* Inner wrapper: positions toggle button over the MudTabs header row */
.rds-analysis-table-inner {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1;
    overflow: hidden;
}

/* Ensure collapsed panel stays wide enough to show the toggle button */
.rds-analysis-right-panel--collapsed .rds-analysis-table-panel {
    min-width: 44px;
}

/* When collapsed, make the toggle static so it occupies flow space and stays visible */
.rds-analysis-right-panel--collapsed .rds-analysis-panel-toggle--inline {
    position: static;
    margin: 8px auto;
}

.rds-analysis-panel-toggle {
    width: 28px;
    height: 28px;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
    color: var(--color-text-muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    font-size: 14px;
}

/* Inline toggle: overlays the top-right of the MudTabs header row */
.rds-analysis-panel-toggle--inline {
    position: absolute;
    top: 6px;
    right: 8px;
    z-index: 2;
}

.rds-analysis-panel-toggle:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.rds-analysis-loading-shell {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rds-analysis-topchart {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-height: 0;
    flex: 1;
}

.rds-analysis-topchart-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
}

.rds-analysis-topchart-mode,
.rds-analysis-dist-mode {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.rds-analysis-topchart-empty,
.rds-analysis-heatmap-empty,
.rds-analysis-offender-empty,
.rds-analysis-deviation-empty {
    padding: 8px 4px;
}

/* ── Distribution & Completion composite layout ─── */
.rds-analysis-dist-and-completion {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: 12px;
    min-height: 0;
    flex: 1;
}

.rds-analysis-dist-main {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 0;
    overflow: auto;
}

.rds-analysis-completion-side {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 0;
    overflow: auto;
}

.rds-analysis-heatmap {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-height: 0;
    flex: 1;
}

.rds-analysis-heatmap-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: flex-end;
}

.rds-analysis-heatmap-grid-host {
    min-height: 0;
    overflow: auto;
}

.rds-analysis-heatmap-grid {
    width: 100%;
    border-collapse: separate;
    border-spacing: 4px;
}

.rds-analysis-heatmap-grid th {
    text-align: left;
    font-size: inherit;
    color: var(--color-text-muted);
    white-space: nowrap;
}

.rds-analysis-heatmap-grid--rotated thead th:not(:first-child) {
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    white-space: nowrap;
    text-align: left;
    padding: 8px 4px;
    min-width: 28px;
}

.rds-analysis-heatmap-grid td {
    min-width: 80px;
}

.rds-analysis-heatmap-cell--selected {
    outline: 3px solid var(--color-primary);
    outline-offset: -2px;
}

.rds-analysis-heatmap-cell {
    width: 100%;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
    color: var(--color-text-secondary);
    font-size: inherit;
    padding: 6px 8px;
    text-align: center;
    cursor: pointer;
}

.rds-analysis-heatmap-cell:hover {
    border-color: var(--color-primary);
}

.rds-analysis-heatmap-cell-empty {
    font-size: inherit;
    color: var(--color-text-muted);
}

.rds-analysis-top-offenders {
    display: grid;
    gap: 8px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    min-height: 0;
    flex: 1;
}

.rds-analysis-offender-column {
    min-height: 0;
    border: 1px solid var(--color-border);
    border-radius: 8px;
    padding: 8px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    background: var(--color-surface);
}

.rds-analysis-offender-title {
    font-size: 0.82rem;
    margin: 0;
    color: var(--color-text-secondary);
}

.rds-analysis-offender-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    overflow: auto;
    min-height: 0;
}

.rds-analysis-offender-item {
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
    text-align: left;
    padding: 6px 8px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    cursor: pointer;
}

.rds-analysis-offender-item:hover {
    border-color: var(--color-primary);
}

.rds-analysis-offender-name {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--color-text-primary);
}

.rds-analysis-offender-meta,
.rds-analysis-offender-value {
    font-size: 0.74rem;
    color: var(--color-text-muted);
}

.rds-analysis-deviation-chart {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-height: 0;
    flex: 1;
}

/* ── Chart text size (controlled by --rds-chart-text-size CSS variable) ───── */
/* !important is required to override MudBlazor's inline font-size on Bar/Stacked/Pie SVG text */
.rds-analysis-deviation-chart svg text {
    font-size: var(--rds-chart-text-size, inherit) !important;
}

.rds-analysis-deviation-chart .mud-charts-legend text {
    font-size: var(--rds-chart-text-size, inherit) !important;
}

.rds-analysis-chart-controls {
    display: flex;
    gap: 12px;
    align-items: flex-end;
}

.rds-analysis-roomlist {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 0;
    flex: 1;
}

.rds-analysis-roomlist-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.rds-analysis-roomlist-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.rds-analysis-roomlist-sort {
    width: 30px;
    height: 30px;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
    color: var(--color-text-muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.rds-analysis-roomlist-sort:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.rds-analysis-roomlist-items {
    min-height: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding-right: 2px;
}

.rds-analysis-roomlist-item {
    border: 1px solid var(--color-border-subtle);
    border-radius: 6px;
    padding: 6px 8px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.rds-analysis-roomlist-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.rds-analysis-roomlist-title {
    font-size: 0.82rem;
    color: var(--color-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-analysis-roomlist-pct {
    font-size: 0.78rem;
    color: var(--color-text-muted);
    flex-shrink: 0;
}

.rds-analysis-roomlist-empty {
    padding: 8px 4px;
}

.rds-analysis-bucket-cell {
    padding: 2px 6px;
    border-radius: 4px;
    font-size: 0.8rem;
    display: inline-block;
}

.rds-analysis-table-panel-content {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1;
    overflow: hidden;
    position: relative;
}

.rds-analysis-table-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px;
    border-bottom: 1px solid var(--color-border);
    position: relative;
    flex-wrap: nowrap;
}

.rds-analysis-table-tabs {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    min-width: 0;
    flex: 1;
}

.rds-analysis-table-tab {
    border: 1px solid var(--color-border);
    background: var(--color-surface);
    color: var(--color-text);
    border-radius: 6px;
    padding: 4px 10px;
    white-space: nowrap;
}

.rds-analysis-table-tab--active {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.rds-analysis-table-header-actions {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.rds-analysis-table-settings {
    position: absolute;
    top: calc(100% + 4px);
    right: 8px;
    width: min(320px, calc(100vw - 48px));
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px;
    border: 1px solid var(--color-border);
    border-radius: 8px;
    background: var(--color-surface);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    z-index: 3;
}

.rds-analysis-table-settings-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.rds-analysis-table-settings-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.rds-analysis-table-settings-title {
    font-size: 0.8rem;
    font-weight: 600;
}

.rds-analysis-table-settings-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.rds-analysis-table-settings-move {
    display: inline-flex;
    gap: 4px;
}

.rds-analysis-table-tab-panel {
    min-height: 0;
    overflow: auto;
    padding: 0 !important;
}

/* ── Compact table columns (~50% narrower) ─── */
.rds-analysis-data-grid {
    font-size: 0.78rem;
}

.rds-analysis-data-grid--compact .mud-table-cell {
    padding: 2px 4px !important;
}

/* Keep sort/filter actions in column menu only (three-dot menu). */
.rds-analysis-data-grid .mud-table-sort-label-icon,
.rds-analysis-data-grid .mud-sort-index {
    display: none !important;
}

.rds-analysis-cell-truncate {
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-analysis-cell-narrow {
    max-width: 70px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-analysis-bucket-strong-red {
    background: var(--rds-deviation-strong-red);
    color: var(--rds-deviation-strong-red-fg);
    border-color: var(--rds-deviation-strong-red);
}

.rds-analysis-bucket-medium-red {
    background: var(--rds-deviation-medium-red);
    color: var(--rds-deviation-medium-red-fg);
    border-color: var(--rds-deviation-medium-red);
}

.rds-analysis-bucket-light-red {
    background: var(--rds-deviation-light-red);
    color: var(--rds-deviation-light-red-fg);
    border-color: var(--rds-deviation-light-red);
}

.rds-analysis-bucket-green {
    background: var(--rds-deviation-green);
    color: var(--rds-deviation-green-fg);
    border-color: var(--rds-deviation-green);
}

.rds-analysis-bucket-medium-yellow {
    background: var(--rds-deviation-medium-yellow);
    color: var(--rds-deviation-medium-yellow-fg);
    border-color: var(--rds-deviation-medium-yellow);
}

.rds-analysis-bucket-strong-yellow {
    background: var(--rds-deviation-strong-yellow);
    color: var(--rds-deviation-strong-yellow-fg);
    border-color: var(--rds-deviation-strong-yellow);
}

.rds-analysis-bucket-orange {
    background: var(--rds-deviation-orange);
    color: var(--rds-deviation-orange-fg);
    border-color: var(--rds-deviation-orange);
}

.rds-analysis-bucket-neutral {
    background: var(--rds-deviation-neutral);
    color: var(--rds-deviation-neutral-fg);
    border-color: var(--rds-deviation-neutral);
}

/* ==========================================================================
   S3.5 — Add Property modal: layer + value row layout
   ========================================================================== */

/* One layer + value pair row in the add-property modal. */
.rds-add-prop-layer-row {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    margin-bottom: 8px;
}

/* Layer catalog dropdown cell — fixed width so all dropdowns align. */
.rds-add-prop-layer-select {
    flex: 0 0 160px;
    min-width: 0;
}

/* Value input cell — fills remaining space. */
.rds-add-prop-value-input {
    flex: 1 1 auto;
    min-width: 80px;
}

/* "Add layer" button — subtle dashed outline style. */
.rds-add-prop-add-row-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    background: transparent;
    border: 1px dashed var(--color-border);
    border-radius: 6px;
    color: var(--color-text-muted);
    cursor: pointer;
    font-size: 0.85rem;
    margin-top: 4px;
}

.rds-add-prop-add-row-btn:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

/* ==========================================================================
   S9 — Manage page shell
   ========================================================================== */

:root {
    --rds-manage-tab-bg:         transparent;
    --rds-manage-tab-active-bg:  white;
    --rds-manage-tab-border:     var(--color-border, #dee2e6);
    --rds-manage-tab-color:      var(--color-text-secondary, #495057);
    --rds-manage-tab-active-color: var(--color-primary, #0d6efd);
}

.rds-manage-container {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

.rds-manage-top-nav {
    display: flex;
    flex-shrink: 0;
    justify-content: center;
    background-color: var(--color-grey-50, #f8f9fa);
    border-bottom: 2px solid var(--rds-manage-tab-border);
    padding: 0;
}

.rds-manage-tab-button {
    padding: 0.75rem 1.5rem;
    background: var(--rds-manage-tab-bg);
    border: none;
    border-bottom: 3px solid transparent;
    color: var(--rds-manage-tab-color);
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
    white-space: nowrap;
}

.rds-manage-tab-button:hover {
    background-color: var(--color-grey-100, #e9ecef);
    color: var(--rds-manage-tab-active-color);
}

.rds-manage-tab-button.active {
    color: var(--rds-manage-tab-active-color);
    border-bottom-color: var(--rds-manage-tab-active-color);
    background-color: var(--rds-manage-tab-active-bg);
}

.rds-manage-main-content {
    flex: 1;
    flex-direction: column;
    min-height: 0;
    display: flex;
    overflow-y: auto;
    background-color: var(--color-surface, white);
}

.rds-manage-page-shell {
    margin: 20px;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.rds-manage-selected-row {
    background-color: var(--color-primary-light, #e8f0fe) !important;
}

/* S10/S11 manage page sub-components */
.rds-manage-filter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--space-4, 1rem);
    padding: var(--space-4, 1rem) var(--space-5, 1.25rem) 0;
}

.rds-manage-filter-field {
    display: flex;
    flex-direction: column;
    gap: var(--space-1, 0.25rem);
    min-width: 180px;
}

.rds-manage-filter-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--color-text-secondary, #495057);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.rds-manage-filter-label--spacer {
    visibility: hidden;
}

.rds-manage-filter-action {
    min-width: fit-content;
}

.rds-manage-columns-menu {
    display: inline-flex;
}

.rds-manage-columns-menu .mud-button-root {
    height: calc(1.5em + 0.75rem + 2px);
    min-height: calc(1.5em + 0.75rem + 2px);
    padding: 0.375rem 0.75rem;
    display: inline-flex;
    align-items: center;
}

.rds-manage-columns-menu .mud-button-label {
    display: inline-flex;
    align-items: center;
    line-height: 1.5;
}

.rds-manage-columns-menu .mud-button-start-icon,
.rds-manage-columns-menu .mud-button-icon-start,
.rds-manage-columns-menu .mud-icon-root {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.rds-manage-loading {
    display: flex;
    align-items: center;
    gap: var(--space-3, 0.75rem);
    padding: var(--space-5, 1.25rem);
    color: var(--color-text-secondary, #495057);
}

.rds-manage-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4, 1rem);
    padding: var(--space-4, 1rem) var(--space-5, 1.25rem) var(--space-2, 0.5rem);
}

.rds-manage-empty-hint {
    display: flex;
    align-items: center;
    gap: var(--space-2, 0.5rem);
    padding: var(--space-6, 1.5rem) var(--space-5, 1.25rem);
}

/* ==========================================================================
   S15 — Node Overview page
   ========================================================================== */

.rds-manage-action-bar {
    display: flex;
    align-items: center;
    gap: var(--space-2, 0.5rem);
    padding: var(--space-2, 0.5rem) var(--space-5, 1.25rem);
    background-color: var(--color-primary-light, #e8f0fe);
    border-bottom: 1px solid var(--color-border, #dee2e6);
    flex-wrap: wrap;
}

.rds-manage-action-separator {
    display: inline-block;
    width: 1px;
    height: 24px;
    background-color: var(--color-border, #dee2e6);
    margin: 0 var(--space-1, 0.25rem);
    vertical-align: middle;
}

.rds-node-overview-pick-panel {
    padding: var(--space-3, 0.75rem) var(--space-5, 1.25rem);
    background-color: var(--color-surface, white);
    border-bottom: 1px solid var(--color-border, #dee2e6);
}

.rds-node-overview-pick-panel-inner {
    display: flex;
    align-items: center;
    gap: var(--space-3, 0.75rem);
    flex-wrap: wrap;
}

.rds-node-overview-pick-label {
    font-weight: 600;
    font-size: 0.875rem;
    white-space: nowrap;
}

.rds-node-overview-pick-select {
    max-width: 320px;
    min-width: 200px;
}

.rds-node-overview-grid-host {
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

.rds-overview-dashboard {
    padding: var(--space-3, 0.75rem) var(--space-5, 1.25rem);
    display: flex;
    flex-direction: column;
    gap: var(--space-3, 0.75rem);
    border-bottom: 1px solid var(--color-border, #dee2e6);
    background: var(--color-surface, #fff);
}

/* Node overview KPI cards reuse indicator typography outside the workspace shell */
.rds-overview-dashboard .rds-indicator-label {
    font-size: 0.75rem;
    line-height: 1.2;
    color: var(--color-text-muted);
    text-align: center;
}

.rds-overview-dashboard .rds-indicator-value {
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--color-text-primary);
    text-align: center;
}

.rds-overview-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: var(--space-2, 0.5rem);
}

.rds-overview-kpi-card {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    padding: var(--space-2, 0.5rem) var(--space-3, 0.75rem);
    border: 1px solid var(--color-border, #dee2e6);
    border-radius: 8px;
}

.rds-overview-kpi-card-clickable {
    cursor: pointer;
}

.rds-overview-kpi-card-active {
    cursor: pointer;
    border-color: var(--color-primary, #0d6efd);
    box-shadow: inset 0 0 0 1px var(--color-primary, #0d6efd);
    background: color-mix(in srgb, var(--color-primary, #0d6efd) 8%, var(--color-surface, #fff));
}

.rds-overview-kpi-label {
    font-size: 0.75rem;
    color: var(--color-text-secondary, #6c757d);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    text-align: center;
}

.rds-overview-kpi-value {
    font-size: 1.1rem;
    font-weight: 700;
    text-align: center;
}

.rds-overview-chart-card svg text {
    font-size: 16px;
}

.rds-overview-pie-filter-list {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 8px;
    margin-top: 8px;
}

.rds-overview-pie-filter {
    opacity: 0.85;
}

.rds-overview-pie-filter-active {
    opacity: 1;
    font-weight: 700;
    text-decoration: underline;
}

.rds-overview-active-filter {
    display: flex;
    align-items: center;
}

.rds-overview-chart-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-2, 0.5rem);
}

.rds-overview-chart-card {
    padding: var(--space-2, 0.5rem);
    border: 1px solid var(--color-border, #dee2e6);
    border-radius: 8px;
}

.rds-overview-chart-title {
    font-size: 0.8rem;
    font-weight: 600;
    margin-bottom: var(--space-1, 0.25rem);
}

.rds-overview-chart-empty {
    min-height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-secondary, #6c757d);
}

@media (max-width: 1200px) {
    .rds-overview-chart-grid {
        grid-template-columns: 1fr;
    }
}

/* ==========================================================================
   RDS settings page
   ========================================================================== */

.rds-settings-card {
    margin: var(--space-6);
    padding: var(--space-6);
}

.rds-settings-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-4);
}

.rds-settings-title {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 700;
}

.rds-settings-description {
    margin: var(--space-2) 0 0;
    color: var(--color-text-secondary);
}

.rds-settings-actions {
    display: flex;
    gap: var(--space-2);
}

.rds-settings-message {
    margin: var(--space-4) 0 0;
    color: var(--color-text-secondary);
}

.rds-settings-section {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    margin-top: var(--space-5);
}

.rds-settings-section-title {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
}

.rds-settings-section-description {
    margin: var(--space-1) 0 0;
    color: var(--color-text-secondary);
}

.rds-node-content-lines {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.rds-node-content-line {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3);
    border: 1px solid var(--color-border);
    border-radius: 8px;
    background: var(--color-surface);
}

.rds-node-content-line-mandatory {
    background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
}

.rds-node-content-order {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 999px;
    background: var(--color-grey-100);
    color: var(--color-text-secondary);
    font-weight: 700;
}

.rds-node-content-field {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    font-weight: 600;
}

.rds-node-content-status {
    color: var(--color-text-muted);
    font-size: 0.85rem;
}

.rds-node-content-move {
    display: flex;
    align-items: center;
}

.rds-settings-footer {
    display: flex;
    justify-content: flex-start;
    margin-top: var(--space-6);
}

/* ── Matrix column settings — checkbox row ────────────────────────────────── */
.rds-matrix-settings-checkbox-row {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    cursor: pointer;
    font-size: 0.875rem;
    color: var(--color-text-primary);
}

.rds-matrix-settings-checkbox-row input[type="checkbox"] {
    cursor: pointer;
}

.rds-matrix-settings-width-row {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.rds-matrix-settings-width-row input[type="range"] {
    flex: 1 1 auto;
}

.rds-matrix-settings-width-input {
    width: 88px;
    flex: 0 0 88px;
}



/* ── NodeDefinition Editor drawer ─────────────────────────────────────────── */
.rds-nd-editor-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    width: 100%;
    gap: var(--space-2);
}

.rds-nd-editor-header-info {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    min-width: 0;
}

.rds-nd-editor-name {
    font-weight: 600;
    font-size: 1rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rds-nd-editor-pills {
    display: flex;
    gap: var(--space-1);
    flex-wrap: wrap;
}

.rds-nd-editor-body {
    padding: var(--space-3) var(--space-3) var(--space-4);
    overflow-y: auto;
}

.rds-nd-editor-section {
    margin-bottom: var(--space-3);
}

.rds-nd-editor-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-1);
}

.rds-nd-editor-section-title {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-text-muted);
}

.rds-nd-editor-section-actions {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1, 4px);
}

.rds-nd-combined-defaults-body {
    border: 1px solid var(--color-border-subtle, #e0e0e0);
    border-radius: var(--radius-sm, 4px);
    padding: var(--space-2, 8px);
    background: var(--color-surface-subtle, #fafafa);
}

.rds-nd-embedded-prop-card {
    margin-bottom: var(--space-2, 8px);
}

.rds-nd-defaults-prop-toolbar {
    display: flex;
    justify-content: flex-end;
    margin-bottom: var(--space-1, 4px);
}

.rds-nd-embedded-prop-body {
    /* rows only — no card padding duplication */
}

.rds-prop-kind-tag {
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: 0 0.35rem;
    margin-right: 0.35rem;
    border-radius: 3px;
    background: var(--color-surface-muted, #eee);
    color: var(--color-text-secondary, #666);
    vertical-align: middle;
}

/* ── DS.5: Data Sheets export page ───────────────────────────────────── */
.rds-ds-kpi-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: var(--space-2, 0.5rem);
    width: 100%;
}

.rds-ds-kpi-card {
    min-width: 0;
    min-height: 84px;
}

.rds-ds-controls-card {
    border: 1px solid var(--color-border, #dee2e6);
    background: var(--color-surface, #fff);
    --rds-ds-picker-row-height: 2rem;
    --rds-ds-picker-frame-padding: 0.25rem;
}

.rds-ds-picker-label {
    font-size: 0.75rem;
    color: var(--color-text-secondary, #6c757d);
    margin-bottom: 2px;
    text-transform: none;
}

.rds-ds-picker-scroll {
    border: 1px solid var(--color-border, #dee2e6);
    border-radius: 4px;
    padding: var(--rds-ds-picker-frame-padding);
    overflow-y: auto;
    background: var(--color-surface, #fff);
}

.rds-ds-picker-scroll--max5 {
    max-height: calc((var(--rds-ds-picker-row-height) * 5) + (var(--rds-ds-picker-frame-padding) * 2));
    min-height: calc((var(--rds-ds-picker-row-height) * 5) + (var(--rds-ds-picker-frame-padding) * 2));
}

.rds-ds-hint-text {
    font-size: 0.875rem;
    line-height: var(--rds-ds-picker-row-height);
    display: inline-flex;
    align-items: center;
    min-height: var(--rds-ds-picker-row-height);
    padding: 0 8px;
}

.rds-ds-view-item {
    padding: 0 8px;
    cursor: pointer;
    border-radius: 4px;
    font-size: 0.875rem;
    line-height: var(--rds-ds-picker-row-height);
    min-height: var(--rds-ds-picker-row-height);
    display: flex;
    align-items: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rds-ds-picker-scroll .mud-checkbox {
    margin: 0;
}

.rds-ds-picker-scroll .mud-checkbox .mud-button-root {
    padding: 0 6px;
}

.rds-ds-picker-scroll .mud-checkbox .mud-button-root .mud-button-label {
    min-height: var(--rds-ds-picker-row-height);
    align-items: center;
}

.rds-ds-picker-scroll .mud-checkbox .mud-typography {
    font-size: 0.875rem;
    line-height: var(--rds-ds-picker-row-height);
}

.rds-ds-view-item:hover {
    background: var(--color-surface-hover, rgba(0,0,0,0.04));
}

.rds-ds-view-item--selected {
    background: color-mix(in srgb, var(--color-primary, #0d6efd) 10%, transparent);
    font-weight: 600;
    color: var(--color-primary, #0d6efd);
}

.rds-ds-export-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-1, 0.25rem);
}

.rds-ds-pdf-options {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.rds-ds-pdf-options .mud-checkbox {
    margin: 0;
}

.rds-ds-image-warnings-list {
    margin: 0;
    padding-left: 1.25rem;
}

.rds-ds-pdf-progress {
    width: 100%;
    max-width: 220px;
}

.rds-ds-body {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: var(--space-2, 0.5rem);
    min-height: 0;
    flex: 1;
}

@media (max-width: 960px) {
    .rds-ds-body {
        grid-template-columns: 1fr;
    }
}

.rds-ds-tree-panel {
    overflow-y: auto;
    max-height: calc(100vh - 340px);
    border: 1px solid var(--color-border, #dee2e6);
    background: var(--color-surface, #fff);
}

.rds-ds-table-panel {
    overflow: auto;
    max-height: calc(100vh - 340px);
    border: 1px solid var(--color-border, #dee2e6);
    background: var(--color-surface, #fff);
}

.rds-ds-tree-node {
    margin-left: calc(var(--rds-ds-depth, 0) * 1.25rem);
}

/* Floor plan: room tree (inside InfoModelFloorPlanHost sidebar) */
.rds-floorplan-tree-panel {
    max-height: none;
    height: 100%;
    min-height: 0;
    border: none;
    box-shadow: none;
}

.rds-floorplan-tree-header {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-text-primary);
    margin-bottom: 0.35rem;
}

@media (max-width: 960px) {
    .infomodel-floorplan-host--with-sidebars .infomodel-floorplan-main {
        grid-template-columns: auto 1fr auto;
    }

    .infomodel-floorplan-sidebar--left:not(.infomodel-floorplan-sidebar--collapsed),
    .infomodel-floorplan-sidebar--right:not(.infomodel-floorplan-sidebar--collapsed) {
        width: minmax(160px, 200px);
    }
}

.rds-ds-table .mud-table-container {
    max-height: calc(100vh - 420px);
}

/* ==========================================================================
   Session E — Sankey chart
   ========================================================================== */

.rds-analysis-sankey {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 0;
    flex: 1;
}

.rds-analysis-sankey-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: flex-end;
}

.rds-analysis-sankey svg text {
    font-size: inherit;
}

.rds-analysis-sankey-empty {
    padding: 8px 4px;
}

/* ── Sankey filter panel (replaces SelectedIndexChanged for reliable click filtering) ── */
.rds-sankey-filter-panel {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 6px 0 2px;
}

.rds-sankey-filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.rds-sankey-filter-btn {
    padding: 2px 8px;
    border: 1px solid rgba(0,0,0,.18);
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.75rem;
    line-height: 1.4;
    background: var(--mud-palette-surface);
    color: var(--mud-palette-text-primary);
    transition: opacity .15s;
}

.rds-sankey-filter-btn:hover {
    opacity: 0.82;
}

.rds-sankey-filter-btn--node {
    font-weight: 500;
    color: var(--rds-deviation-on-dark);
}

.rds-sankey-filter-btn--status {
    background: var(--mud-palette-background-grey);
}

.rds-sankey-filter-btn--outcome.rds-analysis-bucket-medium-red,
.rds-sankey-filter-btn--outcome.rds-analysis-bucket-green,
.rds-sankey-filter-btn--outcome.rds-analysis-bucket-strong-yellow {
    color: inherit;
}

/* ── Deviation distribution: clickable bucket chips for Bar/Stacked ── */
.rds-analysis-bucket-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    padding: 4px 0;
}

.rds-analysis-bucket-chip {
    padding: 2px 8px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.73rem;
    line-height: 1.4;
    color: var(--rds-deviation-on-light);
    font-weight: 500;
    transition: opacity .15s;
}

.rds-analysis-bucket-chip:hover {
    opacity: 0.82;
}

/* ==========================================================================
   Workspace panels — buildings, views, diagram
   ========================================================================== */

.rds-buildings-panel {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow-y: auto;
}

.rds-building-card .rds-building-settings-btn {
    flex-shrink: 0;
    opacity: 0.75;
}

.rds-building-card:hover .rds-building-settings-btn,
.rds-building-card:focus-within .rds-building-settings-btn {
    opacity: 1;
}

.rds-free-level-row {
    width: 100%;
}

.rds-free-level-nodetype {
    flex: 1 1 auto;
    min-width: 0;
}

.rds-diagram-add-parent-mode {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    border-color: var(--color-primary);
}

/* IFC file row in building settings modal */
.rds-ifc-file-row {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
}

.rds-ifc-file-icon {
    font-size: 1.25rem;
    color: var(--color-primary);
    flex-shrink: 0;
}

.rds-ifc-file-info {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--space-1);
}

.rds-ifc-file-name {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-ifc-file-schema {
    font-size: 0.8125rem;
}

.rds-ifc-primary-badge {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--color-primary);
}

.rds-ifc-remove-btn {
    flex-shrink: 0;
}

/* Context settings modal tabs */
.rds-context-settings-body {
    min-height: 280px;
}

.rds-context-settings-tab-row {
    display: flex;
    gap: var(--space-1);
    margin-bottom: var(--space-4);
    border-bottom: 1px solid var(--color-border);
}

.rds-context-settings-tab-btn {
    appearance: none;
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    color: var(--color-text-muted);
    cursor: pointer;
    font-size: 0.875rem;
    font-weight: 600;
    margin-bottom: -1px;
    padding: var(--space-2) var(--space-3);
}

.rds-context-settings-tab-btn:hover {
    color: var(--color-text);
}

.rds-context-settings-tab-btn.active {
    border-bottom-color: var(--color-primary);
    color: var(--color-primary);
}

.rds-context-settings-checkboxes {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    margin-top: var(--space-3);
}

.rds-context-settings-checkbox {
    align-items: center;
    display: flex;
    gap: var(--space-2);
}

.rds-context-settings-field-row {
    display: grid;
    gap: var(--space-3);
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
}

.rds-context-settings-textarea {
    min-height: 72px;
    resize: vertical;
}

/* Rule automation summary (manage) */
.rds-rule-automation-summary {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: var(--space-3);
}

.rds-rule-automation-summary .informationmodel-field {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    min-width: 0;
}

.rds-rule-automation-summary-full {
    grid-column: 1 / -1;
}

/* Definitions manage inline add row */
.rds-manage-add-row td {
    background: color-mix(in srgb, var(--color-primary) 6%, var(--color-surface));
    vertical-align: middle;
}

/* ── Trimble Connect 3D Viewer extension panel (V3D.1) ───────────────────── */

.rds-v3d-standalone-layout {
    width: 100%;
    height: 100vh;
    overflow: hidden;
    padding: 0;
    margin: 0;
    background: var(--color-bg-subtle, #f3f5f7);
}

.rds-v3d-root {
    display: flex;
    flex-direction: column;
    height: 100vh;
    min-height: 0;
}

.rds-v3d-organizer {
    flex-shrink: 0;
    background: var(--color-surface, #fff);
    border-bottom: 1px solid var(--color-border-subtle, #e0e0e0);
    position: relative;
    z-index: 30;
    overflow: visible;
}

.rds-v3d-organizer-leading {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1;
}

.rds-v3d-organizer-context-label {
    font-size: 0.75rem;
}

.rds-v3d-organizer-context-loading {
    margin-top: 2px;
}

.rds-v3d-organizer-context-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    max-width: 100%;
    padding: 0;
    border: none;
    background: transparent;
    font-size: 0.75rem;
    line-height: 1.3;
    color: var(--color-text-secondary, #666);
    cursor: pointer;
    text-align: left;
}

.rds-v3d-organizer-context-btn:hover:not(:disabled),
.rds-v3d-organizer-context-btn--open {
    color: var(--color-primary, #005f9e);
}

.rds-v3d-organizer-context-btn-text {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 200px;
}

.rds-v3d-organizer-context-btn .bi-chevron-down {
    font-size: 0.65rem;
    flex-shrink: 0;
}

.rds-v3d-organizer-toolbar {
    display: flex;
    align-items: center;
    gap: var(--space-1, 4px);
    flex-shrink: 0;
    position: relative;
    z-index: 20;
    pointer-events: auto;
}

.rds-v3d-dropdown {
    position: relative;
    display: inline-flex;
}

.rds-v3d-dropdown-panel {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    z-index: 1000;
    min-width: 180px;
    max-width: 280px;
    max-height: 280px;
    overflow-y: auto;
    background: var(--color-surface, #fff);
    border: 1px solid var(--color-border-subtle, #e0e0e0);
    border-radius: var(--radius-small, 4px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
    padding: 4px 0;
}

.rds-v3d-dropdown-panel--context {
    left: 0;
    right: auto;
}

.rds-v3d-dropdown-item {
    display: block;
    width: 100%;
    padding: 8px 12px;
    border: none;
    background: transparent;
    text-align: left;
    font-size: 0.85rem;
    color: var(--color-text-primary, #1a1a1a);
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rds-v3d-dropdown-item:hover {
    background: var(--color-bg-subtle, #f3f5f7);
}

.rds-v3d-dropdown-item--active {
    background: color-mix(in srgb, var(--color-primary, #005f9e) 12%, var(--color-surface, #fff));
    color: var(--color-primary, #005f9e);
    font-weight: 600;
}

.rds-v3d-dropdown-empty {
    padding: 8px 12px;
    font-size: 0.8rem;
}

/* Property card header buttons: icons only (sr-only labels), same as workspace shell */
.rds-v3d-root .informationmodel-sr-only,
.rds-v3d-standalone-layout .informationmodel-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.rds-v3d-root .infomodel-card-header-actions .informationmodel-icon-button,
.rds-v3d-standalone-layout .infomodel-card-header-actions .informationmodel-icon-button {
    font-size: 0;
}

.rds-v3d-root .infomodel-card-header-actions .informationmodel-icon-button i,
.rds-v3d-standalone-layout .infomodel-card-header-actions .informationmodel-icon-button i {
    font-size: 0.95rem;
}

.rds-v3d-search-hint {
    margin: var(--space-2, 8px) 0 0;
    font-size: 0.85rem;
}

.rds-v3d-search-results {
    list-style: none;
    margin: var(--space-2, 8px) 0 0;
    padding: 0;
    max-height: 280px;
    overflow-y: auto;
}

.rds-v3d-search-result-btn {
    display: flex;
    align-items: baseline;
    gap: var(--space-2, 8px);
    width: 100%;
    padding: 8px 4px;
    border: none;
    border-radius: var(--radius-small, 4px);
    background: transparent;
    text-align: left;
    cursor: pointer;
}

.rds-v3d-search-result-btn:hover {
    background: var(--color-bg-subtle, #f3f5f7);
}

.rds-v3d-search-result-name {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.875rem;
}

.rds-v3d-search-result-type {
    font-size: 0.7rem;
    flex-shrink: 0;
}

.rds-v3d-main {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.rds-v3d-status-bar {
    flex-shrink: 0;
    padding: 4px var(--space-3, 12px);
    font-size: 0.75rem;
    line-height: 1.35;
    background: var(--color-bg-subtle, #f3f5f7);
    border-bottom: 1px solid var(--color-border-subtle, #e0e0e0);
}

.rds-v3d-status-bar--footer {
    margin-top: auto;
    border-bottom: none;
    border-top: 1px solid var(--color-border-subtle, #e0e0e0);
    min-height: 28px;
    max-height: 48px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-v3d-status-bar--success {
    color: var(--color-success-text, #1b5e20);
    background: color-mix(in srgb, var(--color-success, #2e7d32) 8%, var(--color-bg-subtle, #f3f5f7));
}

.rds-v3d-status-bar--warning {
    color: var(--color-warning-text, #7a5a00);
    background: color-mix(in srgb, var(--color-warning, #ffbf47) 12%, var(--color-bg-subtle, #f3f5f7));
}

.rds-v3d-status-bar--error {
    color: var(--color-danger, #b00020);
    background: color-mix(in srgb, var(--color-danger, #b00020) 8%, var(--color-bg-subtle, #f3f5f7));
}

.rds-v3d-no-ifc-banner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-2, 8px);
    padding: var(--space-3, 12px);
    margin: var(--space-2, 8px);
    background: color-mix(in srgb, var(--color-warning, #ffbf47) 12%, var(--color-surface, #fff));
    border: 1px solid color-mix(in srgb, var(--color-warning, #ffbf47) 35%, transparent);
    border-radius: var(--radius-small, 4px);
    font-size: 0.85rem;
}

@keyframes rds-v3d-spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.rds-v3d-spin {
    animation: rds-v3d-spin 0.8s linear infinite;
}

.rds-v3d-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 1px solid var(--color-border-subtle, #e0e0e0);
    border-radius: var(--radius-small, 4px);
    background: var(--color-surface, #fff);
    color: var(--color-text-primary, #1a1a1a);
    cursor: pointer;
}

.rds-v3d-icon-btn:hover:not(:disabled) {
    background: var(--color-bg-subtle, #f3f5f7);
}

.rds-v3d-icon-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.rds-v3d-icon-btn--active {
    border-color: var(--color-primary, #005f9e);
    background: color-mix(in srgb, var(--color-primary, #005f9e) 10%, var(--color-surface, #fff));
    color: var(--color-primary, #005f9e);
}

.rds-v3d-tree-panel {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: var(--space-2, 8px);
}

.rds-v3d-tree-loading,
.rds-v3d-tree-empty {
    padding: var(--space-3, 12px);
    font-size: 0.85rem;
}

.rds-v3d-tree-node {
    display: flex;
    align-items: baseline;
    gap: var(--space-2, 8px);
    margin-left: calc(var(--rds-v3d-depth, 0) * 1rem);
    padding: 4px 8px;
    border-radius: var(--radius-small, 4px);
    cursor: pointer;
    user-select: none;
}

.rds-v3d-tree-node:hover {
    background: var(--color-bg-subtle, #f3f5f7);
}

.rds-v3d-tree-node--selected {
    background: color-mix(in srgb, var(--color-primary, #005f9e) 14%, var(--color-surface, #fff));
    color: var(--color-primary-darken, #00437b);
}

.rds-v3d-tree-node--unbound .rds-v3d-tree-node-label {
    color: var(--color-text-muted, #9aa0a6);
}

.rds-v3d-tree-node--unbound.rds-v3d-tree-node--selected .rds-v3d-tree-node-label {
    color: var(--color-text-secondary, #666);
}

.rds-v3d-tree-node-label {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.875rem;
}

.rds-v3d-tree-node-type {
    font-size: 0.7rem;
    flex-shrink: 0;
}

.rds-v3d-body {
    display: flex;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

.rds-v3d-tree-column {
    flex: 1;
    min-width: 0;
    max-width: 38%;
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--color-border-subtle, #e0e0e0);
    background: var(--color-surface, #fff);
}

.rds-v3d-menu-column {
    flex: 2;
    min-width: 0;
    display: flex;
    flex-direction: column;
    background: var(--color-surface, #fff);
    overflow: hidden;
}

.rds-v3d-menu-panel {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

.rds-v3d-menu-tabs {
    display: flex;
    align-items: stretch;
    flex-shrink: 0;
    gap: 0;
    border-bottom: 2px solid var(--color-border-subtle, #e0e0e0);
}

.rds-v3d-menu-tab {
    flex: 1;
    min-height: 44px;
    padding: var(--space-2, 8px) var(--space-3, 12px);
    font-size: 0.8rem;
    line-height: 1.2;
    font-weight: 600;
    color: var(--color-text-secondary, #666);
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    cursor: pointer;
    text-align: center;
    transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
}

.rds-v3d-menu-tab:hover {
    background: var(--color-bg-subtle, #f3f5f7);
    color: var(--color-text-primary, #333);
}

.rds-v3d-menu-tab.active {
    color: var(--color-primary, #005f9e);
    border-bottom-color: var(--color-primary, #005f9e);
}

.rds-v3d-menu-content {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: var(--space-3, 12px);
}

/* V3D.8 — compact analysis tab */
.rds-v3d-menu-content > .rds-v3d-analysis-panel {
    min-height: 100%;
}

.rds-v3d-analysis-panel {
    display: flex;
    flex-direction: column;
    gap: var(--space-2, 8px);
    min-height: 0;
}

.rds-v3d-analysis-panel .rds-analysis-topbar {
    padding: 6px 8px;
}

.rds-v3d-analysis-panel .rds-analysis-topbar-actions {
    display: none;
}

.rds-analysis-topbar--v3d {
    flex-wrap: wrap;
    align-items: center;
}

.rds-analysis-topbar--v3d .rds-analysis-topbar-left {
    flex: 1;
    min-width: 0;
}

.rds-analysis-topbar--v3d .rds-analysis-topbar-right {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    margin-left: auto;
}

.rds-v3d-analysis-filter-select {
    max-width: 88px;
    min-width: 64px;
    font-size: 0.75rem;
    padding: 2px 4px;
    height: 28px;
}

.rds-v3d-analysis-config-card,
.rds-v3d-analysis-section-card {
    flex-shrink: 0;
}

.rds-v3d-deviation-header {
    display: flex;
    align-items: center;
    gap: var(--space-2, 8px);
    cursor: default;
}

.rds-v3d-deviation-header-main {
    display: flex;
    align-items: center;
    gap: var(--space-6, 6px);
    flex: 1;
    min-width: 0;
    cursor: pointer;
}

.rds-v3d-deviation-header-actions {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
}

.rds-v3d-deviation-action-btn {
    width: 25px;
    height: 25px;
    min-width: 25px;
    padding: 0;
}

.rds-v3d-paint-bucket--fixed i {
    /* Inline style sets icon to selected fixed color; button chrome stays standard. */
}

.rds-v3d-label-color-menu {
    background: var(--color-grey-50, #fafafa);
    border-bottom: 1px solid var(--color-border-subtle, #e0e0e0);
    padding: 4px var(--space-12, 12px) 8px;
}

.rds-v3d-label-color-mode {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 6px 4px;
    border: none;
    background: transparent;
    font-size: 0.8125rem;
    color: var(--color-text-primary, #1a1a1a);
    cursor: pointer;
    text-align: left;
    border-radius: var(--radius-small, 4px);
}

.rds-v3d-label-color-mode:hover {
    background: var(--color-grey-100, #f0f0f0);
}

.rds-v3d-label-color-mode.active {
    font-weight: 600;
    color: var(--color-primary, #005f9e);
}

.rds-v3d-label-color-mode .bi-check2 {
    flex-shrink: 0;
    width: 14px;
    font-size: 0.85rem;
}

.rds-v3d-label-color-mode-spacer {
    display: inline-block;
    width: 14px;
    flex-shrink: 0;
}

.rds-v3d-label-color-divider {
    height: 1px;
    margin: 4px 0 6px;
    background: var(--color-border-subtle, #e0e0e0);
}

.rds-v3d-label-color-fixed-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 2px 0;
}

.rds-v3d-label-color-option {
    position: relative;
    width: 20px;
    height: 20px;
    min-width: 20px;
    padding: 0;
    border-radius: 50%;
    border: 2px solid transparent;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.rds-v3d-label-color-option.active {
    border-color: var(--color-primary, #005f9e);
    box-shadow: 0 0 0 1px var(--color-surface, #fff);
}

.rds-v3d-label-color-option .bi-check2 {
    font-size: 0.65rem;
    color: #fff;
    text-shadow: 0 0 2px rgba(0, 0, 0, 0.6);
}

.rds-v3d-analysis-panel .infomodel-card-header .infomodel-card-title {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--color-primary, #005f9e);
    text-transform: none;
    letter-spacing: normal;
}

.rds-v3d-analysis-config-card.infomodel-card--collapsed .infomodel-card-body,
.rds-v3d-analysis-section-card.infomodel-card--collapsed .infomodel-card-body {
    display: none;
}

.rds-v3d-analysis-config {
    flex-shrink: 0;
}

.rds-v3d-analysis-config-summary {
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--color-text-secondary, #666);
    padding: 4px 0;
    user-select: none;
}

.rds-v3d-analysis-config-body {
    margin-top: var(--space-2, 8px);
    padding: var(--space-3, 12px);
}

.rds-v3d-analysis-section-card {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.rds-v3d-analysis-chart-body {
    flex: 1;
    min-height: 160px;
    padding: var(--space-2, 8px);
    display: flex;
    flex-direction: column;
    gap: var(--space-2, 8px);
    overflow: auto;
}

.rds-v3d-analysis-empty {
    padding: var(--space-3, 12px);
    font-size: 0.85rem;
}

.rds-v3d-analysis-panel .rds-analysis-dist-mode {
    flex-wrap: wrap;
}

.rds-v3d-analysis-panel .rds-analysis-bucket-filter-chips {
    flex-wrap: wrap;
}

/* V3D analysis KPI row — bottom of panel, 2 columns */
.rds-v3d-analysis-kpis {
    flex-shrink: 0;
    margin-top: auto;
    padding-top: var(--space-2, 8px);
}

.rds-v3d-analysis-kpis .rds-indicator-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    align-items: stretch;
}

.rds-v3d-analysis-kpis .rds-indicator-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 8px;
    padding: 8px 10px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 4px;
    min-height: 56px;
    box-shadow: var(--shadow-sm);
}

.rds-v3d-analysis-kpis .rds-indicator-label {
    font-size: 0.75rem;
    line-height: 1.2;
    color: var(--color-text-muted);
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}

.rds-v3d-analysis-kpis .rds-indicator-value {
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--color-text-primary);
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}

.rds-v3d-analysis-kpis .rds-indicator-card.rds-analysis-bucket-strong-red,
.rds-v3d-analysis-kpis .rds-indicator-card.rds-analysis-bucket-medium-red,
.rds-v3d-analysis-kpis .rds-indicator-card.rds-analysis-bucket-light-red,
.rds-v3d-analysis-kpis .rds-indicator-card.rds-analysis-bucket-green,
.rds-v3d-analysis-kpis .rds-indicator-card.rds-analysis-bucket-medium-yellow,
.rds-v3d-analysis-kpis .rds-indicator-card.rds-analysis-bucket-strong-yellow,
.rds-v3d-analysis-kpis .rds-indicator-card.rds-analysis-bucket-orange {
    color: inherit;
}

.rds-v3d-column-label {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-text-secondary, #666);
    padding: var(--space-2, 8px) var(--space-3, 12px);
    border-bottom: 1px solid var(--color-border-subtle, #e0e0e0);
    flex-shrink: 0;
}

.rds-v3d-placeholder {
    padding: var(--space-3, 12px);
    font-size: 0.85rem;
}

.rds-v3d-selection-hint {
    padding: var(--space-2, 8px) var(--space-3, 12px);
    font-size: 0.8rem;
    border-top: 1px solid var(--color-border-subtle, #e0e0e0);
}

/* Requirements card — Phase 2 classification + property sections */
.rds-req-section {
    margin-top: var(--space-3, 12px);
}

.rds-req-section:first-child {
    margin-top: 0;
}

.rds-req-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2, 8px);
    margin-bottom: var(--space-2, 8px);
}

.rds-req-section-title {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-text-secondary, #666);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.rds-req-nested-card > .app-card.infomodel-card {
    box-shadow: none;
    border: none;
    margin: 0;
    background: transparent;
}

.rds-req-nested-card > .app-card.infomodel-card > .infomodel-card-header {
    padding: 0 0 var(--space-2, 8px);
    border: none;
    cursor: default;
    min-height: auto;
}

.rds-req-nested-card > .app-card.infomodel-card > .infomodel-card-header .infomodel-card-chevron,
.rds-req-nested-card > .app-card.infomodel-card > .infomodel-card-header .infomodel-card-title,
.rds-req-nested-card > .app-card.infomodel-card > .infomodel-card-header .infomodel-card-badge {
    display: none;
}

.rds-class-req-row-actions {
    display: inline-flex;
    gap: var(--space-1, 4px);
    align-items: center;
}

/* BCF topics panel (Views & Communication) */
.rds-bcf-topics-header {
    display: flex;
    flex-direction: column;
    gap: var(--space-1, 4px);
    min-width: 0;
}

.rds-bcf-topics-header-main {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.rds-bcf-topics-primary-title {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-bcf-topics-header-badges,
.rds-bcf-topics-row-badges {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-1, 4px);
    align-items: center;
}

.rds-bcf-topics-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.rds-bcf-topics-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-2, 8px);
    padding: var(--space-2, 8px) var(--space-1, 4px);
    border-bottom: 1px solid var(--border-subtle, #e5e7eb);
    cursor: pointer;
}

.rds-bcf-topics-row:last-child {
    border-bottom: none;
}

.rds-bcf-topics-row:hover {
    background: var(--surface-hover, rgba(0, 0, 0, 0.03));
}

.rds-bcf-topics-row-main {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.rds-bcf-topics-row-title {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rds-bcf-topics-primary-label {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    color: var(--text-muted, #6b7280);
}

.rds-bcf-primary-star {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--text-muted, #6b7280);
    cursor: pointer;
    line-height: 1;
}

.rds-bcf-primary-star:disabled {
    cursor: default;
}

.rds-bcf-primary-star--active,
.rds-bcf-primary-star:not(:disabled):hover {
    color: #f59e0b;
}

/* P-12: skeleton placeholders shown while session/bootstrap completes on first render */
.workspace-init-skeleton {
    padding: 1rem;
}

.workspace-init-skeleton--center {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 1.5rem;
}

.workspace-init-skeleton__tabs {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.5rem;
    margin-top: auto;
}

.workspace-init-skeleton--right {
    padding: 1rem 0.75rem;
}

