/* Utility / helper classes. */

/* === Utility classes ================================================= */

/* Layout */
.flex { display: flex; }
.flex-grow { flex: 1; }
.flex-shrink-0 { flex-shrink: 0; }
.flex-end { display: flex; justify-content: flex-end; }
.flex-between { display: flex; justify-content: space-between; align-items: center; }
.flex-between-start { display: flex; justify-content: space-between; align-items: flex-start; }
.flex-between-baseline { display: flex; justify-content: space-between; align-items: baseline; }
.flex-row { display: flex; align-items: center; gap: var(--space-1); }
.flex-wrap-row { display: flex; flex-wrap: wrap; gap: var(--space-1); align-items: center; }
.inline-flex-row { display: inline-flex; align-items: center; gap: var(--space-0-5); }
.inline { display: inline; }
.hidden { display: none; }
.justify-center { justify-content: center; }

/* Text */
.text-primary { color: var(--color-text-primary); }
.text-secondary { color: var(--color-text-secondary); }
.text-accent { color: var(--color-accent); }
.text-success { color: var(--color-success); }
.text-danger { color: var(--color-danger); }
.text-warning { color: var(--color-warning); }
.text-sm { font-size: 0.8125rem; }
.text-xs { font-size: 0.75rem; color: var(--color-text-muted); }
.text-center { text-align: center; }
.text-right { text-align: right; }
.pre-wrap { white-space: pre-wrap; }

/* Spacing */
.m-0 { margin: 0; }
.mb-0 { margin-bottom: 0; }
.mx-auto { margin-left: auto; margin-right: auto; }
.mt-xs { margin-top: var(--space-0-5); }
.mt-sm { margin-top: var(--space-1); }
.mt-md { margin-top: var(--space-2); }
.mt-lg { margin-top: var(--space-3); }
.mb-xs { margin-bottom: var(--space-0-5); }
.mb-sm { margin-bottom: var(--space-1); }
.mb-md { margin-bottom: var(--space-2); }
.mb-lg { margin-bottom: var(--space-3); }
.ml-sm { margin-left: var(--space-1); }
.ml-md { margin-left: var(--space-2); }
.ml-auto { margin-left: auto; }
.p-0 { padding: 0; }
.p-md { padding: var(--space-2); }
.p-lg { padding: var(--space-3); }
.p-xl { padding: var(--space-4); }
.pt-sm { padding-top: var(--space-1); }
.pt-md { padding-top: var(--space-2); }
.pb-sm { padding-bottom: var(--space-1); }

/* Width */
.w-32 { width: 32px; }
.w-80 { width: 80px; }
.w-100 { width: 100px; }
.w-120 { width: 120px; }
.w-160 { width: 160px; }
.w-200 { width: 200px; }
.w-full { width: 100%; }
.w-auto { width: auto; }
.w-7em { width: 7em; }
.min-w-140 { min-width: 140px; }
.max-w-600 { max-width: 600px; }

/* Dynamic progress-bar width via CSS custom property */
.w-var { width: var(--bar-width, 0%); }
.bg-success { background: var(--color-success); }
.bg-panel-hover { background: var(--color-bg-panel-raised); }
.border-accent { border-color: var(--color-accent); }

/* Font weight */
.font-600 { font-weight: 600; }

/* Divider patterns */
.list-item-divider {
    margin-bottom: var(--space-3);
    padding-bottom: var(--space-3);
    border-bottom: 1px solid var(--color-border-subtle);
}
.divider-top {
    border-top: 1px solid var(--color-border-subtle);
    padding-top: var(--space-1);
    margin-top: var(--space-1);
}
.divider-bottom {
    border-bottom: 1px solid var(--color-border-subtle);
    padding-bottom: var(--space-2);
    margin-bottom: var(--space-2);
}

/* List and text utilities */
.list-unstyled { list-style: none; padding-left: 0; margin: 0; }

/* Dashboard row classes */
.dashboard-activity-row,
.dashboard-attention-row,
.dashboard-inbox-row {
    padding: var(--space-1) 0;
    border-bottom: 1px solid var(--color-border-subtle);
}
.dashboard-activity-row:last-child,
.dashboard-attention-row:last-child,
.dashboard-inbox-row:last-child {
    border-bottom: 0;
}

/* Shared order-cell / ship-select helpers (used by federation/members and shipyard). */
.order-cell {
    white-space: nowrap;
}

.order-cell .btn + .btn {
    margin-left: var(--space-0-5);
}

.ship-select {
    width: 100%;
    min-width: 180px;
}
