/* Calendar-only additions to the public theme; no generated stylesheet edits. */
.festival-calendar {
    --fc-border-color: var(--bs-border-color);
    --fc-page-bg-color: var(--abc-surface);
    --fc-neutral-bg-color: var(--bs-body-bg);
    --fc-today-bg-color: var(--abc-today-bg);
    --fc-list-event-hover-bg-color: var(--abc-hover-bg);
    --fc-neutral-text-color: var(--bs-secondary-color);
    --fc-event-bg-color: #10577b;
    --fc-event-border-color: #10577b;
    --fc-event-text-color: #fff;
    background: var(--abc-surface);
    border: 1px solid var(--bs-border-color);
    border-radius: .5rem;
    padding: 1rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.festival-calendar [hidden] { display: none !important; }
.festival-calendar__toolbar,
.festival-calendar__navigation,
.festival-calendar__views {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
}
.festival-calendar__toolbar { margin-bottom: 1rem; gap: .75rem 1rem; }
.festival-calendar__toolbar h2 { flex: 1 0 100%; margin: 0; font-size: 1.5rem; }
.festival-calendar__views { margin-left: auto; }
.festival-calendar__views [aria-pressed="true"] { background: #10577b; color: #fff; }
.festival-calendar__fallback { margin: 1rem 0 0; }
.festival-calendar__subscription { overflow-wrap: anywhere; }
.festival-calendar .fc { font-size: .875rem; }
.festival-calendar .fc a { color: inherit; }
.festival-calendar .fc .fc-day-today .fc-daygrid-day-number {
    background: #10577b;
    color: #fff;
    border-radius: .25rem;
}
.festival-calendar .fc-daygrid-event { padding: .125rem .25rem; }
.festival-calendar .fc-daygrid-event .fc-event-inner { display: block; }
.festival-calendar .fc-daygrid-event .festival-calendar__event-dates,
.festival-calendar .fc-daygrid-event .festival-calendar__event-location,
.festival-calendar .fc-daygrid-event .festival-calendar__event-beers { display: none; }
.festival-calendar .fc-event-inner { min-width: 0; overflow: hidden; }
.festival-calendar__event-name { overflow-wrap: anywhere; }
.festival-calendar .fc-daygrid-event .festival-calendar__event-name {
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.festival-calendar .fc-list-event-time-outer { display: none; }
.festival-calendar .fc-list-event-title { min-width: 0; white-space: normal; }
.festival-calendar__event-dates { display: block; font-weight: normal; color: var(--bs-secondary-color); margin-top: .25rem; }
.festival-calendar__event-location,
.festival-calendar__event-beers { display: block; font-weight: normal; overflow-wrap: anywhere; }
.festival-calendar__event-location { color: var(--bs-secondary-color); }
.festival-calendar__event-beers { margin-top: .25rem; }
.festival-calendar__event-status { display: block; font-weight: 700; overflow-wrap: anywhere; }
.festival-calendar .fc-daygrid-event.festival-calendar__event--cancelled {
    background: #8a2532;
    border-color: #8a2532;
    color: #fff;
    white-space: normal;
}
.festival-calendar .fc-list-event.festival-calendar__event--cancelled {
    border-left: 4px solid #8a2532;
}
.festival-calendar .fc-list-event .festival-calendar__event-status,
.festival-calendar__detail .festival-calendar__event-status { color: var(--bs-danger-text-emphasis); }
.festival-calendar__detail {
    position: fixed;
    z-index: 1080;
    width: 24rem;
    max-width: calc(100vw - 2rem);
    max-height: calc(100vh - 2rem);
    overflow: auto;
    overflow-wrap: anywhere;
    padding: .75rem 1rem;
    border: 2px solid var(--bs-link-color);
    border-radius: .375rem;
    background: var(--abc-surface);
    color: var(--bs-body-color);
    font-size: .875rem;
    line-height: 1.5;
    box-shadow: 0 2px 8px #182b3626;
}
.festival-calendar__detail .festival-calendar__event-name { display: block; font-weight: 650; }
.festival-calendar .fc-list-empty { display: none; }
.festival-calendar .fc-popover { max-width: calc(100vw - 2rem); }
.festival-calendar .fc-popover .fc-daygrid-event { white-space: normal; }
.festival-calendar .fc-popover .fc-event-inner { overflow: visible; }
.festival-calendar .fc-popover .festival-calendar__event-name { white-space: normal; }
.festival-calendar .fc .fc-more-link { color: var(--bs-link-color); text-decoration: underline; }
@media (max-width: 767px) {
    .festival-calendar__more-count { display: none; }
    .festival-calendar .fc .fc-more-link { font-size: .75rem; }
}
@media (min-width: 768px) {
    .festival-calendar__toolbar h2 { flex: 1 1 auto; }
    .festival-calendar__views { margin-left: 0; }
}
@media (max-width: 374px) {
    .festival-calendar { padding: .75rem; }
    .festival-calendar__navigation .btn { padding-inline: .625rem; }
}
