/* Roster grid frame, rails, scroller, headers, and wage summary. */

.roster-grid {
    --roster-grid-row-height: calc(var(--roster-row-height) + 0.65rem);
    --roster-grid-columns: repeat(var(--roster-slot-count), minmax(4.6rem, 1.4fr) minmax(7.4rem, 2.2fr) minmax(3.8rem, 1fr));
    font-size: var(--roster-text-sm);
    width: 100%;
}

@media (min-width: 768px) and (max-width: 1199.98px) {
    html:has(.roster-grid-frame) {
        scrollbar-gutter: auto;
    }

    main.app-content:has(.roster-grid-frame) {
        padding-right: 0 !important;
    }

    .roster-layout-main {
        padding-right: 0;
    }

}

.roster-grid-frame[data-roster-end-times="true"] .roster-grid {
    --roster-grid-columns: repeat(var(--roster-slot-count), minmax(4.35rem, 1.25fr) minmax(4.35rem, 1.25fr) minmax(7.3rem, 2.45fr) minmax(4.2rem, 0.95fr));
}

.roster-wage-summary {
    display: inline-flex;
    flex: 0 1 auto;
    min-width: 0;
    max-width: 100%;
    align-items: center;
    gap: 0.4rem;
    padding: 0.36rem 0.68rem;
    border: 1px solid color-mix(in srgb, var(--app-accent) 28%, var(--app-border-subtle));
    border-radius: 999px;
    background: linear-gradient(135deg, color-mix(in srgb, var(--app-accent) 13%, transparent), var(--app-white-alpha-03));
    color: var(--app-text);
    box-shadow: inset 0 1px 0 var(--app-white-alpha-06);
    font-size: var(--roster-text-xs);
    font-weight: 800;
    letter-spacing: 0.01em;
    line-height: 1.15;
    white-space: nowrap;
}

.roster-wage-summary-label {
    color: var(--app-muted);
    font-weight: 700;
}

.roster-wage-summary-total {
    font-variant-numeric: tabular-nums;
}

.roster-day-wage-total {
    display: inline-flex;
    max-width: 100%;
    align-items: center;
    justify-content: center;
    gap: 0.28rem;
    padding: 0.12rem 0.38rem;
    border: 1px solid color-mix(in srgb, var(--app-accent) 20%, transparent);
    border-radius: 999px;
    background: color-mix(in srgb, var(--app-accent) 9%, transparent);
    color: color-mix(in srgb, var(--app-text) 78%, var(--app-muted));
    font-size: 0.68rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0;
    line-height: 1.05;
    white-space: nowrap;
}

.roster-day-wage-total-labeled {
    padding-inline: 0.48rem;
}

