/* Calendar */
.bp-ui .bp-cal-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--bp-s-3); }
.bp-ui .bp-cal-toolbar__nav,
.bp-ui .bp-cal-toolbar__controls { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bp-s-2); }
.bp-ui .bp-cal-toolbar__title { font-size: var(--bp-fs-lg); font-weight: var(--bp-fw-semibold); margin-inline-start: var(--bp-s-2); }
.bp-ui .bp-cal-panel { background: var(--bp-c-surface); border: 1px solid var(--bp-c-border); border-radius: var(--bp-r-lg); overflow: hidden; }
.bp-ui .bp-cal-hint { text-align: center; }

/* Time grid */
.bp-ui .bp-cal-grid__scroll { overflow: auto; max-height: calc(100vh - 260px); min-height: 380px; position: relative; }
.bp-ui .bp-cal-grid__head { display: grid; position: sticky; inset-block-start: 0; z-index: 4; background: var(--bp-c-surface); border-block-end: 1px solid var(--bp-c-border); min-width: max-content; width: 100%; }
.bp-ui .bp-cal-grid__corner { position: sticky; inset-inline-start: 0; background: var(--bp-c-surface); z-index: 5; }
.bp-ui .bp-cal-grid__colhead { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: var(--bp-s-2); border-inline-start: 1px solid var(--bp-c-border); text-align: center; min-width: 0; }
.bp-ui .bp-cal-grid__dow { font-size: var(--bp-fs-sm); color: var(--bp-c-text-2); font-weight: var(--bp-fw-medium); text-transform: capitalize; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.bp-ui .bp-cal-grid__daynum { font-size: var(--bp-fs-lg); font-weight: var(--bp-fw-semibold); width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; }
.bp-ui .bp-cal-grid__colhead.is-today .bp-cal-grid__daynum { background: var(--bp-c-primary); color: var(--bp-c-on-primary); }
.bp-ui .bp-cal-grid__colhead.is-today .bp-cal-grid__dow { color: var(--bp-c-primary-text); font-weight: var(--bp-fw-semibold); }
.bp-ui .bp-cal-grid__body { display: grid; position: relative; min-width: max-content; width: 100%; }
.bp-ui .bp-cal-grid__hours { position: sticky; inset-inline-start: 0; background: var(--bp-c-surface); z-index: 3; }
.bp-ui .bp-cal-grid__hour { position: relative; padding-inline-end: var(--bp-s-2); text-align: end; font-size: var(--bp-fs-xs); color: var(--bp-c-text-3); }
.bp-ui .bp-cal-grid__hour span { position: relative; inset-block-start: -8px; background: var(--bp-c-surface); padding-inline: 2px; }
.bp-ui .bp-cal-grid__hour:first-child span { display: none; }
.bp-ui .bp-cal-grid__col { position: relative; border-inline-start: 1px solid var(--bp-c-border); cursor: cell; min-width: 0; background-image: linear-gradient(to bottom, var(--bp-c-border) 1px, transparent 1px); }
.bp-ui .bp-cal-grid__col.is-today { background-color: color-mix(in srgb, var(--bp-c-primary-soft) 45%, transparent); }
.bp-ui .bp-cal-grid__now { position: absolute; inset-inline: 0; height: 2px; background: var(--bp-c-danger); z-index: 2; pointer-events: none; }
.bp-ui .bp-cal-grid__now::before { content: ""; position: absolute; inset-inline-start: -4px; inset-block-start: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--bp-c-danger); }
.bp-ui .bp-cal-grid__ghost { position: absolute; inset-inline: 2px; border: 2px dashed var(--bp-c-primary); border-radius: var(--bp-r-sm); background: var(--bp-c-primary-soft); z-index: 1; pointer-events: none; }

