.vi-date-input {
    --vi-date-primary: var(--tenant-primary-ink, var(--theme-primary, var(--cv-navy, var(--green-700, var(--tmn-primary, #17634e)))));
    --vi-date-on-primary: var(--tenant-on-primary, var(--theme-on-primary, #fff));
    --vi-date-border: #cbd8d3;
    --vi-date-muted: #64736d;
    --vi-date-surface: #fff;
    --vi-date-soft: #f2f7f5;
    position: relative;
    display: block;
    width: 100%;
    min-width: 0;
    color: #18372d;
    font-family: inherit;
}

.vi-date-input.is-open {
    z-index: 100;
}

.vi-date-input > .vi-date-input__text {
    width: 100% !important;
    min-height: 42px !important;
    padding-right: 50px !important;
    border: 1px solid var(--vi-date-border) !important;
    border-radius: 10px !important;
    color: inherit !important;
    background: linear-gradient(180deg, #fff 0%, #fbfdfc 100%) !important;
    box-shadow: 0 1px 2px rgba(17, 58, 45, .04), inset 0 1px 0 rgba(255, 255, 255, .8) !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}

.vi-date-input > .vi-date-input__text:hover:not(:disabled) {
    border-color: color-mix(in srgb, var(--vi-date-primary) 48%, #b8c6c1) !important;
}

.vi-date-input > .vi-date-input__text:focus {
    border-color: var(--vi-date-primary) !important;
    outline: 0 !important;
    background: #fff !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--vi-date-primary) 18%, transparent) !important;
}

.vi-date-input > .vi-date-input__text:disabled,
.vi-date-input > .vi-date-input__text[readonly] {
    color: #71807b !important;
    background: #f1f4f3 !important;
    cursor: not-allowed;
}

.vi-date-input > .vi-date-input__open {
    position: absolute !important;
    z-index: 2;
    top: 1px !important;
    right: 1px !important;
    bottom: 1px !important;
    display: grid !important;
    width: 44px !important;
    min-width: 44px !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    place-items: center;
    border: 0 !important;
    border-left: 1px solid color-mix(in srgb, var(--vi-date-primary) 20%, transparent) !important;
    border-radius: 0 9px 9px 0 !important;
    color: var(--vi-date-primary) !important;
    background: var(--vi-date-soft) !important;
    box-shadow: none !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    cursor: pointer;
    transition: color .18s ease, background-color .18s ease;
}

.vi-date-input > .vi-date-input__open:hover {
    color: var(--vi-date-on-primary) !important;
    background: var(--vi-date-primary) !important;
}

.vi-date-input > .vi-date-input__open:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--vi-date-primary) 28%, transparent) !important;
    outline-offset: 2px;
}

.vi-date-input > .vi-date-input__open:disabled {
    color: #82908b !important;
    background: #eef1f0 !important;
    cursor: not-allowed;
    opacity: .68;
}

.vi-date-input svg {
    width: 19px;
    height: 19px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.vi-date-input > .vi-date-input__value {
    display: none !important;
}

.vi-date-calendar {
    position: absolute;
    z-index: 1000;
    top: calc(100% + 9px);
    right: 0;
    display: block;
    width: min(340px, calc(100vw - 32px));
    padding: 14px;
    border: 1px solid color-mix(in srgb, var(--vi-date-primary) 24%, #dbe4e0);
    border-radius: 18px;
    color: #18372d;
    background: var(--vi-date-surface);
    box-shadow: 0 22px 48px rgba(18, 48, 39, .18), 0 6px 16px rgba(18, 48, 39, .09);
    isolation: isolate;
}

.vi-date-calendar[hidden] {
    display: none !important;
}

.vi-date-calendar::before {
    position: absolute;
    z-index: -1;
    top: -5px;
    right: 22px;
    width: 10px;
    height: 10px;
    border-top: 1px solid color-mix(in srgb, var(--vi-date-primary) 24%, #dbe4e0);
    border-left: 1px solid color-mix(in srgb, var(--vi-date-primary) 24%, #dbe4e0);
    background: #fff;
    content: '';
    transform: rotate(45deg);
}

.vi-date-calendar__header {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr) 38px 34px;
    gap: 5px;
    align-items: center;
    margin-bottom: 12px;
}

.vi-date-calendar__heading {
    overflow: hidden;
    color: #163d30;
    font-size: .98rem;
    font-weight: 800;
    line-height: 1.25;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.vi-date-calendar button,
.vi-date-calendar input {
    box-sizing: border-box;
    font: inherit;
}

.vi-date-calendar button {
    appearance: none;
    -webkit-appearance: none;
}

.vi-date-calendar__nav,
.vi-date-calendar__close {
    display: grid !important;
    width: 36px !important;
    min-width: 36px !important;
    height: 36px !important;
    min-height: 36px !important;
    margin: 0 !important;
    padding: 0 !important;
    place-items: center;
    border: 1px solid transparent !important;
    border-radius: 10px !important;
    color: var(--vi-date-primary) !important;
    background: var(--vi-date-soft) !important;
    box-shadow: none !important;
    cursor: pointer;
}

.vi-date-calendar__close {
    width: 32px !important;
    min-width: 32px !important;
    height: 32px !important;
    min-height: 32px !important;
    color: var(--vi-date-muted) !important;
    background: transparent !important;
}

.vi-date-calendar__nav:hover,
.vi-date-calendar__close:hover {
    border-color: color-mix(in srgb, var(--vi-date-primary) 22%, transparent) !important;
    color: var(--vi-date-on-primary) !important;
    background: var(--vi-date-primary) !important;
}

.vi-date-calendar__nav svg,
.vi-date-calendar__close svg {
    width: 17px;
    height: 17px;
}

.vi-date-calendar__weekdays,
.vi-date-calendar__days {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
}

.vi-date-calendar__weekdays {
    margin-bottom: 4px;
}

.vi-date-calendar__weekdays > span {
    padding: 5px 0;
    color: var(--vi-date-muted);
    font-size: .72rem;
    font-weight: 800;
    line-height: 1;
    text-align: center;
    text-transform: uppercase;
}

.vi-date-calendar__days {
    gap: 3px;
}

.vi-date-calendar__day {
    position: relative;
    display: grid !important;
    width: 100% !important;
    min-width: 0 !important;
    aspect-ratio: 1;
    min-height: 35px !important;
    margin: 0 !important;
    padding: 0 !important;
    place-items: center;
    border: 1px solid transparent !important;
    border-radius: 11px !important;
    color: #24483c !important;
    background: transparent !important;
    box-shadow: none !important;
    font-size: .83rem !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    cursor: pointer;
}

.vi-date-calendar__day:hover:not(:disabled),
.vi-date-calendar__day:focus-visible {
    border-color: color-mix(in srgb, var(--vi-date-primary) 30%, transparent) !important;
    color: var(--vi-date-primary) !important;
    background: var(--vi-date-soft) !important;
    outline: 0 !important;
}

.vi-date-calendar__day.is-outside {
    color: #9aa8a3 !important;
    font-weight: 500 !important;
}

.vi-date-calendar__day.is-today::after {
    position: absolute;
    right: 50%;
    bottom: 4px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--vi-date-primary);
    content: '';
    transform: translateX(50%);
}

.vi-date-calendar__day.is-selected,
.vi-date-calendar__day.is-selected:hover,
.vi-date-calendar__day.is-selected:focus-visible {
    border-color: var(--vi-date-primary) !important;
    color: var(--vi-date-on-primary) !important;
    background: var(--vi-date-primary) !important;
    box-shadow: 0 7px 14px color-mix(in srgb, var(--vi-date-primary) 24%, transparent) !important;
}

.vi-date-calendar__day.is-selected::after {
    background: currentColor;
}

.vi-date-calendar__day:disabled {
    color: #c5cecb !important;
    background: transparent !important;
    cursor: not-allowed;
    opacity: .62;
}

.vi-date-calendar__footer {
    display: flex;
    gap: 7px;
    align-items: flex-end;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #e4ebe8;
}

.vi-date-calendar__secondary,
.vi-date-calendar__confirm {
    width: auto !important;
    min-width: 0 !important;
    min-height: 36px !important;
    margin: 0 !important;
    padding: 7px 11px !important;
    border: 1px solid color-mix(in srgb, var(--vi-date-primary) 24%, #d7e0dc) !important;
    border-radius: 10px !important;
    color: var(--vi-date-primary) !important;
    background: #fff !important;
    box-shadow: none !important;
    font-size: .78rem !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    white-space: nowrap;
    cursor: pointer;
}

.vi-date-calendar__secondary:hover,
.vi-date-calendar__confirm {
    color: var(--vi-date-on-primary) !important;
    background: var(--vi-date-primary) !important;
}

.vi-date-calendar__confirm:hover {
    filter: brightness(.92);
}

.vi-date-calendar__time {
    display: grid !important;
    flex: 1 1 82px;
    min-width: 72px;
    gap: 3px;
    margin: 0 !important;
    color: var(--vi-date-muted);
    font-size: .68rem;
    font-weight: 800;
    line-height: 1;
}

.vi-date-calendar__time input {
    width: 100% !important;
    min-height: 36px !important;
    margin: 0 !important;
    padding: 7px 9px !important;
    border: 1px solid var(--vi-date-border) !important;
    border-radius: 9px !important;
    color: #18372d !important;
    background: #fff !important;
    box-shadow: none !important;
    font-size: .8rem !important;
    font-weight: 700 !important;
    appearance: none !important;
    -webkit-appearance: none !important;
}

.vi-date-calendar__time input:focus {
    border-color: var(--vi-date-primary) !important;
    outline: 0 !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--vi-date-primary) 16%, transparent) !important;
}

.vi-date-calendar button:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--vi-date-primary) 24%, transparent) !important;
    outline-offset: 2px;
}

@media (max-width: 520px) {
    .vi-date-calendar {
        right: auto;
        left: 0;
        width: min(326px, calc(100vw - 28px));
        padding: 12px;
        border-radius: 16px;
    }

    .vi-date-calendar::before {
        right: auto;
        left: 22px;
    }

    .vi-date-calendar__day {
        min-height: 33px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .vi-date-input > .vi-date-input__text,
    .vi-date-input > .vi-date-input__open {
        transition: none;
    }
}

@media (forced-colors: active) {
    .vi-date-input > .vi-date-input__text,
    .vi-date-input > .vi-date-input__open,
    .vi-date-calendar,
    .vi-date-calendar button,
    .vi-date-calendar input {
        border-color: ButtonText !important;
        color: ButtonText !important;
        background: Canvas !important;
        box-shadow: none !important;
        forced-color-adjust: auto;
    }

    .vi-date-calendar__day.is-selected {
        color: HighlightText !important;
        background: Highlight !important;
    }
}
