.schedule-page {
    --schedule-blue: #2f6df6;
    --schedule-blue-soft: #eaf2ff;
    --schedule-purple: #a855f7;
    --schedule-green: #22c55e;
    --schedule-amber: #f59e0b;
    --schedule-red: #ef4444;
    --schedule-muted: #8b9ab0;
    --schedule-border: #dbe4ee;
}

.schedule-toolbar {
    align-items: center;
    background: #fff;
    border: 1px solid var(--schedule-border);
    border-radius: 12px;
    display: flex;
    flex-wrap: wrap;
    gap: .85rem;
    padding: .9rem 1rem;
}

.schedule-toolbar--flush {
    border-left: 0;
    border-radius: 0;
    border-right: 0;
    box-shadow: 0 2px 8px rgba(16, 24, 40, .03);
    margin-left: calc(var(--data-page-padding, 0px) * -1);
    margin-right: calc(var(--data-page-padding, 0px) * -1);
    padding-left: max(1rem, var(--data-page-padding, 1rem));
    padding-right: max(1rem, var(--data-page-padding, 1rem));
}

.schedule-toolbar select {
    background: #fff;
    border: 1px solid #cfd9e6;
    border-radius: 9px;
    color: #344154;
    min-height: 42px;
    padding: .55rem 2rem .55rem .8rem;
}

.schedule-team-select,
.schedule-period-control,
.schedule-segmented,
.schedule-icon-button {
    align-items: center;
    display: inline-flex;
}

.schedule-team-select {
    background: #f8fafc;
    border: 1px solid #dbe4ee;
    border-radius: 9px;
    color: var(--schedule-blue);
    gap: .5rem;
    min-height: 42px;
    padding: .55rem .8rem;
}

.schedule-toolbar__separator {
    background: #dbe4ee;
    height: 28px;
    width: 1px;
}

.schedule-period-control {
    background: #f1f5f9;
    border-radius: 10px;
    gap: .75rem;
    min-height: 42px;
    padding: .25rem .5rem;
}

.schedule-period-control strong {
    color: #172033;
    min-width: 150px;
    text-align: center;
}

.schedule-icon-button {
    border-radius: 8px;
    color: #64748b;
    height: 34px;
    justify-content: center;
    text-decoration: none;
    width: 34px;
}

.schedule-icon-button:hover {
    background: #fff;
    color: var(--schedule-blue);
}

.schedule-today-link {
    color: var(--schedule-blue);
    font-weight: 900;
    text-decoration: none;
}

.schedule-segmented {
    background: #eef2f7;
    border-radius: 9px;
    gap: .15rem;
    padding: .25rem;
}

.schedule-segmented a,
.schedule-segmented span,
.schedule-segmented strong {
    border-radius: 7px;
    color: #64748b;
    font-weight: 850;
    min-width: 76px;
    padding: .45rem .7rem;
    text-align: center;
    text-decoration: none;
}

.schedule-segmented strong {
    background: #fff;
    color: var(--schedule-blue);
}

.schedule-segmented a:hover {
    background: rgba(255, 255, 255, .65);
    color: var(--schedule-blue);
}

.schedule-legend {
    align-items: center;
    color: #64748b;
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    font-weight: 850;
}

.schedule-legend strong {
    color: #64748b;
    text-transform: uppercase;
}

.schedule-legend span {
    align-items: center;
    display: inline-flex;
    gap: .4rem;
}

.schedule-legend__dot {
    border-radius: 4px;
    display: inline-block;
    height: 13px;
    width: 13px;
}

.schedule-legend__dot--paid {
    background: #3b82f6;
}

.schedule-legend__dot--rtt {
    background: var(--schedule-purple);
}

.schedule-legend__dot--unpaid {
    background: #94a3b8;
}

.schedule-legend__dot--family {
    background: var(--schedule-green);
}

.schedule-legend__dot--pending {
    background: #fff;
    border: 2px dashed var(--schedule-amber);
}

.schedule-legend__dot--holiday {
    background: #fef3c7;
    border: 1px solid #facc15;
}

.schedule-card {
    background: #fff;
    border: 1px solid var(--schedule-border);
    border-radius: 14px;
    box-shadow: 0 8px 22px rgba(16, 24, 40, .04);
    overflow: hidden;
}

.schedule-grid-scroll {
    overflow-x: auto;
}

.schedule-grid {
    border-collapse: separate;
    border-spacing: 0;
    min-width: 1160px;
    width: 100%;
}

.schedule-grid th,
.schedule-grid td {
    border-bottom: 1px solid #edf2f7;
    border-right: 1px solid #edf2f7;
}

.schedule-grid th:last-child,
.schedule-grid td:last-child {
    border-right: 0;
}

.schedule-grid th {
    background: #f8fafc;
    color: #64748b;
    height: 86px;
    min-width: 135px;
    padding: .9rem .75rem;
    text-align: center;
    vertical-align: top;
}

.schedule-grid th:first-child,
.schedule-grid td:first-child {
    min-width: 240px;
    text-align: left;
}

