.op3-element[data-op3-element-type="date"] {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;

    [data-op3-element-container] {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
    }

    .calendar {
        grid-area: calendar;
        position: relative;
        display: none;
        flex-direction: column;
        margin: 10px 20px 10px 10px;
        width: 97px;
        min-width: 97px;
        height: 93px;
        background-color: #fff;
        text-align: center;
        overflow: hidden;

        .header {
            height: 30%;
            width: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            text-transform: capitalize;

            .month {
                font-size: 16px !important;
                color: #fff !important;
            }
        }

        .body {
            height: 70%;
            width: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 5px 10px;

            .day {
                font-size: 29px !important;
                font-weight: bold !important;
                color: #111 !important;
            }
        }
    }

    .date {
        display: flex;
    }

    .timezone-wrapper,
    .separator-wrapper {
        min-width: 5px;
        display: none;
        justify-content: inherit;
        align-items: center;
    }

    .wrapper {
        display: flex;
        justify-content: inherit;
        flex-wrap: wrap;
    }

    .time-wrapper,
    .date-wrapper {
        flex-wrap: wrap;
        display: none;
        margin-bottom: 0;
        justify-content: inherit;
        align-items: center;
    }

    .time {
        white-space: nowrap;
    }

    [data-op3-datetime-type="dynamic"] {
        &[data-op3-interval-type="date"] {
            .calendar,
            .date-wrapper {
                display: flex;
            }
        }

        &[data-op3-interval-type="time"] {
            .calendar {
                display: none !important;
            }

            .wrapper,
            .time-wrapper {
                display: flex !important;
            }
        }

        &[data-op3-interval-type="day"] {
            .wrapper,
            .timezone-wrapper,
            .separator-wrapper,
            .calendar,
            .date-wrapper,
            .time-wrapper {
                display: flex;
            }
        }
    }

    [data-op3-datetime-type="specific"] {
        .timezone-wrapper,
        .separator-wrapper,
        .calendar,
        .date-wrapper,
        .time-wrapper {
            display: flex;
        }
    }

    [data-op3-date-stacked-layout="1"] {
        .date {
            flex-direction: column;
        }

        .separator-wrapper {
            margin-left: 0 !important;
        }

        .date-wrapper,
        .wrapper {
            width: 100%;
        }
    }


    [data-op3-calendar-stacked-layout="1"] {
        flex-direction: column;

        &[data-op3-date-stacked-layout="1"] {
            .date-wrapper,
            .wrapper {
                width: auto;
            }
        }
    }

    [data-op3-calendar-stacked-layout="0"] {
        flex-direction: row;

        &[data-op3-date-stacked-layout="0"] {
            align-items: center !important;
        }
    }

    [data-op3-date-format="weekday:long,day:2-digit,month:long,year:numeric"],
    [data-op3-date-format="weekday:long,day:ordinalnumber,month:long,year:numeric"],
    [data-op3-date-format="weekday:long,day:numeric,month:long,year:numeric"] {
        .weekday { order: 1; }
        .day { order: 2; }
        .month { order: 3; }
        .year { order: 4; }
    }

    [data-op3-date-format="weekday:long,month:long,day:2-digit,year:numeric"],
    [data-op3-date-format="weekday:long,month:long,day:numeric,year:numeric"],
    [data-op3-date-format="weekday:long,month:long,day:ordinalnumber,year:numeric"] {
        .weekday { order: 1; }
        .day { order: 3; }
        .month { order: 2; }
        .year { order: 4; }
    }

    .op3-background-ancestor {
        z-index: 0;
        overflow: hidden;

        [data-op3-background="overlay"] {
            z-index: -1;
        }

        [data-op3-border] {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            border-style: solid;
            border-color: rgba(0, 0, 0, 0.2);
            border-width: 0;
            border-radius: inherit;
            pointer-events: none;
            box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.4);
        }
    }
}


@media (max-width: $breakpoint-mobile) {
    .op3-element[data-op3-element-type="date"] {
        .calendar {
            margin: 5px 5px 5px 5px;
            min-width: 78px;
        }

        .separator-wrapper {
            margin-left: 0 !important;
        }

        .date {
            flex-wrap: wrap;
            flex-direction: column !important;
        }

        [data-op3-calendar-stacked-layout="0"] {
            &[data-op3-date-stacked-layout="1"] {
                justify-content: initial !important;
            }
        }

    }
}

// To satisfy Typography Control Panel we must use stronger
// CSS selector for date paragraphs.
html[data-op3-support] #op3-designer-element .op3-element[data-op3-element-type="date"] {
    p {
        margin: 0;
    }

    .day,
    .month,
    .year::before {
        margin-right: 5px;
    }

    .weekday {
        margin-right: 5px;
    }
}
