.vpt-tour-calendar-page {
    --calendar-text: #171717;
    --calendar-muted: #647269;
    --calendar-line: #d8e4d9;
    --calendar-past: #9aa79e;
    --calendar-holiday: var(--bs-gray-600);
    --calendar-available: var(--bs-green-600);
    --calendar-waitlist: var(--bs-blue-600);
    --calendar-sold-out: var(--bs-red-600);
    padding-top: 59px !important;
}

.calendar-page {
    background: transparent !important;
    color: var(--calendar-text);
}

.calendar-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}

.calendar-hero-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: bottom center;
    z-index: 0;
}

.calendar-hero::before {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(0, 33, 18, .78), rgba(0, 33, 18, .28));
    content: "";
    z-index: 1;
}

.calendar-hero > .container {
    position: relative;
    z-index: 2;
}

.calendar-hero h1,
.calendar-hero p {
    color: #fff !important;
}

.calendar-hero p {
    max-width: 680px;
}

.calendar-time {
    color: var(--calendar-muted);
    font-size: .95rem;
    margin-bottom: 1.5rem;
}

.calendar-status-legend {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: .75rem 1.25rem;
    margin: -.5rem 0 1.5rem;
}

.calendar-status-legend-item {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    color: var(--calendar-muted);
    font-size: .9rem;
    line-height: 1.25;
}

.calendar-status-legend-item.calendar-tour-item--holiday { color: var(--calendar-holiday); }
.calendar-status-legend-item.calendar-tour-item--available { color: var(--calendar-available); }
.calendar-status-legend-item.calendar-tour-item--waitlist { color: var(--calendar-waitlist); }
.calendar-status-legend-item.calendar-tour-item--sold-out { color: var(--calendar-sold-out); }
.calendar-waitlist-badge { background-color: var(--calendar-waitlist); color: #fff; }

.calendar-year-list {
    align-items: flex-start;
}

.calendar-year-column {
    min-height: 100%;
    padding: 1.25rem;
}

.calendar-year-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: .5rem;
    padding-bottom: .5rem;
}

.calendar-year-heading {
    color: var(--calendar-text);
    font-size: 1.7rem;
    font-weight: 650;
    line-height: 1;
    margin: 0;
}

.calendar-month-trips {
    display: flex;
    flex-direction: column;
    padding-left: 2rem;
}

.calendar-tour-item {
    position: relative;
}

.calendar-tour-status-dot {
    position: absolute;
    top: .75rem;
    left: -1.8rem;
    z-index: 2;
    display: block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--calendar-holiday);
}

.calendar-status-legend .calendar-tour-status-dot {
    position: static;
    flex: 0 0 14px;
    width: 14px;
    height: 14px;
}

.calendar-tour-item::after {
    position: absolute;
    top: .75rem;
    bottom: -2rem;
    left: calc(-1.8rem + 4px);
    z-index: 0;
    width: 2px;
    background: var(--calendar-line);
    content: "";
}

.calendar-tour-item:last-child::after {
    content: none;
}

.calendar-tour-item--past .calendar-tour-status-dot {
    background: var(--calendar-past);
}

.calendar-tour-item--holiday .calendar-tour-status-dot {
    background: var(--calendar-holiday);
}

.calendar-tour-item--available .calendar-tour-status-dot {
    background: var(--calendar-available);
}

.calendar-tour-item--waitlist .calendar-tour-status-dot {
    background: var(--calendar-waitlist);
}

.calendar-tour-item--sold-out .calendar-tour-status-dot {
    background: var(--calendar-sold-out);
}

.calendar-tour-title-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem;
}

.calendar-tour-date {
    color: var(--calendar-muted);
    font-size: .95rem;
    font-weight: 600;
    line-height: 1.35;
}

.calendar-tour-name {
    color: var(--calendar-text) !important;
    font-size: 1.05rem;
    font-weight: 500;
    line-height: 1.38;
    text-decoration: none;
}

a.calendar-tour-name:hover,
a.calendar-tour-name:focus-visible {
    text-decoration: underline;
    text-underline-offset: 3px;
}

.calendar-tour-item--past .calendar-tour-date,
.calendar-tour-item--past .calendar-tour-name {
    color: var(--calendar-past) !important;
}

.calendar-tour-item--holiday .calendar-tour-date,
.calendar-tour-item--holiday .calendar-tour-name {
    color: var(--calendar-holiday) !important;
}

.calendar-tour-item--available .calendar-tour-date,
.calendar-tour-item--available .calendar-tour-name {
    color: var(--calendar-available) !important;
}

.calendar-tour-item--waitlist .calendar-tour-date,
.calendar-tour-item--waitlist .calendar-tour-name {
    color: var(--calendar-waitlist) !important;
}

.calendar-tour-item--sold-out .calendar-tour-date,
.calendar-tour-item--sold-out .calendar-tour-name {
    color: var(--calendar-sold-out) !important;
}

.calendar-tour-note,
.calendar-year-empty {
    color: var(--calendar-muted);
    font-size: .9rem;
    line-height: 1.5;
}

.calendar-tour-note {
    margin-top: .5rem;
}

.calendar-private-cta {
    padding: 2.5rem 0 3rem;
}

.calendar-private-cta h2 {
    color: var(--calendar-text);
    font-size: 1.25rem;
    font-weight: 650;
}

.calendar-private-cta p {
    max-width: 680px;
    color: var(--calendar-muted);
}

.calendar-private-cta-button {
    background: #fff !important;
    border-color: #171717 !important;
    color: #171717 !important;
    font-weight: 500;
}

.calendar-private-cta-button:hover,
.calendar-private-cta-button:focus-visible {
    background: #f2f2f2 !important;
    border-color: #171717 !important;
    color: #171717 !important;
}

@media (max-width: 1023.98px) {
    .vpt-tour-calendar-page { padding-top: 0 !important; }
}

@media (max-width: 767.98px) {
    .calendar-year-column {
        padding: 1rem;
    }

    .calendar-private-cta {
        padding: 2rem 0 2.5rem;
    }
}
