/* Scoped to the programme page; colours follow the existing site settings. */
.calendar-page { gap:28px; min-width:0; }
.calendar-page > .single-panel { max-width:none; width:100%; box-sizing:border-box; }
.calendar-page .events-calendar-panel { padding:clamp(14px,3vw,32px); border:1px solid #dce4ee; border-top:5px solid var(--primary); box-shadow:0 16px 42px rgba(15,59,120,.08); overflow:visible; }
.calendar-page .calendar-toolbar { flex-wrap:wrap; align-items:center; }
.calendar-page .calendar-toolbar h2 { font-size:clamp(1.6rem,3vw,2.4rem); margin:6px 0; letter-spacing:-.025em; }
.calendar-page .calendar-toolbar__actions { gap:8px; }
.calendar-page .calendar-toolbar__actions a { border:1px solid #d9e3ef; border-radius:12px; background:#f0f4f9; color:var(--primary); padding:11px 15px; text-decoration:none; }
.calendar-page .calendar-toolbar__actions a:nth-child(2) { background:var(--primary); color:#fff; }
.calendar-page .calendar-help { color:#4d5c6d; line-height:1.6; margin:0 0 20px; }
.calendar-page .calendar-help a { display:inline-block; color:var(--primary); font-weight:700; margin-left:8px; text-underline-offset:4px; }
.calendar-page .calendar-picker { padding:16px; border-radius:14px; background:#f4f7fb; margin-bottom:24px; }
.calendar-page .calendar-picker select { border-color:#cbd7e5; border-radius:10px; color:var(--primary); font-weight:700; }
.calendar-page .calendar-picker label { font-size:.8rem; color:#526377; }
.calendar-page .calendar-month-head { margin:0 0 14px; padding:20px; border-radius:14px; text-align:center; background:var(--primary); color:#fff; font-size:clamp(1.25rem,2.5vw,1.9rem); letter-spacing:-.02em; }
.calendar-page .calendar-grid { grid-template-columns:repeat(7,minmax(0,1fr)); gap:7px; min-width:0; }
.calendar-page .calendar-grid--weekdays { margin-bottom:7px; }
.calendar-page .calendar-weekday { padding:12px 2px; border:0; background:transparent; color:#53657c; font-size:.8rem; }
.calendar-page .calendar-day { min-width:0; min-height:124px; padding:8px; border-radius:12px; border:1px solid #e1e7ef; background:#fff; scroll-margin-top:24px; }
.calendar-page .calendar-day.is-muted { opacity:.6; background:#f4f6f9; }
.calendar-page .calendar-day.has-events { background:#f1f5fb; border-color:#ccdbed; }
.calendar-page .calendar-day.is-today { outline:2px solid var(--primary); outline-offset:-2px; }
.calendar-page .calendar-day.is-today .calendar-day__header span { background:var(--primary); color:#fff; border-radius:50%; }
.calendar-page .calendar-day__header { justify-content:flex-start; margin-bottom:6px; }
.calendar-page .calendar-day__header span { display:inline-grid; place-items:center; width:28px; height:28px; }
.calendar-page .calendar-event-pill { padding:9px 7px; border-radius:8px; border-left:3px solid var(--accent); background:#fff; color:var(--primary); text-decoration:none; font-size:.83rem; line-height:1.4; overflow-wrap:anywhere; box-shadow:0 2px 5px rgba(15,59,120,.05); }
.calendar-event-time { display:block; font-size:.73rem; color:#53657c; margin-bottom:3px; }
.calendar-event-title { display:block; font-weight:750; }
.calendar-page .calendar-event-pill:hover { background:#e4edf9; }
.calendar-page :is(a,summary,select):focus-visible,.home-event-link:focus-visible { outline:3px solid var(--primary); outline-offset:3px; }
.calendar-page .calendar-day:target { outline:3px solid var(--accent); outline-offset:2px; }
.calendar-mobile-day { display:none; }
.calendar-page .event-search-panel { border:1px solid #dce4ee; background:linear-gradient(145deg,#fff,#f2f6fb); scroll-margin-top:24px; }
.calendar-page .event-search-panel h2 { margin:6px 0; }
.calendar-page .event-now-card { border:1px solid #e1e7ef; box-shadow:none; }
.home-event-link { color:inherit; text-decoration:none; border-radius:12px; }
.home-event-link:hover { background:#f0f5fb; }
.home-event-link h3 { color:var(--primary); }
.home-event-link__more { display:block; margin-top:8px; color:var(--primary); font-size:.85rem; font-weight:700; }
@media (max-width:1100px) {
  .calendar-page .calendar-weekday__long { display:none; }
  .calendar-page .calendar-weekday__short { display:inline; }
}
@media (max-width:900px) {
  .calendar-page .calendar-grid--days { position:relative; }
  .calendar-page .calendar-day { position:static; overflow:visible; min-height:82px; padding:5px 2px; }
  .calendar-page .calendar-day.is-muted { opacity:1; color:#7b8796; background:#f4f6f9; }
  .calendar-page .calendar-day__header { justify-content:center; }
  .calendar-page .calendar-day__events { display:none; }
  .calendar-mobile-day { display:block; margin-top:auto; }
  .calendar-mobile-day summary { cursor:pointer; text-align:center; list-style:none; color:var(--primary); font-weight:800; font-size:.7rem; padding:8px 0; min-height:28px; }
  .calendar-mobile-day summary::-webkit-details-marker { display:none; }
  .calendar-mobile-day summary span { display:block; font-size:.55rem; }
  .calendar-mobile-day[open] summary { border-radius:6px; background:var(--primary); color:white; }
  .calendar-mobile-day__items { position:absolute; left:0; right:0; z-index:10; background:#fff; color:#1c2430; border:1px solid #cbd7e5; border-top:3px solid var(--primary); box-shadow:0 10px 30px #203b6240; padding:16px; border-radius:12px; text-align:left; }
  .calendar-mobile-day__items a { display:block; padding:12px 0; color:var(--primary); border-top:1px solid #e1e7ef; margin-top:8px; line-height:1.5; overflow-wrap:anywhere; }
  .calendar-page .calendar-toolbar__actions a { padding:10px 5px; }
  .calendar-page .calendar-help a { margin-left:0; }
}
@media (prefers-reduced-motion:no-preference) {
  .home-event-link,.calendar-page .calendar-event-pill { transition:background .18s ease; }
}