.roster-day-wage-label {
    color: var(--app-muted);
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.roster-grid-frame {
    --roster-day-column-width: 18%;
    --roster-wage-column-width: 5.7rem;
    --roster-grid-header-height: 3rem;
    --roster-grid-row-height: calc(var(--roster-row-height) + 0.65rem);
    --roster-shift-border-width: 3px;
    --roster-shift-edge-corner-radius: calc(var(--app-radius-lg) - 0.2rem);
    --roster-staff-highlight-fill: color-mix(in srgb, var(--app-accent) 32%, var(--app-surface));
    --roster-staff-highlight-cell-fill: color-mix(in srgb, var(--app-accent) 36%, var(--app-panel-bg));
    display: grid;
    grid-template-columns: minmax(0, var(--roster-day-column-width)) minmax(0, calc(100% - var(--roster-day-column-width)));
    width: calc(100% + 1px);
    max-width: calc(100% + 1px);
    contain: inline-size;
    overflow-y: hidden;
    background-color: var(--app-panel-bg);
}

.roster-grid-frame:not([data-roster-layout="day_columns"]) {
    overflow-x: hidden;
}

.roster-grid-frame[data-roster-wages="visible"] {
    grid-template-columns: minmax(0, var(--roster-day-column-width)) minmax(4.9rem, var(--roster-wage-column-width)) minmax(0, calc(100% - var(--roster-day-column-width) - var(--roster-wage-column-width)));
}

.roster-grid-frame[data-roster-visibility="hidden-draft"] {
    grid-template-columns: minmax(0, var(--roster-day-column-width)) minmax(0, calc(100% - var(--roster-day-column-width)));
}

.roster-day-rail,
.roster-wage-rail {
    min-width: 0;
    background-color: var(--app-panel-bg);
    z-index: 2;
}

.roster-day-rail {
    border-right: 1px solid var(--app-border);
}

.roster-wage-rail {
    border-right: 2px solid var(--app-border-strong);
}

.roster-day-rail-head,
.roster-wage-rail-head {
    height: var(--roster-grid-header-height);
    min-height: var(--roster-grid-header-height);
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.5rem;
    border-top: 1px solid var(--app-border);
    border-bottom: 1px solid var(--app-border-strong);
    background-color: var(--roster-subhead);
    color: var(--app-text);
    font-size: var(--roster-text-sm);
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.roster-day-rail-body,
.roster-wage-rail-body {
    min-width: 0;
}

.roster-slots-scroller {
    min-width: 0;
    overflow-x: hidden;
    overflow-y: hidden;
}

.roster-slots-grid {
    min-width: max(100%, calc(var(--roster-slot-count) * 15.8rem));
}

.roster-grid-frame[data-roster-end-times="true"] .roster-slots-grid {
    min-width: max(100%, calc(var(--roster-slot-count) * 20.2rem));
}

.roster-grid-frame[data-roster-visibility="hidden-draft"] .roster-slots-grid {
    min-width: 100%;
}

.roster-hidden-draft-grid {
    background-color: var(--app-panel-bg);
}

.roster-hidden-draft-grid-head {
    height: var(--roster-grid-header-height);
    min-height: var(--roster-grid-header-height);
    border-top: 1px solid var(--app-border);
    border-bottom: 1px solid var(--app-border-strong);
    background-color: var(--roster-subhead);
}

.roster-hidden-draft-grid-body {
    display: flex;
    min-height: calc(var(--roster-grid-row-height) * 7);
    align-items: center;
    justify-content: center;
    padding: 1rem;
    border-bottom: 1px solid var(--app-border);
    background: linear-gradient(180deg, var(--app-panel-bg), var(--app-surface-2));
}

.roster-hidden-draft-message {
    max-width: min(100%, 28rem);
    padding: 0.75rem 1rem;
    border: 1px dashed var(--app-border-strong);
    border-radius: var(--app-radius-lg);
    background-color: var(--app-surface);
    color: var(--app-muted);
    font-weight: 800;
    text-align: center;
}

.roster-grid [role="columnheader"],
.roster-grid [role="gridcell"] {
    min-width: 0;
    border-color: var(--app-border);
    box-sizing: border-box;
}

.roster-grid .roster-grid-head {
    border-top: 0;
}

.roster-grid .roster-grid-header-row {
    display: grid;
    grid-template-columns: var(--roster-grid-columns);
}

.roster-grid .roster-grid-head [role="columnheader"] {
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: 0.02em;
    text-align: center;
    border-right: 1px solid var(--app-border);
    border-bottom: 1px solid var(--app-border-strong);
}

.roster-grid .roster-grid-header-row-blocks {
    display: none;
}

.roster-grid .roster-grid-header-row-blocks [role="columnheader"] {
    height: var(--roster-grid-header-height);
    min-height: var(--roster-grid-header-height);
}

.roster-grid .roster-grid-header-row-subheads [role="columnheader"] {
    height: var(--roster-grid-header-height);
    min-height: var(--roster-grid-header-height);
}

.roster-grid .roster-block-header {
    background-color: var(--roster-header);
    color: var(--app-text);
    font-weight: 700;
    text-transform: uppercase;
}

.roster-grid .roster-grid-header-row-blocks .roster-block-header + .roster-block-header {
    border-left: 2px solid var(--app-border-strong);
}

.roster-column-edit-start,
.roster-column-edit-done,
.roster-slot-column-delete,
.roster-slot-column-add-form {
    display: none;
}
