/* ============================================================
   servers.css — Servers list page and Server Detail page
   Follows the same no-bounce layout rules as loops.css.
   All srv-* layout classes live here.
   ============================================================ */

/* ── Page shell (same pattern as .sl-page in loops.css) ── */
.srv-page {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 8rem);
    overflow: hidden;
    max-width: 1700px;
    margin: 0 auto;
    padding: 0 var(--space-4);
}

.srv-header-row {
    flex: 0 0 auto;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: var(--space-3) 0 var(--space-2) 0;
    gap: 16px;
}

.srv-title {
    margin: 0 0 2px 0;
    font-size: 1.4rem;
    font-weight: 700;
    line-height: 1.2;
}

.srv-header-surface {
    flex: 0 0 auto;
    background: var(--mud-palette-surface);
    border: 1px solid var(--riq-surface-border);
    border-radius: 8px;
    padding: 10px 14px 8px 14px;
    margin-top: 4px;
}

.srv-tab-bar {
    flex: 0 0 auto;
    margin-top: 8px;
}

.srv-filter-bar {
    flex: 0 0 auto;
    min-height: 52px;
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    align-items: center;
    gap: 8px;
    padding: 6px 0 6px 0;
    /* hide scrollbar but keep scrollability */
    scrollbar-width: none;
}

/* ── Body + scroll (no-bounce rule: ONE overflow-y:auto child) ── */
.srv-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.srv-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
}

/* ── Server row grid ─────────────────────────────────────────
   Columns: dot | hostname | type | seg | loop | location | vendor | cores | ram | crm | scripts | clients | seats | flags
   Type col widened to 88px for "Application" / "Soft Switch". RAM col widened for "XX GB".
   ── */
.srv-header-row-grid,
.srv-server-row {
    display: grid;
    grid-template-columns: var(--col-dot) 200px var(--col-type) 52px var(--col-id) var(--col-location) var(--col-vendor) var(--col-cores) var(--col-ram) 220px 220px 52px 52px minmax(var(--col-flags), 1fr);
    align-items: center;
    gap: 0 10px;
    padding: 0 8px;
    min-width: 0;
}

.srv-header-row-grid {
    padding: 4px 8px;
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--mud-palette-surface);
    border-bottom: 1px solid var(--riq-surface-border);
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
}

.srv-server-row {
    padding: 5px 8px;
    border-bottom: 1px solid color-mix(in srgb, var(--riq-surface-border) 60%, transparent);
    font-size: 0.78rem;
    transition: background-color 0.1s;
}

.srv-server-row:hover {
    background: var(--mud-palette-action-hover);
}

/* Sortable header column */
.srv-sort-col {
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 3px;
    user-select: none;
}
.srv-sort-col:hover {
    color: var(--mud-palette-text-primary);
}