.schedule-grid th:first-child {
    color: #64748b;
    font-size: .78rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.schedule-grid th span,
.schedule-grid th em {
    display: block;
}

.schedule-grid th span {
    font-size: .72rem;
    font-weight: 950;
    text-transform: uppercase;
}

.schedule-grid th strong {
    color: #334155;
    display: block;
    font-size: 1.25rem;
    line-height: 1;
    margin-top: .25rem;
}

.schedule-grid th em {
    color: var(--schedule-red);
    font-size: .72rem;
    font-style: normal;
    font-weight: 900;
    margin-top: .35rem;
}

.schedule-grid th.is-today,
.schedule-grid td.is-today {
    background: #fff7ed;
}

.schedule-grid th.has-conflict {
    background: #fef2f2;
}

.schedule-grid th.is-weekend,
.schedule-grid td.is-weekend {
    background: #f8fafc;
    color: #cbd5e1;
}

.schedule-grid td {
    height: 72px;
    padding: .55rem;
    vertical-align: middle;
}

.schedule-grid tbody tr:last-child td {
    border-bottom: 0;
}

.schedule-person {
    align-items: center;
    display: inline-flex;
    gap: .75rem;
}

.schedule-person .data-avatar {
    border-radius: 999px;
    flex-basis: 42px;
    height: 42px;
    width: 42px;
}

.schedule-person strong,
.schedule-person small {
    display: block;
}

.schedule-person strong {
    color: #172033;
    font-weight: 950;
}

.schedule-person small {
    color: var(--schedule-muted);
    font-weight: 750;
}

.schedule-event {
    align-items: center;
    border-radius: 5px;
    display: flex;
    font-size: .78rem;
    font-weight: 950;
    height: 28px;
    justify-content: center;
    text-decoration: none;
    width: 100%;
}

.schedule-event--paid {
    background: #3b82f6;
    color: #fff;
}

.schedule-event--rtt {
    background: var(--schedule-purple);
    color: #fff;
}

.schedule-event--family {
    background: var(--schedule-green);
    color: #fff;
}

.schedule-event--unpaid {
    background: #94a3b8;
    color: #fff;
}

.schedule-event--pending {
    background: #fff7ed;
    border: 2px dashed var(--schedule-amber);
    color: #78350f;
}

.schedule-month {
    min-width: 1020px;
}

.schedule-month--dense {
    min-width: 1180px;
}

.schedule-month__head,
.schedule-month__week {
    display: grid;
    grid-template-columns: repeat(7, minmax(120px, 1fr));
}

.schedule-month__head {
    background: #f8fafc;
    border-bottom: 1px solid #edf2f7;
}

.schedule-month__head span {
    color: #64748b;
    font-size: .76rem;
    font-weight: 950;
    letter-spacing: .06em;
    padding: .9rem .75rem;
    text-align: center;
    text-transform: uppercase;
}

.schedule-month__day {
    border-bottom: 1px solid #edf2f7;
    border-right: 1px solid #edf2f7;
    min-height: 138px;
    padding: .7rem;
}

.schedule-month--dense .schedule-month__day {
    min-height: 134px;
    padding: .65rem;
}

.schedule-month__day:nth-child(7n) {
    border-right: 0;
}

.schedule-month__week:last-child .schedule-month__day {
    border-bottom: 0;
}

.schedule-month__day > strong {
    align-items: center;
    background: #f1f5f9;
    border-radius: 999px;
    color: #334155;
    display: inline-flex;
    font-size: .82rem;
    height: 28px;
    justify-content: center;
    width: 28px;
}

.schedule-month__day.is-outside {
    background: #f8fafc;
    color: #cbd5e1;
}

.schedule-month__day.is-today {
    background: #fff7ed;
}

.schedule-month__day.is-today > strong {
    background: var(--schedule-blue);
    color: #fff;
}

.schedule-month__day.has-holiday {
    background: #fffbeb;
}

.schedule-month__day.has-closure {
    background: #fff1f2;
}

.schedule-month__events {
    display: grid;
    gap: .35rem;
    margin-top: .6rem;
}

.schedule-month__events .schedule-event {
    font-size: .72rem;
    height: auto;
    justify-content: flex-start;
    min-height: 26px;
    overflow: hidden;
    padding: .3rem .45rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.schedule-month__more {
    color: #64748b;
    font-size: .72rem;
    font-weight: 850;
    padding-left: .15rem;
}

.schedule-special {
    display: block;
    font-size: .76rem;
    font-weight: 900;
    line-height: 1.35;
    margin-top: .45rem;
}

.schedule-special b {
    border-radius: 5px;
    display: inline-flex;
    font-size: .68rem;
    font-weight: 950;
    margin-right: .25rem;
    padding: .1rem .3rem;
}

.schedule-special--holiday {
    color: #b45309;
}

.schedule-special--holiday b {
    background: #fde68a;
    color: #b45309;
}

.schedule-special--closure {
    color: #dc2626;
}

.schedule-special--closure b {
    background: #fecaca;
    color: #dc2626;
}

.schedule-list-type {
    align-items: center;
    border-radius: 999px;
    display: inline-flex;
    font-size: .72rem;
    font-weight: 950;
    height: 22px;
    justify-content: center;
    margin-right: .45rem;
    min-width: 34px;
    padding: 0 .5rem;
}

@media (max-width: 991.98px) {
    .schedule-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .schedule-toolbar__separator {
        display: none;
    }

    .schedule-period-control,
    .schedule-team-select,
    .schedule-toolbar select {
        width: 100%;
    }
}
