/* Shift rules — eligibility rendering, obligation editor/progress, submission controls,
   shift module (mw-sm-*).
   Sections: shift module (mw-sm-*), shift template eligibility states,
   obligations editor (mw-sob-*), obligation progress (mw-sop-*),
   eligibility manage dialog (mw-ser-*), submission controls (mw-ssc-*). */

/* NOTE: === Shift module (mw-sm-*) === */

.mw-sm-root {
    border-radius: var(--mud-default-borderradius);
}

.mw-sm-locked {
    background: var(--mud-palette-background-gray);
}

.mw-sm-shifts {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 12px;
}

/* NOTE: === Shift template eligibility states (context styles on .mw-shift-template) === */

/* Rule color strip — inset bar on the leading edge, color from --mw-shift-rule-color */
.mw-shift-rule-colored .mw-shift-template {
    box-shadow: inset 4px 0 0 0 var(--mw-shift-rule-color);
}

/* Error severity — the user cannot take this shift */
.mw-shift-elig-blocked .mw-shift-template {
    filter: grayscale(0.85);
    opacity: 0.55;
    cursor: not-allowed;
}

/* Warning severity — takeable, but prominently flagged */
.mw-shift-elig-warning .mw-shift-template {
    outline: 2px dashed var(--mud-palette-warning);
    outline-offset: -2px;
}

/* Hint severity — icon only, no surface change */

/* NOTE: === Obligation progress (mw-sop-*) === */

.mw-sop-root {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin: 4px 0;
}

.mw-sop-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 2px 4px;
    border-radius: var(--mud-default-borderradius);
    font-size: 0.8rem;
}

.mw-sop-row .mw-sop-label {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mw-sop-team {
    color: var(--mud-palette-text-secondary);
    font-size: 0.7rem;
}

.mw-sop-count {
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.mw-sop-satisfied {
    background: color-mix(in srgb, var(--mud-palette-success) 8%, transparent);
}

.mw-sop-over {
    background: color-mix(in srgb, var(--mud-palette-error) 8%, transparent);
}

/* NOTE: === Submission controls (mw-ssc-*) === */

.mw-ssc-root {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 8px;
}

.mw-ssc-submitted {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-radius: var(--mud-default-borderradius);
    background: color-mix(in srgb, var(--mud-palette-success) 10%, transparent);
}

.mw-ssc-submitted-info {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
    line-height: 1.2;
}

.mw-ssc-submitted-label {
    font-size: 0.8rem;
    font-weight: 500;
}

.mw-ssc-submitted-time {
    font-size: 0.7rem;
    color: var(--mud-palette-text-secondary);
}

.mw-ssc-explainer {
    font-size: 0.7rem;
    color: var(--mud-palette-text-secondary);
    text-align: center;
}

/* NOTE: === Obligations editor (mw-sob-*) === */

.mw-sob-row {
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    padding: 8px;
    margin-bottom: 8px;
}

/* Top control row: severity + min/max + delete (label sits on its own line below). */
.mw-sob-top {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.mw-sob-sev {
    width: 150px;
    flex-shrink: 0;
}

.mw-sob-top .mw-sob-count {
    width: 96px;
    flex-shrink: 0;
}

.mw-sob-del {
    margin-left: auto;
}

.mw-sob-label {
    margin-bottom: 6px;
}

.mw-sob-filter {
    margin-top: 4px;
}

.mw-sob-filter-caption {
    display: block;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
    margin-bottom: 2px;
}

.mw-sob-filter-row {
    display: flex;
    align-items: flex-start;
    gap: 4px;
}

.mw-sob-filter-row > :first-child {
    flex: 1;
    min-width: 0;
}

.mw-sob-always {
    display: flex;
    align-items: center;
    gap: 8px;
}

.mw-sob-always-label {
    font-size: 0.8rem;
    color: var(--mud-palette-text-secondary);
    font-style: italic;
}

/* NOTE: === Team obligations picker (mw-obp-*) and single-obligation fields (mw-obf-*) === */

.mw-obp-root {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.mw-obp-card {
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    padding: 8px;
    margin-bottom: 4px;
}

.mw-obp-card-head,
.mw-obp-row-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
}

.mw-obp-attach {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 2px 0 8px;
}

.mw-obp-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
}

/* NOTE: === Eligibility rule management (mw-ser-*) === */

.mw-ser-rule {
    background: var(--mud-palette-background-gray);
}

.mw-ser-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.mw-ser-head .mw-ser-name {
    flex: 1;
}

.mw-ser-filter-caption {
    display: block;
    margin: 8px 0 4px;
    color: var(--mud-palette-text-secondary);
}

.mw-ser-delete {
    display: flex;
    justify-content: flex-end;
}

/* Color dot in rule pickers and menus */
.mw-ser-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    border: 1px solid var(--mud-palette-lines-default);
    margin-right: 6px;
    vertical-align: middle;
}

/* NOTE: === Shared rule identity fields (mw-rif-*) === */

.mw-rif-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.mw-rif-head .mw-rif-name {
    flex: 1;
    min-width: 0;
}

/* Obligation min/max row (mw-obf-*) */
.mw-obf-counts {
    display: flex;
    gap: 8px;
    margin-bottom: 4px;
}

.mw-obf-counts .mw-sob-count {
    width: 96px;
    flex-shrink: 0;
}

/* NOTE: === Single eligibility rule fields (mw-erf-*) === */

.mw-erf-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.mw-erf-head .mw-erf-name {
    flex: 1;
}

.mw-erf-filter-caption {
    display: block;
    margin: 8px 0 4px;
    color: var(--mud-palette-text-secondary);
}

/* NOTE: === Rules test page (mw-rt-*) === */

.mw-rt-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    align-items: start;
}

@media (max-width: 1100px) {
    .mw-rt-grid {
        grid-template-columns: 1fr;
    }
}

.mw-rt-section-title {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.mw-rt-shift-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    margin-bottom: 6px;
}

.mw-rt-shift-row.mw-rt-blocked {
    filter: grayscale(0.5);
    opacity: 0.7;
}

.mw-rt-shift-verdict {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 1;
    min-width: 0;
}

.mw-rt-shift-msg {
    font-size: 0.8rem;
    color: var(--mud-palette-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mw-rt-role-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.mw-rt-grid-3 {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 16px;
    align-items: start;
}

@media (max-width: 1400px) {
    .mw-rt-grid-3 {
        grid-template-columns: 1fr 1fr;
    }
}

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