/* ── Status dot ── */
.srv-status-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}
.dot-healthy        { background: #10b981; }   /* green */
.dot-critical       { background: #ef4444; }   /* red — critical severity */
.dot-warning        { background: #f59e0b; }   /* amber — warning severity */
.dot-advisory       { background: #0097a7; }   /* teal — advisory severity (matches flag-advisory icon color) */
.dot-procuring      { background: #a78bfa; }   /* violet — procuring state */
.dot-readyforprov   { background: #818cf8; }   /* indigo — ready for provisioning */
.dot-provisioning   { background: #38bdf8; }   /* sky — provisioning state */
.dot-neutral        { background: #94a3b8; }   /* slate — info / decommissioned / inventory */

/* ── Hostname link ── */
.srv-hostname {
    font-family: var(--riq-mono-font, monospace);
    font-size: 0.75rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: var(--mud-palette-primary);
    text-decoration: none;
}
.srv-hostname:hover { text-decoration: underline; }

/* ── Type badge ── */
.tbadge {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
}
.tbadge-ss        { background: #7c3aed22; color: #7c3aed; border: 1px solid #7c3aed55; }
.tbadge-app       { background: #0097a722; color: #0097a7; border: 1px solid #0097a755; }
.tbadge-ingress   { background: #f9731622; color: #ea6b0e; border: 1px solid #f9731655; }
.tbadge-dialer    { background: #f59e0b22; color: #b45309; border: 1px solid #f59e0b55; }
.tbadge-reporting { background: #2563eb22; color: #2563eb; border: 1px solid #2563eb55; }
.tbadge-inventory { background: #10b98122; color: #059669; border: 1px solid #10b98155; }
.tbadge-other     { background: #94a3b822; color: #64748b; border: 1px solid #94a3b855; }

/* ── Phys cores highlight ── */
.cores-hyper {
    color: #0097a7;
    font-weight: 600;
}

/* ── Group sections (By Status tab) — reuse sl-group-* selectors from loops.css ── */
.srv-group-label { font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }

/* Extra border colors not in loops.css */
.border-violet   { border-left: 3px solid #a78bfa !important; }
.border-indigo   { border-left: 3px solid #818cf8 !important; }
.border-sky      { border-left: 3px solid #38bdf8 !important; }
.border-slate    { border-left: 3px solid #94a3b8 !important; }
.border-advisory { border-left: 3px solid #0097a7 !important; }

/* ── Version pill (CRM / Scripts version display) ── */
.ver-pill {
    display: inline-block;
    padding: 1px 5px;
    border-radius: 4px;
    font-size: 0.67rem;
    font-family: var(--riq-mono-font, monospace);
    background: var(--mud-palette-action-hover);
    border: 1px solid var(--riq-surface-border);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}
.ver-pill-dash { opacity: 0.4; }
.ver-mismatch  { background: rgba(239,68,68,0.14);   color: #ef4444; border-color: rgba(239,68,68,0.35); }

/* Per-version palette — hash(version) % 8 picks a slot. Same version string → same color always. */
.ver-v0 { background: rgba(14,165,233,0.13);  color: #0ea5e9; border-color: rgba(14,165,233,0.35); }
.ver-v1 { background: rgba(59,130,246,0.13);  color: #3b82f6; border-color: rgba(59,130,246,0.35); }
.ver-v2 { background: rgba(139,92,246,0.13);  color: #8b5cf6; border-color: rgba(139,92,246,0.35); }
.ver-v3 { background: rgba(132,204,22,0.13);  color: #65a30d; border-color: rgba(132,204,22,0.35);  }
.ver-v4 { background: rgba(249,115,22,0.13);  color: #f97316; border-color: rgba(249,115,22,0.35); }
.ver-v5 { background: rgba(6,182,212,0.13);   color: #06b6d4; border-color: rgba(6,182,212,0.35);  }
.ver-v6 { background: rgba(99,102,241,0.13);  color: #6366f1; border-color: rgba(99,102,241,0.35); }
.ver-v7 { background: rgba(16,185,129,0.13);  color: #10b981; border-color: rgba(16,185,129,0.35); }

/* ── Status group header counts pill ── */
.srv-group-count {
    font-size: 0.68rem;
    background: var(--riq-surface-border);
    padding: 1px 6px;
    border-radius: 10px;
    color: var(--mud-palette-text-secondary);
}

/* ── Server Detail page ── */
.srv-detail-page {
    max-width: 1400px;
    margin: 0 auto;
    padding: var(--space-4);
}

.srv-detail-header {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: var(--space-3) 0 var(--space-2) 0;
    border-bottom: 1px solid var(--riq-surface-border);
    margin-bottom: var(--space-4);
}

.srv-detail-hostname {
    font-family: var(--riq-mono-font, monospace);
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.2;
}

.srv-detail-fqdn {
    font-family: var(--riq-mono-font, monospace);
    font-size: 0.8rem;
    color: var(--mud-palette-text-secondary);
    margin-top: 2px;
}

.srv-detail-meta {
    font-size: 0.78rem;
    color: var(--mud-palette-text-secondary);
    margin-top: 4px;
}

/* Banner states */
.srv-banner-decomm {
    background: #fef3c7;
    border: 1px solid #f59e0b55;
    border-radius: 6px;
    padding: 8px 14px;
    margin-bottom: 12px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.82rem;
    color: #92400e;
}
.srv-banner-provisioning {
    background: #e0f2fe;
    border: 1px solid #38bdf855;
    border-radius: 6px;
    padding: 8px 14px;
    margin-bottom: 12px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.82rem;
    color: #0369a1;
}

/* Dark mode banners */
@media (prefers-color-scheme: dark) {
    .srv-banner-decomm {
        background: #451a0322;
        color: #fde68a;
    }
    .srv-banner-provisioning {
        background: #0c4a6e22;
        color: #7dd3fc;
    }
}

/* Card grid (used by loading skeleton only now) */
.srv-detail-cards {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 16px;
}
.srv-card-full { grid-column: 1 / -1; }

/* ── Hero strip ──────────────────────────────────────────────────────────────
   Full-width summary bar: Version | Clients | Status/Flags | Hardware
   Same visual language as the loop page stat tiles.
   ─────────────────────────────────────────────────────────────────────────── */
.srv-hero-strip {
    display: flex;
    align-items: stretch;
    background: var(--mud-palette-surface);
    border: 1px solid var(--riq-surface-border);
    border-radius: 8px;
    margin-bottom: 16px;
    overflow: hidden;
    min-height: 80px;
}

.srv-hero-zone {
    flex: 1;
    padding: 12px 18px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

/* Flags zone gets more room to accommodate multiple badge pills */
.srv-hero-flags-zone {
    flex: 1.4;
}

.srv-hero-divider {
    width: 1px;
    background: var(--riq-surface-border);
    flex-shrink: 0;
    margin: 10px 0;
}

.srv-hero-zone-label {
    font-size: 0.66rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--mud-palette-text-secondary);
    margin-bottom: 2px;
}

.srv-hero-stats {
    display: flex;
    gap: 20px;
    align-items: baseline;
}

/* Large numeric stat — same family as srv-hw-value */
.srv-hero-bignum {
    font-size: 1.9rem;
    font-weight: 700;
    line-height: 1;
    color: var(--mud-palette-text-primary);
}

/* Version stats — monospace, slightly smaller */
.srv-hero-bignum-mono {
    font-family: var(--riq-mono-font, monospace);
    font-size: 1.4rem;
    font-weight: 700;
    line-height: 1;
    color: var(--mud-palette-text-primary);
}

.srv-hero-label {
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
    margin-top: 3px;
}

.srv-hero-sub {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
    margin-top: auto;
    padding-top: 4px;
}

/* Version mismatch colouring (flag-critical shade) */
.srv-hero-mismatch { color: #ef4444; }

/* Capacity sub-text severity */
.srv-hero-sub-critical { color: #ef4444; }
.srv-hero-sub-warning  { color: #b45309; }

/* Healthy indicator in flags zone */
.srv-hero-healthy {
    display: flex;
    align-items: center;
    gap: 6px;
    color: #10b981;
    font-size: 0.85rem;
    font-weight: 600;
    margin-top: 4px;
}

/* Flag badge pills in flags zone */
.srv-hero-flag-list {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    align-items: center;
    margin-top: 4px;
}

.srv-hero-flag-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 4px;
    background: var(--mud-palette-action-hover);
    border: 1px solid var(--riq-surface-border);
    font-size: 0.72rem;
}

/* ── Section layout (replaces old .srv-detail-cards grid) ─────────────────── */
.srv-detail-sections {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* ROW 1: Identity (1fr) | Anomalies (1fr) */
.srv-row-top {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    align-items: start;
}

/* ROW 7: LTCEs (left) + Notes (right) equal halves */
.srv-row-bottom {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    align-items: start;
}

/* Anomaly list */
.srv-anomaly-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 8px 0;
    border-bottom: 1px solid var(--riq-surface-border);
}
.srv-anomaly-row:last-child { border-bottom: none; }
.srv-anomaly-critical { border-left: 3px solid #ef4444; padding-left: 10px; }
.srv-anomaly-warning  { border-left: 3px solid #f59e0b; padding-left: 10px; }
.srv-anomaly-advisory { border-left: 3px solid #0097a7; padding-left: 10px; }
.srv-anomaly-info     { border-left: 3px solid #64748b; padding-left: 10px; }

/* Hardware value display */
.srv-hw-value {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1;
    color: var(--mud-palette-text-primary);
}
.srv-hw-value-hyper { color: #0097a7; }
.srv-hw-label {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
    margin-top: 2px;
}

/* Notes section */
.srv-notes-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.srv-note-item {
    padding: 8px 10px;
    background: var(--mud-palette-action-hover);
    border-radius: 6px;
    font-size: 0.8rem;
}
.srv-note-meta {
    font-size: 0.7rem;
    color: var(--mud-palette-text-secondary);
    margin-bottom: 3px;
}

/* Clients table */
.srv-clients-table {
    width: 100%;
    font-size: 0.78rem;
    border-collapse: collapse;
}
.srv-clients-table th {
    text-align: left;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
    padding: 4px 8px;
    border-bottom: 1px solid var(--riq-surface-border);
}
.srv-clients-table td {
    padding: 5px 8px;
    border-bottom: 1px solid color-mix(in srgb, var(--riq-surface-border) 50%, transparent);
}
.srv-clients-table tr:last-child td { border-bottom: none; }

/* Reserved match indicators */
.reserved-match    { color: #10b981; font-weight: 600; }
.reserved-mismatch { color: #ef4444; font-weight: 600; }
.reserved-shared   { color: var(--mud-palette-text-secondary); font-style: italic; }

/* ── Header actions panel (right side of detail page header) ── */
.srv-header-actions {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
    flex-shrink: 0;
}

/* Subtle text-link action (e.g. "→ Loop N") */
.srv-detail-action-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.78rem;
    color: var(--mud-palette-primary);
    text-decoration: none;
    padding: 3px 8px;
    border-radius: 4px;
    border: 1px solid transparent;
    transition: background 0.1s, border-color 0.1s;
}
.srv-detail-action-link:hover {
    background: var(--mud-palette-action-hover);
    border-color: var(--riq-surface-border);
    text-decoration: none;
}

/* Subtle toggle button (provisioning toggle) */
.srv-detail-action-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.78rem;
    font-family: inherit;
    color: var(--mud-palette-text-secondary);
    background: transparent;
    border: 1px solid var(--riq-surface-border);
    border-radius: 4px;
    padding: 3px 8px;
    cursor: pointer;
    transition: background 0.1s, color 0.1s;
}
.srv-detail-action-btn:hover:not(:disabled) {
    background: var(--mud-palette-action-hover);
    color: var(--mud-palette-text-primary);
}
.srv-detail-action-btn:disabled { opacity: 0.4; cursor: default; }

/* ── Client status pills ── */
.cs-pill {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 10px;
    font-size: 0.68rem;
    font-weight: 600;
}
.cs-pill-paid  { background: #0097a722; color: #0097a7; border: 1px solid #0097a755; }
.cs-pill-trial { background: #2563eb22; color: #2563eb; border: 1px solid #2563eb55; }

/* ── Loop siblings ── */
.srv-siblings-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.srv-sibling-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 8px;
    border-bottom: 1px solid color-mix(in srgb, var(--riq-surface-border) 60%, transparent);
    font-size: 0.8rem;
}
.srv-sibling-row:last-child { border-bottom: none; }
.srv-sibling-you { background: color-mix(in srgb, #0097a7 8%, transparent); }
.srv-sibling-you-badge {
    display: inline-block;
    padding: 0px 6px;
    border-radius: 4px;
    font-size: 0.66rem;
    font-weight: 700;
    background: #0097a722;
    color: #0097a7;
    border: 1px solid #0097a755;
}

/* ── Disk table ── */
.srv-disk-table {
    width: 100%;
    font-size: 0.76rem;
    border-collapse: collapse;
    margin-top: 8px;
}
.srv-disk-table th {
    text-align: left;
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
    padding: 3px 6px;
    border-bottom: 1px solid var(--riq-surface-border);
}
.srv-disk-table td {
    padding: 4px 6px;
    border-bottom: 1px solid color-mix(in srgb, var(--riq-surface-border) 40%, transparent);
    font-family: var(--riq-mono-font, monospace);
}
.srv-disk-table tr:last-child td { border-bottom: none; }

/* ── Deployment + Move history tables ── */
.srv-deploy-table,
.srv-move-table {
    width: 100%;
    font-size: 0.78rem;
    border-collapse: collapse;
    margin-bottom: 8px;
}
.srv-deploy-table th,
.srv-move-table th {
    text-align: left;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
    padding: 4px 8px;
    border-bottom: 1px solid var(--riq-surface-border);
}
.srv-deploy-table td,
.srv-move-table td {
    padding: 5px 8px;
    border-bottom: 1px solid color-mix(in srgb, var(--riq-surface-border) 50%, transparent);
}
.srv-deploy-table tr:last-child td,
.srv-move-table tr:last-child td { border-bottom: none; }

/* Current deployment row highlight */
.srv-current-row { background: color-mix(in srgb, #0097a7 8%, transparent); }
.srv-current-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 0 5px;
    border-radius: 4px;
    font-size: 0.65rem;
    font-weight: 700;
    background: #0097a722;
    color: #0097a7;
    border: 1px solid #0097a755;
}

/* Move direction badges */
.srv-move-badge-arrived {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 4px;
    font-size: 0.72rem;
    font-weight: 600;
    background: #0097a722;
    color: #0097a7;
    border: 1px solid #0097a755;
}
.srv-move-badge-departed {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 4px;
    font-size: 0.72rem;
    font-weight: 600;
    background: #f59e0b22;
    color: #b45309;
    border: 1px solid #f59e0b55;
}
.srv-move-comment-badge {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 4px;
    font-size: 0.68rem;
    font-weight: 600;
    background: #2563eb22;
    color: #2563eb;
    border: 1px solid #2563eb55;
}

/* ── Pagination ── */
.srv-pagination {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: 8px 0 4px 0;
}
.srv-pagination button {
    padding: 3px 10px;
    border-radius: 4px;
    font-size: 0.75rem;
    cursor: pointer;
    border: 1px solid var(--riq-surface-border);
    background: transparent;
    color: var(--mud-palette-text-primary);
}
.srv-pagination button:hover:not(:disabled) { background: var(--mud-palette-action-hover); }
.srv-pagination button:disabled { opacity: 0.4; cursor: default; }
.srv-pagination button.active {
    background: var(--mud-palette-primary);
    color: #fff;
    border-color: var(--mud-palette-primary);
}
.srv-pagination-footer {
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
}

/* ── Cost & Contract ── */
.srv-cost-badge-owned {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 4px;
    font-size: 0.72rem;
    font-weight: 600;
    background: #0097a722;
    color: #0097a7;
    border: 1px solid #0097a755;
}
.srv-expiry-warning { color: #b45309; }
.srv-expiry-expired { color: #ef4444; }
.srv-expiry-badge-warning {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 4px;
    font-size: 0.68rem;
    font-weight: 600;
    background: #f59e0b22;
    color: #b45309;
    border: 1px solid #f59e0b55;
}
.srv-expiry-badge-expired {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 4px;
    font-size: 0.68rem;
    font-weight: 600;
    background: #ef444422;
    color: #ef4444;
    border: 1px solid #ef444455;
}

/* ── Card subtitle (e.g. "Via Tranche #N · shared with X others") ── */
.srv-card-subtitle {
    font-size: 0.73rem;
    color: var(--mud-palette-text-secondary);
    margin-bottom: 8px;
}

/* ── Filter chips — row loading skeleton ── */
.srv-skeleton-row {
    display: grid;
    grid-template-columns: var(--col-dot) 200px var(--col-type) 52px var(--col-id) var(--col-location) var(--col-vendor) var(--col-cores) var(--col-ram) 220px 220px 52px 52px minmax(var(--col-flags), 1fr);
    gap: 0 10px;
    padding: 5px 8px;
    border-bottom: 1px solid color-mix(in srgb, var(--riq-surface-border) 60%, transparent);
}

/* ═══════════════════════════════════════════════════════════════
   Contract Management page — grid layouts and lifecycle badges
   ═══════════════════════════════════════════════════════════════ */

/* ── Contract Management grid — All tab ── */
.cm-header-row-grid,
.cm-row-grid {
    display: grid;
    grid-template-columns: var(--col-dot) 120px var(--col-type) var(--col-cores) var(--col-ram) var(--col-id) 130px var(--col-location) var(--col-vendor) 90px 1fr;
    align-items: center;
    gap: 0 8px;
    padding: 0 8px;
    min-width: 0;
}
.cm-header-row-grid {
    padding: 4px 8px;
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--mud-palette-surface);
    border-bottom: 1px solid var(--riq-surface-border);
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
}
.cm-row-grid {
    padding: 5px 8px;
    border-bottom: 1px solid color-mix(in srgb, var(--riq-surface-border) 60%, transparent);
    font-size: 0.78rem;
    transition: background-color 0.1s;
}
.cm-row-grid:hover { background: var(--mud-palette-action-hover); }

/* ── Contract Management group table (By Status tab) ── */
.cm-group-table {
    padding: 0 0 4px 0;
}
.cm-group-header,
.cm-group-row {
    display: grid;
    grid-template-columns: var(--col-dot) 120px var(--col-type) var(--col-cores) var(--col-ram) var(--col-id) 100px var(--col-location) var(--col-vendor) 90px;
    align-items: center;
    gap: 0 8px;
    padding: 0 8px;
    min-width: 0;
}
.cm-group-header {
    padding: 4px 8px;
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
    border-bottom: 1px solid var(--riq-surface-border);
}
.cm-group-row {
    padding: 5px 8px;
    font-size: 0.78rem;
    border-bottom: 1px solid color-mix(in srgb, var(--riq-surface-border) 60%, transparent);
    transition: background-color 0.1s;
}
.cm-group-row:hover { background: var(--mud-palette-action-hover); }

/* Group cost label in collapsed header */
.cm-group-cost {
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--mud-palette-text-secondary);
    margin-left: auto;
    padding-right: 8px;
}

/* Placeholder cost visual hint */
.cm-placeholder-cost {
    color: #f59e0b;
    font-style: italic;
}

/* ── Lifecycle status badges ── */
.lc-badge {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1.4;
    white-space: nowrap;
}
.lc-unknown        { background: #ef4444; color: #fff; }
.lc-procuring      { background: #a78bfa; color: #2e1065; }
.lc-readyforprov   { background: #818cf8; color: #1e1b4b; }
.lc-provisioning   { background: #38bdf8; color: #0c4a6e; }
.lc-certpending    { background: #f59e0b; color: #78350f; }
.lc-certified      { background: #10b981; color: #064e3b; }
.lc-decommissioned { background: #94a3b8; color: #1e293b; }

/* ── Inline lifecycle select (Contract Management) ── */
.cm-lifecycle-select {
    margin: -4px 0;
}
.cm-lifecycle-select .mud-input-slot {
    font-size: 0.72rem !important;
    padding: 1px 4px !important;
    min-height: unset !important;
}
.cm-lifecycle-select .mud-select-input {
    padding: 0 !important;
}

/* ── Cert-pending status dot ── */
.dot-certpending { background-color: #f59e0b; }
