/* Shared calendar styles for lessons and academic schedules. */
.btl-app .btl-calendar-calendar { min-width: 0; }
.btl-app .btl-calendar-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 20px; margin-bottom: 18px; }
.btl-app .btl-calendar-period { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; min-width: 0; }
.btl-app .btl-calendar-period-title { color: #202534; font-size: 16px; font-weight: 700; letter-spacing: -.035em; font-variant-numeric: tabular-nums; }
.btl-app .btl-calendar-period-controls { display: flex; gap: 4px; }
.btl-app .btl-calendar-period-button { display: grid; place-items: center; width: 40px; height: 40px; padding: 0; color: #61697b; background: #fff; border: 1px solid #e5e7ee; border-radius: 7px; transition: background-color 150ms, color 150ms, border-color 150ms; }
.btl-app .btl-calendar-actions { display: flex; align-items: center; gap: 8px; }
.btl-app .btl-calendar-add { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.btl-app .btl-calendar-manage-tags { white-space: nowrap; }
.btl-app .btl-calendar-edit-status { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: -6px 0 12px; font-size: 12px; }
.btl-app .btl-calendar-clipboard { color: #737b8c; }
.btl-app .btl-calendar-clipboard.is-copied { color: #3449df; }
.btl-app .btl-calendar-undo { padding: 4px 8px; border: 1px solid #e5e7ee; border-radius: 6px; background: #fff; color: #61697b; }
.btl-app .btl-calendar-calendar-card { --btl-ui-card-shadow: none; max-width: 100%; min-width: 0; padding: 0; overflow: hidden; border: 1px solid #e5e7ee; border-radius: 12px; background: #fff; box-shadow: none; }
.btl-app .btl-calendar-calendar-scroll { max-width: 100%; max-height: clamp(320px, calc(100vh - 240px), 620px); max-height: clamp(320px, calc(100dvh - 240px), 620px); overflow: auto; overscroll-behavior-x: contain; scrollbar-color: #cdd2df #f7f8fb; scrollbar-width: thin; }
.btl-app .btl-calendar-calendar-sheet { min-width: 798px; }
.btl-app .btl-calendar-weekdays { position: sticky; top: 0; z-index: 2; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); background: #fafbfc; border-bottom: 1px solid #e5e7ee; }
.btl-app .btl-calendar-weekday { padding: 11px 12px; color: #737b8c; font-size: 11px; font-weight: 600; text-align: left; }
.btl-app .btl-calendar-weekday.is-sunday, .btl-app .btl-calendar-day-number.is-sunday { color: #ad5159; }
.btl-app .btl-calendar-weekday.is-saturday, .btl-app .btl-calendar-day-number.is-saturday { color: #6375ae; }
.btl-app .btl-calendar-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 1px; background: #e5e7ee; outline: none; }
.btl-app .btl-calendar-day { display: flex; flex-direction: column; align-items: stretch; text-align: left; vertical-align: top; border: 0; border-radius: 0; position: relative; min-height: 116px; min-width: 0; padding: 8px 7px 6px; background: #fff; cursor: pointer; transition: background-color 150ms; }
.btl-app .btl-calendar-day.is-outside-month { background: #fafbfc; }
.btl-app .btl-calendar-day.is-focused { background: #f4f5ff; box-shadow: inset 0 0 0 1.5px #3449df; }
.btl-app .btl-calendar-day-heading { display: flex; align-items: center; gap: 4px; min-height: 25px; margin: 0 0 6px; font-variant-numeric: tabular-nums; }
.btl-app .btl-calendar-day-number { display: grid; place-items: center; min-width: 24px; height: 24px; border-radius: 7px; color: #333b4c; font-size: 12px; font-weight: 650; }
.btl-app .btl-calendar-day.is-outside-month .btl-calendar-day-number { color: #9da4b2; }
.btl-app .btl-calendar-day.is-today .btl-calendar-day-number { color: #fff; background: #3449df; }
.btl-app .btl-calendar-day-month { color: #8b92a1; font-size: 10px; font-weight: 500; }
.btl-app .btl-calendar-today-label { color: #3449df; font-size: 10px; font-weight: 600; }
.btl-app .btl-calendar-day-events { display: flex; flex-direction: column; gap: 4px; }
.btl-app .btl-calendar-academic-events { display: flex; flex-direction: column; gap: 3px; margin-bottom: 2px; }
.btl-app .btl-calendar-academic-event { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; padding: 2px 5px; border-left: 2px solid var(--btl-schedule-color, #9299ab); border-radius: 0 3px 3px 0; background: #f2f3f7; color: #777f90; font-size: 10px; font-weight: 500; line-height: 1.45; overflow-wrap: anywhere; }
.btl-app .btl-calendar-event { min-width: 0; padding: 5px 6px; border-left: 2px solid var(--btl-calendar-color, #3449df); border-radius: 0 4px 4px 0; background: #f4f5f8; color: #333b4c; cursor: pointer; transition: background-color 150ms; }
.btl-app .btl-calendar-event-title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; font-size: 11px; font-weight: 650; line-height: 1.4; overflow-wrap: anywhere; }
.btl-app .btl-calendar-event-meta { display: flex; align-items: center; gap: 6px; margin-top: 2px; color: #697386; font-size: 10px; line-height: 1.25; font-weight: 400; font-variant-numeric: tabular-nums; }
.btl-app .btl-calendar-event-meta > span + span::before { content: "·"; margin-right: 6px; color: #adb3be; }
.btl-app .btl-calendar-empty-day { display: grid; place-items: center; height: 32px; color: #cfd4df; font-size: 16px; font-weight: 400; opacity: 0; transition: opacity 150ms; }
.btl-app .btl-calendar-day.is-focused .btl-calendar-empty-day { opacity: 1; }
.btl-app .btl-calendar-attendance-report { display: block; width: 100%; margin-top: 6px; padding: 4px 2px; border: 0; border-radius: 4px; background: transparent; color: #737b8c; font-size: 10px; line-height: 1.4; text-align: left; transition: color 150ms, background-color 150ms; }
.btl-app .btl-calendar-calendar-footer { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 6px 16px; padding: 12px 16px; border-top: 1px solid #e5e7ee; color: #737b8c; font-size: 11px; line-height: 1.5; }
.btl-app .btl-calendar-keyboard-help { color: #737b8c; font-variant-numeric: tabular-nums; }
.btl-app .btl-calendar-day-menu { border: 1px solid #e5e7ee; border-radius: 10px; }
.btl-app .btl-calendar-day-menu-item { border-radius: 6px; }
.btl-app .btl-calendar-day-menu-item.is-selected { background: #3449df; }
.btl-app .btl-calendar-period-button:focus-visible, .btl-app .btl-calendar-undo:focus-visible, .btl-app .btl-calendar-attendance-report:focus-visible { outline: 2px solid #3449df; outline-offset: 2px; }
.btl-app .btl-calendar-calendar-grid:focus-visible .btl-calendar-day.is-focused { box-shadow: inset 0 0 0 2px #3449df; }
@media (hover: hover) {
  .btl-app .btl-calendar-period-button:hover, .btl-app .btl-calendar-undo:hover { color: #3449df; border-color: #cbd1f4; background: #f7f8fe; }
  .btl-app .btl-calendar-day:not(.is-focused):hover { background: #f8f9fc; }
  .btl-app .btl-calendar-day:hover .btl-calendar-empty-day { opacity: 1; }
  .btl-app .btl-calendar-event:hover { background: #e9ecf7; }
  .btl-app .btl-calendar-attendance-report:hover { color: #3449df; background: #edf0ff; }
}
@media (max-width: 640px) {
  .btl-app .btl-calendar-toolbar { gap: 12px; margin-bottom: 14px; }
  .btl-app .btl-calendar-period { justify-content: space-between; width: 100%; gap: 8px; }
  .btl-app .btl-calendar-period-title { font-size: 14px; }
  .btl-app .btl-calendar-period-button { width: 40px; height: 40px; }
  .btl-app .btl-calendar-actions { justify-content: flex-end; width: 100%; }
  .btl-app .btl-calendar-calendar-sheet { min-width: 770px; }
  .btl-app .btl-calendar-calendar-footer { padding: 10px 12px; font-size: 10px; }
  .btl-app .btl-calendar-keyboard-help { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .btl-app .btl-calendar-calendar *, .btl-app .btl-calendar-calendar *::before { transition: none; }
}
