/* Monthly topic dates: no script, stable seven-column layout at phone widths. */
.ec-topic-calendar { margin-block: 2rem; min-width: 0; color: var(--ec-clr-text, #1d2430); }
.ec-topic-calendar *, .ec-topic-calendar *::before, .ec-topic-calendar *::after { box-sizing: border-box; }
.ec-topic-calendar__header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .75rem; }
.ec-topic-calendar__header h2 { margin: 0; font-size: clamp(1.15rem, 3vw, 1.6rem); line-height: 1.5; overflow-wrap: anywhere; }
.ec-topic-calendar__nav { display: flex; flex-wrap: wrap; gap: .5rem; }
.ec-topic-calendar__nav a, .ec-topic-calendar__all a { display: inline-flex; align-items: center; min-height: 44px; padding: .5rem .8rem; border: 1px solid var(--ec-clr-border, #ddd3c6); border-radius: var(--ec-radius-sm, 8px); background: var(--ec-clr-surface, #fffdf8); color: var(--ec-clr-text, #1d2430); text-decoration: underline; text-underline-offset: .18em; }
.ec-topic-calendar__note, .ec-topic-calendar__empty { font-size: .9rem; line-height: 1.8; color: var(--ec-clr-muted, #5f6770); }
.ec-topic-calendar .ec-topic-calendar__grid { width: 100%; max-width: 100%; min-width: 0; table-layout: fixed; border-collapse: collapse; margin: 1rem 0; background: var(--ec-clr-surface, #fffdf8); font-size: .85rem; }
.ec-topic-calendar__grid caption { text-align: left; padding-block: .5rem; font-weight: 700; color: var(--ec-clr-text, #1d2430); }
.ec-topic-calendar__grid th, .ec-topic-calendar__grid td { width: calc(100% / 7); border: 1px solid var(--ec-clr-border, #ddd3c6); padding: .4rem; vertical-align: top; overflow-wrap: anywhere; }
.ec-topic-calendar__grid th { text-align: center; background: var(--ec-clr-accent-lt, #f4ece1); font-weight: 700; }
.ec-topic-calendar__day { height: 7.5rem; }
.ec-topic-calendar__day.is-outside { background: var(--ec-clr-bg, #f3efe8); color: var(--ec-clr-muted, #5f6770); }
.ec-topic-calendar__day.is-today { box-shadow: inset 0 0 0 2px var(--ec-clr-accent, #8b6b43); background: var(--ec-clr-accent-lt, #f4ece1); }
.ec-topic-calendar__date { display: inline-flex; align-items: center; justify-content: center; min-width: 2rem; min-height: 2rem; font-weight: 700; color: var(--ec-clr-text, #1d2430); }
a.ec-topic-calendar__date { min-height: 44px; text-decoration: underline; text-underline-offset: .15em; }
.ec-topic-calendar__count, .ec-topic-calendar__cancel-count { display: block; font-size: .75rem; line-height: 1.5; }
.ec-topic-calendar__cancel-count, .ec-topic-calendar__cancellation { color: #9b2c27; }
.ec-topic-calendar .ec-topic-calendar__cell-events { list-style: none; margin: .25rem 0 0; padding: 0; }
.ec-topic-calendar__cell-events li { margin: 0 0 .35rem; padding: 0; }
.ec-topic-calendar__cell-events a { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; line-height: 1.5; font-size: .75rem; color: var(--ec-clr-text, #1d2430); text-decoration: underline; text-underline-offset: .12em; }
.ec-topic-calendar__more { display: inline-block; font-size: .75rem; color: var(--ec-clr-text, #1d2430); }
.ec-topic-calendar__detail { scroll-margin-top: 6rem; margin-block: 1.5rem; }
.ec-topic-calendar__detail h3 { margin: 0 0 .5rem; padding-block: .45rem; border-bottom: 2px solid var(--ec-clr-border, #ddd3c6); font-size: 1.1rem; }
.ec-topic-calendar .ec-topic-calendar__events { list-style: none; margin: 0; padding: 0; }
.ec-topic-calendar__events > li { margin: 0; padding: 1rem 0; border-bottom: 1px solid var(--ec-clr-border, #ddd3c6); }
.ec-topic-calendar__events h4 { margin: 0 0 .4rem; font-size: 1rem; line-height: 1.65; }
.ec-topic-calendar__events h4 a, .ec-topic-calendar__official { color: var(--ec-clr-text, #1d2430); text-decoration: underline; text-underline-offset: .15em; overflow-wrap: anywhere; }
.ec-topic-calendar__facts { display: flex; flex-wrap: wrap; gap: .25rem 1rem; margin: 0 0 .4rem; font-size: .9rem; line-height: 1.7; }
.ec-topic-calendar__facts span { min-width: 0; overflow-wrap: anywhere; }
.ec-topic-calendar__cancellation { margin: .4rem 0; font-size: .9rem; line-height: 1.7; }
.ec-topic-calendar__official { display: inline-block; padding-block: .3rem; font-size: .85rem; }
.ec-topic-calendar a:focus-visible { outline: 3px solid var(--ec-clr-upcoming, #355c86); outline-offset: 2px; }
.ec-topic-calendar__sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.ec-topic-calendar--compact .ec-topic-calendar__day { height: 4rem; }
.ec-topic-calendar--compact .ec-topic-calendar__detail { margin-block: 1rem; }
.ec-topic-calendar--compact .ec-topic-calendar__events > li { padding-block: .7rem; }
@media (max-width: 600px) {
 .ec-topic-calendar__grid th, .ec-topic-calendar__grid td { padding: .2rem; }
 .ec-topic-calendar__day { height: 5rem; }
 .ec-topic-calendar__date { min-width: 0; width: 100%; }
 .ec-topic-calendar .ec-topic-calendar__cell-events, .ec-topic-calendar__more { display: none; }
 .ec-topic-calendar__count, .ec-topic-calendar__cancel-count, .ec-topic-calendar__more { font-size: .68rem; }
 .ec-topic-calendar__nav-month { display: none; }
}
