/* Student services and campus operations: the events calendar, a room's day, the trip check list. */

.cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface);
  box-shadow: var(--raise-1); overflow: hidden; }
.cal-head { padding: .4rem .5rem; font-size: .75rem; font-weight: 650; color: var(--ink-soft); background: var(--surface-2); border-bottom: 1px solid var(--line); text-align: center; }
.cal-day { min-height: 6.4rem; padding: .3rem .35rem .45rem; border-right: 1px solid var(--line-soft); border-bottom: 1px solid var(--line-soft); min-width: 0; }
.cal-day:nth-child(7n) { border-right: 0; }
.cal-day.is-out { background: #fafbfa; }
.cal-day.is-out .cal-date { color: #a9b5b2; }
.cal-day.is-today { box-shadow: inset 0 3px 0 var(--pencil); }
.cal-date { display: flex; align-items: center; gap: .25rem; font-size: .8rem; font-weight: 650; color: var(--ink-soft); margin-bottom: .2rem; }
.cal-dow { display: none; }
.cal-add { margin-left: auto; color: var(--muted); text-decoration: none; line-height: 1; opacity: 0; }
.cal-day:hover .cal-add, .cal-add:focus { opacity: 1; }
.cal-item { display: block; font-size: .74rem; line-height: 1.25; padding: .14rem .3rem; margin-bottom: .18rem; border-radius: 3px; border-left: 3px solid var(--accent);
  background: var(--accent-tint-2); color: var(--ink); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-item:hover { background: var(--accent-tint); }
.cal-item.is-holiday { border-left-color: var(--redpen); background: #fbefee; color: #5c130f; }
.cal-item.is-cal-exam { border-left-color: var(--amber); background: #fbf3e2; color: #4d3500; }
.cal-item.is-cal-deadline { border-left-color: var(--slate); background: #eef1f0; color: var(--ink); }
.cal-item.is-cal-event { border-left-color: var(--green); background: #edf5f0; }
.cal-item.is-sports { border-left-color: var(--green); background: #edf5f0; }
.cal-item.is-cultural, .cal-item.is-religious { border-left-color: #8a5a9e; background: #f5eff7; }
.cal-item.is-ceremony { border-left-color: var(--pencil); background: #fdf6e6; }
.cal-item.is-meeting { border-left-color: var(--muted); background: var(--surface-2); }
.cal-item.is-cancelled { text-decoration: line-through; opacity: .65; }
.cal-time { font-weight: 650; }
@media (max-width: 767.98px) {
  .cal { grid-template-columns: 1fr; }
  .cal-head, .cal-day.is-empty, .cal-day.is-out { display: none; }
  .cal-day { min-height: 0; border-right: 0; padding: .55rem .75rem; }
  .cal-dow { display: inline; }
  .cal-add { opacity: 1; }
  .cal-item { white-space: normal; font-size: .82rem; }
}

/* a room's day: classes, bookings and blocks by time */
.day-list { list-style: none; margin: 0; padding: 0; }
.day-list li { display: grid; grid-template-columns: 7.5rem 1fr auto; gap: .75rem; align-items: baseline; padding: .5rem .95rem; border-top: 1px solid var(--line-soft); }
.day-list li:first-child { border-top: 0; }
.day-list .dl-time { font-variant-numeric: tabular-nums; font-size: .82rem; color: var(--ink-soft); white-space: nowrap; }
.day-list li.is-class { box-shadow: inset 3px 0 0 var(--accent); }
.day-list li.is-booking { box-shadow: inset 3px 0 0 var(--green); }
.day-list li.is-pending { box-shadow: inset 3px 0 0 var(--pencil); }
.day-list li.is-block { box-shadow: inset 3px 0 0 var(--redpen); }
@media (max-width: 575.98px) { .day-list li { grid-template-columns: 1fr auto; } .day-list .dl-time { grid-column: 1 / -1; } }

/* conflicts found while booking */
.clash-list { margin: .35rem 0 0; padding-left: 1.1rem; }
.clash-list li { margin-bottom: .15rem; }

/* trip boarding check list */
.board-list { list-style: none; margin: 0; padding: 0; }
.board-list li { display: flex; gap: .7rem; align-items: center; padding: .45rem .95rem; border-top: 1px solid var(--line-soft); }
.board-list li:first-child { border-top: 0; }
.board-list .form-check-input { width: 1.25rem; height: 1.25rem; margin: 0; flex: 0 0 auto; }
.board-list .bl-stop { margin-left: auto; font-size: .8rem; color: var(--muted); text-align: right; }

/* dormitory room cards */
.room-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .75rem; }
.room-tile { border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); padding: .65rem .8rem; box-shadow: var(--raise-1); }
.room-tile .rt-head { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; margin-bottom: .35rem; }
.room-tile .rt-no { font-weight: 700; }
.room-tile ul { list-style: none; margin: .35rem 0 0; padding: 0; font-size: .82rem; }
.room-tile li { padding: .12rem 0; }

@media print {
  .cal { box-shadow: none; }
  .cal-day { min-height: 5rem; }
}
