:root {
  /* Fallbacks for subtle backgrounds if theme variables missing */
  --vt-cal-has-events-bg: var(--bs-primary-bg-subtle, rgba(13,110,253,.1));
  --vt-cal-has-events-border: var(--bs-primary-border-subtle, rgba(13,110,253,.25));
  --vt-cal-enrolled-bg: var(--bs-warning-bg-subtle, rgba(255,193,7,.15));
  --vt-cal-enrolled-border: var(--bs-warning, #ffc107);
  --vt-cal-out-bg: var(--bs-tertiary-bg, rgba(108,117,125,.08));
}

.vt-calendar {
  table-layout: fixed;
  width: 100%;
  border-collapse: separate; /* keep table borders */
}

.vt-calendar thead th {
  text-align: center;
  user-select: none;
}

.vt-calendar td,
.vt-calendar th {
  vertical-align: top;
}

.vt-cal-td {
  padding: .25rem;
}

.vt-cal-td .vt-cal-day {
  width: 100%;
  /* Maintain square aspect ratio for day cells */
  aspect-ratio: 1 / 1;
  border-radius: .5rem;
  background-color: var(--bs-body-bg);
  display: flex;
  align-items: stretch;
  justify-content: stretch;
  transition: box-shadow .15s ease, transform .05s ease;
}

/* Out-of-month days */
.vt-cal-td.is-out .vt-cal-day {
  background-color: var(--vt-cal-out-bg);
  opacity: .6;
}

/* Days with events */
.vt-cal-td.has-events .vt-cal-day {
  background-color: var(--vt-cal-has-events-bg);
  box-shadow: inset 0 0 0 1px var(--vt-cal-has-events-border);
}

/* Days where the current user is enrolled */
.vt-cal-td.is-enrolled .vt-cal-day {
  background-color: var(--vt-cal-enrolled-bg);
  box-shadow: inset 0 0 0 2px var(--vt-cal-enrolled-border);
}

/* Today highlight ring overlays other states */
.vt-cal-td.is-today .vt-cal-day {
  box-shadow: inset 0 0 0 2px var(--bs-success, #198754), 0 0 0 1px rgba(0,0,0,0.02);
}

/* Hover and focus states for better UX */
.vt-cal-td .vt-cal-day[role="button"] { cursor: pointer; }
.vt-cal-td .vt-cal-day:hover { filter: brightness(0.99); }
.vt-cal-td .vt-cal-day:focus-visible { outline: 3px solid var(--bs-primary, #0d6efd); outline-offset: 2px; }

/* Inner layout */
.vt-cal-day-inner {
  flex: 1;
  padding: .35rem .4rem;
  display: flex;
  flex-direction: column;
}

.vt-cal-day-header {
  display: flex;
  width: 100%;
  align-items: start;
  justify-content: space-between;
}

.vt-cal-day-number {
  font-weight: 600;
  font-size: .9rem;
}

/* Make badges compact inside the cell */
.vt-cal-day .badge {
  font-weight: 600;
  font-size: .65rem;
}

/* Give enrolled days more prominent badge contrast */
.vt-cal-td.is-enrolled .badge {
  background-color: var(--vt-cal-enrolled-border);
  color: #000;
}

/* On very small screens, reduce padding/font to fit */
@media (max-width: 420px) {
  .vt-cal-td { padding: .15rem; }
  .vt-cal-day-inner { padding: .25rem; }
  .vt-cal-day-number { font-size: .8rem; }
  .vt-cal-day .badge { font-size: .6rem; }
}
