/* One presentation contract owns status pills in tables, cards, and detail pages. */
:root {
    --status-pill-width: 126px;
    --status-pill-min-height: 24px;
    --status-pill-font-size: 10px;
    --status-pill-font-weight: 750;
}

/* Unclassified commercial documents start with a neutral status surface. */
.quote-status {
    background: #eef2f5;
    color: var(--muted);
}

/* Semantic classes share one badge geometry; long labels wrap inside the fixed width. */
.app-main :is(
    .status,
    .status-pill,
    .status-indicator,
    .quote-status,
    .purchase-status,
    .project-status,
    .planning-project-status,
    .work-order-status,
    .absence-status,
    .presence,
    .dashboard-status,
    .warehouse-state,
    .stock-status,
    .view-active-state,
    .ledger-status,
    .automation-status,
    .data-exchange-status,
    .number-sequence-status
) {
    display: inline-flex;
    box-sizing: border-box;
    flex: 0 0 auto;
    width: var(--status-pill-width);
    min-height: var(--status-pill-min-height);
    align-items: center;
    justify-content: center;
    gap: 0;
    padding: 4px 8px;
    border: 1px solid rgba(18, 57, 93, 0.08);
    border-radius: 999px;
    box-shadow: 0 1px 2px rgba(7, 23, 39, 0.04);
    font-size: var(--status-pill-font-size);
    font-weight: var(--status-pill-font-weight);
    letter-spacing: 0;
    line-height: 1.35;
    text-align: center;
    text-transform: none;
    white-space: normal;
    overflow-wrap: anywhere;
}

/* Status text needs no extra decorative marker. */
.app-main .status::before {
    content: none;
}

/* Balance the long object lifecycle label so its complete leading phrase stays together. */
.app-main :is(.status-out_of_service, .quote-status.out_of_service) {
    text-wrap: balance;
}

/* Neutral master-data statuses use the same quiet surface as draft documents. */
.app-main .list-status-column > .status.status-neutral {
    background: #f5f7f9;
}
