.okgv-calendar { --calendar-green: #245c46; --calendar-soft: #edf5ef; max-width: 1320px; }
.okgv-calendar .calendar-hero { background: linear-gradient(115deg, #e6f1e8, #f7f8ee); border: 1px solid #dbe7dd; border-radius: 1.25rem; padding: 2rem; display: flex; justify-content: space-between; gap: 1rem; align-items: center; color: #183e30; }
.okgv-calendar .calendar-eyebrow { text-transform: uppercase; letter-spacing: .12em; font-size: .72rem; font-weight: 700; color: var(--calendar-green); }
.okgv-calendar .calendar-badge { border: 1px solid #aac8b1; padding: .4rem .85rem; border-radius: 2rem; font-size: .8rem; white-space: nowrap; }
.okgv-calendar .calendar-toolbar { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; align-items: center; }
.okgv-calendar .calendar-weekdays, .okgv-calendar .calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.okgv-calendar .calendar-weekdays { color: #52685d; font-size: .8rem; font-weight: 600; text-align: center; padding: .75rem 0; }
.okgv-calendar .calendar-grid { border: 1px solid #dce5df; border-radius: .75rem; overflow: hidden; background: #dce5df; gap: 1px; }
.okgv-calendar .calendar-day { background: #fff; padding: .65rem; min-height: 130px; min-width: 0; }
.okgv-calendar .calendar-day-muted { background: #f5f7f5; }
.okgv-calendar .calendar-day-today { box-shadow: inset 0 0 0 2px var(--calendar-green); }
.okgv-calendar .calendar-date { display: inline-block; color: #334a3d; padding: .15rem .35rem; font-size: .85rem; font-weight: 600; text-decoration: none; }
.okgv-calendar .calendar-chip { display: block; background: var(--calendar-soft); color: #183e30; border-left: 3px solid #568b68; border-radius: .25rem; padding: .35rem; margin-top: .35rem; font-size: .78rem; line-height: 1.4; text-decoration: none; overflow-wrap: anywhere; }
.okgv-calendar .calendar-chip:hover { background: #d7e9dc; }
.okgv-calendar .calendar-chip span { display: block; font-size: .7rem; color: #45604f; }
.okgv-calendar .calendar-mobile-list { display: none; }
.okgv-calendar .calendar-event-row { display: flex; gap: 1.25rem; align-items: center; border: 1px solid #dce5df; border-radius: .8rem; background: #fff; padding: 1.25rem; margin-bottom: .75rem; }
.okgv-calendar .calendar-event-row .flex-grow-1 { min-width: 0; overflow-wrap: anywhere; }
.okgv-calendar .calendar-event-row h3 a { color: #245c46; text-decoration: none; }
.okgv-calendar .calendar-event-date { min-width: 5rem; text-align: center; font-size: .75rem; color: #52685d; }
.okgv-calendar .calendar-event-date span { display: block; font-size: 1.8rem; font-weight: 600; color: #245c46; }
.okgv-calendar .calendar-empty, .okgv-calendar .calendar-subscribe { padding: 1.5rem; border-radius: .75rem; background: #f1f5f0; }
.okgv-calendar .calendar-description { overflow-wrap: anywhere; }
.okgv-calendar .calendar-description img { max-width: 100%; height: auto; }
.okgv-calendar :focus-visible { outline: 3px solid #b27616; outline-offset: 3px; }
@media (max-width: 767px) {
    .okgv-calendar .calendar-hero { padding: 1.25rem; align-items: start; flex-direction: column; }
    .okgv-calendar .calendar-grid-view { display: none; }
    .okgv-calendar .calendar-mobile-list { display: block; }
    .okgv-calendar .calendar-event-row { gap: .75rem; padding: .85rem; flex-wrap: wrap; }
    .okgv-calendar .calendar-event-row .flex-grow-1 { flex-basis: 65%; min-width: 0; overflow-wrap: anywhere; }
    .okgv-calendar .calendar-event-date { min-width: 3rem; }
}

/* Keep the integrated portal's existing card headings usable on narrow screens. */
.okgv-calendar-portal .card .d-flex {
    flex-wrap: wrap;
    gap: .5rem;
}
.okgv-calendar-portal .card {
    min-width: 0;
    overflow-wrap: anywhere;
}