.bp-ui .bp-cal-event {
  --_c: var(--bp-c-primary); --_bg: var(--bp-c-primary-soft); --_fg: var(--bp-c-primary-text);
  position: absolute; z-index: 1; display: flex; flex-direction: column; gap: 0; padding: 3px var(--bp-s-2); overflow: hidden;
  border: 0; border-inline-start: 3px solid var(--_c); border-radius: var(--bp-r-sm); background: var(--_bg); color: var(--_fg);
  font: inherit; font-size: var(--bp-fs-xs); line-height: 1.3; text-align: start; cursor: pointer; box-shadow: var(--bp-sh-xs);
}
.bp-ui .bp-cal-event:hover { filter: brightness(0.97); z-index: 2; }
.bp-ui .bp-cal-event:focus-visible { outline: 2px solid var(--bp-focus-color); outline-offset: 1px; z-index: 3; }
.bp-ui .bp-cal-event[draggable="true"] { cursor: grab; }
.bp-ui .bp-cal-event__time { font-weight: var(--bp-fw-semibold); font-variant-numeric: tabular-nums; }
.bp-ui .bp-cal-event__title { font-weight: var(--bp-fw-semibold); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bp-ui .bp-cal-event__sub { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bp-ui .bp-cal-event.is-short { flex-direction: row; align-items: center; gap: var(--bp-s-2); }
.bp-ui .bp-cal-event.is-pending { --_c: var(--bp-c-warning); --_bg: var(--bp-c-warning-soft); --_fg: color-mix(in srgb, var(--bp-c-warning) 55%, var(--bp-c-text)); }
.bp-ui .bp-cal-event.is-completed { --_c: var(--bp-c-success); --_bg: var(--bp-c-success-soft); --_fg: color-mix(in srgb, var(--bp-c-success) 60%, var(--bp-c-text)); }
.bp-ui .bp-cal-event.is-cancelled { --_c: var(--bp-c-danger); --_bg: var(--bp-c-danger-soft); --_fg: color-mix(in srgb, var(--bp-c-danger) 60%, var(--bp-c-text)); text-decoration: line-through; opacity: 0.8; }

/* Month */
.bp-ui .bp-cal-month__head { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-block-end: 1px solid var(--bp-c-border); }
.bp-ui .bp-cal-month__head > div { padding: var(--bp-s-2); text-align: center; font-size: var(--bp-fs-sm); font-weight: var(--bp-fw-medium); color: var(--bp-c-text-2); text-transform: capitalize; }
.bp-ui .bp-cal-month__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.bp-ui .bp-cal-month__cell { display: flex; flex-direction: column; gap: 2px; padding: var(--bp-s-1); border-inline-start: 1px solid var(--bp-c-border); border-block-end: 1px solid var(--bp-c-border); min-width: 0; }
.bp-ui .bp-cal-month__cell:nth-child(7n + 1) { border-inline-start: 0; }
.bp-ui .bp-cal-month__cell.is-outside { background: var(--bp-c-surface-2); }
.bp-ui .bp-cal-month__cell.is-outside .bp-cal-month__num { color: var(--bp-c-text-3); }
.bp-ui .bp-cal-month__num { align-self: flex-start; width: 26px; height: 26px; display: grid; place-items: center; border: 0; border-radius: 50%; background: none; color: var(--bp-c-text); font: inherit; font-size: var(--bp-fs-sm); font-weight: var(--bp-fw-medium); cursor: pointer; }
.bp-ui .bp-cal-month__num:hover { background: var(--bp-c-surface-3); }
.bp-ui .bp-cal-month__cell.is-today .bp-cal-month__num { background: var(--bp-c-primary); color: var(--bp-c-on-primary); }
.bp-ui .bp-cal-month__cell ul { display: flex; flex-direction: column; gap: 2px; }
.bp-ui .bp-cal-chip { --_c: var(--bp-c-primary); --_bg: var(--bp-c-primary-soft); --_fg: var(--bp-c-primary-text); display: flex; gap: var(--bp-s-1); width: 100%; padding: 1px var(--bp-s-2); border: 0; border-inline-start: 3px solid var(--_c); border-radius: var(--bp-r-xs); background: var(--_bg); color: var(--_fg); font: inherit; font-size: var(--bp-fs-xs); text-align: start; cursor: pointer; overflow: hidden; }
.bp-ui .bp-cal-chip:focus-visible { outline: 2px solid var(--bp-focus-color); outline-offset: 1px; }
.bp-ui .bp-cal-chip.is-pending { --_c: var(--bp-c-warning); --_bg: var(--bp-c-warning-soft); --_fg: color-mix(in srgb, var(--bp-c-warning) 55%, var(--bp-c-text)); }
.bp-ui .bp-cal-chip.is-completed { --_c: var(--bp-c-success); --_bg: var(--bp-c-success-soft); --_fg: color-mix(in srgb, var(--bp-c-success) 60%, var(--bp-c-text)); }
.bp-ui .bp-cal-chip.is-cancelled { --_c: var(--bp-c-danger); --_bg: var(--bp-c-danger-soft); --_fg: color-mix(in srgb, var(--bp-c-danger) 60%, var(--bp-c-text)); text-decoration: line-through; }
.bp-ui .bp-cal-chip__time { font-weight: var(--bp-fw-semibold); font-variant-numeric: tabular-nums; flex: 0 0 auto; }
.bp-ui .bp-cal-chip__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bp-ui .bp-cal-month__more { align-self: flex-start; border: 0; background: none; color: var(--bp-c-link); font: inherit; font-size: var(--bp-fs-xs); cursor: pointer; padding: 0 var(--bp-s-1); }
@media (max-width: 720px) {
  .bp-ui .bp-cal-month__grid { grid-template-rows: none !important; grid-auto-rows: minmax(64px, auto); }
  .bp-ui .bp-cal-chip__title { display: none; }
  .bp-ui .bp-cal-chip { justify-content: center; padding: 1px; border-inline-start-width: 0; border-block-end: 3px solid var(--_c); }
}

/* Agenda */
.bp-ui .bp-cal-agenda { display: flex; flex-direction: column; gap: var(--bp-s-4); padding: var(--bp-s-4); }
.bp-ui .bp-cal-agenda__date { font-size: var(--bp-fs-sm); font-weight: var(--bp-fw-semibold); color: var(--bp-c-text-2); margin-block-end: var(--bp-s-1); text-transform: capitalize; }
