/* HEADER & NAV BAR */
.ngx-calendar-m3-date,
.ngx-calendar-m3-week,
.ngx-calendar-m3-month,
.ngx-calendar-m3-year {
    display: block;
    direction: rtl;

    .calendar-header {
        display: flex;
        align-items: center;
        padding: 0.25rem 0;

        .title {
            flex: 1;

            display: flex;
            align-items: center;
            font-weight: 500;
            column-gap: 0.5rem;
        }
    }

    .calendar-nav {
        display: flex;
        align-items: center;
        column-gap: 0.5rem;

        margin-bottom: 0.5rem;
        padding: 0.75rem 0.5rem;
        background-color: var(--surface-container-highest);

        .item {
            flex: 1;
            text-align: center;
            font-size: 90%;
        }

        .click {
            cursor: pointer;
        }
    }
}

/* DATE & WEEK CONTENT */
.ngx-calendar-m3-date,
.ngx-calendar-m3-week {
    .calendar-content {
        position: relative;

        .calendar-view {
            display: flex;
            flex-direction: column;
            row-gap: 0.75rem;
            padding: 0.75rem 0;

            .week {
                display: flex;
                align-items: center;
                column-gap: 0.75rem;
                padding: 0 0.75rem;

                .day {
                    flex: 1;
                    display: flex;
                    align-items: center;
                    justify-content: center;

                    border: 1px solid transparent;
                    border-radius: 50%;
                    cursor: pointer;
                }

                .day::after {
                    content: ' ';
                    display: 'block';
                    padding-bottom: 100%;
                }

                .day:not(.day-today, .day-selected, .day-disable):hover {
                    background-color: var(--outline-variant);
                }

                .day-today {
                    border-color: var(--primary);
                }

                .day-selected {
                    color: var(--on-primary);
                    border-color: var(--primary);
                    background-color: var(--primary);
                }

                .day-disable {
                    opacity: 0.5;
                    cursor: default;
                }
            }

            .week-selected {
                color: var(--on-primary);
                border-color: var(--primary);
                background-color: var(--primary);
            }
        }

        .month-view {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;

            display: flex;
            flex-direction: column;
            overflow: hidden;

            .season {
                flex: 1;

                display: flex;
                align-items: center;
                column-gap: 0.5rem;

                .month {
                    flex: 1;

                    cursor: pointer;
                    text-align: center;
                    border-radius: 4px;
                    border: 1px solid transparent;
                    padding: 0.75rem 0;
                }

                .month-disable {
                    opacity: 0.5;
                    cursor: default;
                }
            }
        }
    }
}

/* MOMENT CONTENT */
.ngx-calendar-m3-moment {
    display: block;
    direction: rtl;

    .time {
        display: flex;
        align-items: center;

        background-color: var(--surface-container-highest);

        .date {
            flex: 1;
            font-size: 95%;
            padding-right: 1rem;
        }

        button.value {
            width: 40px;
            min-width: auto;
            border-radius: 0;
            font-weight: normal;
            color: var(--on-surface);
            min-height: 50px;
        }

        button.value:disabled {
            opacity: 0.5;
        }

        button.submit {
            font-size: 85%;
            border-radius: 0;
            min-height: 50px;
        }
    }
}

/* MONTH CONTENT */
.ngx-calendar-m3-month {
    .calendar-header {
        .title {
            padding-right: 1rem;
        }
    }

    .calendar-content {
        display: flex;
        align-items: center;
        column-gap: 0.5rem;
        padding: 0 0.5rem;
        margin: 1rem 0 0.5rem 0;

        .month {
            flex: 1;

            cursor: pointer;
            text-align: center;
            border-radius: 4px;
            border: 1px solid transparent;
            padding: 0.75rem 0;
        }

        .month-today {
            border-color: var(--primary);
        }

        .month-selected {
            color: var(--on-primary);
            border-color: var(--primary);
            background-color: var(--primary);
        }

        .month-disable {
            opacity: 0.5;
            cursor: default;
        }
    }
}

/* YEAR CONTENT */
.ngx-calendar-m3-year {
    .calendar-header {
        .title {
            padding-right: 1rem;
        }
    }

    .calendar-content {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
        row-gap: 0.5rem;
        column-gap: 0.5rem;
        padding: 0 0.5rem;
        margin: 1rem 0 0.5rem 0;

        .year {
            cursor: pointer;
            text-align: center;
            border-radius: 4px;
            border: 1px solid transparent;
            padding: 0.75rem 0;
        }

        .year-today {
            border-color: var(--primary);
        }

        .year-selected {
            color: var(--on-primary);
            border-color: var(--primary);
            background-color: var(--primary);
        }

        .year-disable {
            opacity: 0.5;
            cursor: default;
        }
    }
}

/* CALENDAR */
.ngx-calendar-m3 {
    display: flex;
    align-items: center;

    direction: rtl;
    border-radius: 4px;
    border: 1px solid var(--outline-variant);

    .calendar-types {
        display: flex;
        align-items: center;
        column-gap: 0.5rem;
        height: var(--ngx-calendar-m3-height);

        cursor: pointer;
        line-height: 45px;
        padding: 0 0.5rem;
        color: var(--primary);
        border-radius: 0 4px 4px 0;
        background-color: var(--surface-container-highest);
    }

    .calendar-title {
        flex: 1;

        display: flex;
        align-items: center;
        height: var(--ngx-calendar-m3-height);

        cursor: pointer;
        padding: 0 1rem;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .calendar-buttons {
        display: flex;
        align-items: center;
        height: var(--ngx-calendar-m3-height);

        border-radius: 4px 0 0 4px;
        background-color: var(--surface-container-highest);
    }

    .calendar-buttons.square {
        border-radius: 0;
    }
}
