.cwc-calendar { --cwc-accent: #2271b1; margin: 1.5rem 0; }
.cwc-title { margin: 0 0 1rem; }
.cwc-events { display: grid; gap: .8rem; }
.cwc-event { display: grid; grid-template-columns: minmax(9rem, 12rem) 1fr; gap: 1rem; padding: 1rem; border: 1px solid rgba(0,0,0,.14); border-left: 4px solid var(--cwc-accent); border-radius: 4px; background: #fff; }
.cwc-date { font-weight: 700; }
.cwc-course { margin: 0 0 .35rem; font-size: 1.1em; }
.cwc-details, .cwc-note { margin: 0; }
.cwc-details span + span::before { content: " · "; }
.cwc-note { margin-top: .45rem; opacity: .8; }
@media (max-width: 600px) { .cwc-event { grid-template-columns: 1fr; gap: .35rem; } }

.cwc-calendar-toolbar { display: grid; grid-template-columns: 2.75rem 1fr 2.75rem; align-items: center; gap: .75rem; margin-bottom: .75rem; }
.cwc-current-month { text-align: center; text-transform: capitalize; font-size: 1.15rem; }
.cwc-calendar-nav { min-height: 2.5rem; border: 1px solid #06154f; border-radius: 4px; background: #06154f; color: #fff; cursor: pointer; font-size: 1.2rem; font-weight: 700; transition: background-color .18s ease, border-color .18s ease; }
.cwc-calendar-nav:hover, .cwc-calendar-nav:focus-visible { border-color: #ff7d00; background: #ff7d00; color: #fff; }
.cwc-calendar-nav:disabled { border-color: #06154f; background: #06154f; color: #fff; cursor: default; opacity: .35; }
.cwc-weekdays, .cwc-month-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cwc-weekdays span { padding: .45rem; text-align: center; font-size: .82rem; font-weight: 700; }
.cwc-day { min-height: 7rem; padding: .45rem; border: solid rgba(0,0,0,.13); border-width: 1px 0 0 1px; background: #fff; overflow-wrap: anywhere; }
.cwc-day:nth-child(7n) { border-right-width: 1px; }
.cwc-day:nth-last-child(-n+7) { border-bottom-width: 1px; }
.cwc-day.is-outside { background: #f5f5f5; color: #888; }
.cwc-day.is-available { background: #dff3e4; box-shadow: inset 0 0 0 2px #2e8540; color: #153c20; }
.cwc-day-number { display: block; margin-bottom: .35rem; font-weight: 700; }
.cwc-day-event { display: grid; gap: .1rem; margin-top: .3rem; font-size: .78rem; line-height: 1.25; }
.cwc-day-event a { color: inherit; font-weight: 700; }
@media (max-width: 700px) {
	.cwc-weekdays span { padding-inline: .1rem; font-size: .7rem; }
	.cwc-day { min-height: 4.25rem; padding: .25rem; }
	.cwc-day-event { font-size: .68rem; }
	.cwc-day-event span { display: none; }
}

.cwc-disclosure { margin: 1.25rem 0; border: 1px solid rgba(0,0,0,.16); border-radius: 6px; background: #fff; overflow: hidden; }
.cwc-disclosure-summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.15rem; background: #06154f; color: #fff; cursor: pointer; font-weight: 700; list-style: none; user-select: none; }
.cwc-disclosure-summary::-webkit-details-marker { display: none; }
.cwc-disclosure-summary:hover, .cwc-disclosure-summary:focus-visible { background: #ff7d00; color: #fff; }
.cwc-disclosure-icon { width: .7rem; height: .7rem; border-right: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(45deg) translateY(-2px); transition: transform .2s ease; }
.cwc-disclosure[open] .cwc-disclosure-icon { transform: rotate(225deg) translate(-2px, -2px); }
.cwc-disclosure-content { padding: .15rem 1rem 1rem; }
.cwc-disclosure-content > .cwc-calendar { margin-bottom: 0; }
