.pega-calendar { background: var(--pega-bg, #fff); color: var(--pega-text, #1a1a1a); font-family: inherit; }
.pega-calendar *, .pega-calendar *::before, .pega-calendar *::after { box-sizing: border-box; }

.pega-calendar__filters { display:flex; flex-wrap:wrap; gap:16px; align-items:flex-end; padding:12px; border:1px solid var(--pega-grid,#e5e7eb); border-radius:6px; margin-bottom:12px; }
.pega-calendar__filter-label { display:block; font-weight:600; font-size:0.85em; margin-bottom:4px; }
.pega-calendar__chk-group { display:flex; flex-wrap:wrap; gap:8px 14px; max-width:520px; }
.pega-calendar__chk-group label { display:inline-flex; align-items:center; gap:4px; font-size:0.9em; }
.pega-calendar__filter select { padding:6px 8px; }

.pega-calendar__grid-wrap { overflow-x:auto; }
.pega-calendar__grid { width:100%; border-collapse: collapse; min-width: 720px; }
.pega-calendar__grid th,
.pega-calendar__grid td { border:1px solid var(--pega-grid,#e5e7eb); padding:6px; text-align:left; vertical-align:top; }
.pega-calendar__grid thead th { background: var(--pega-grid,#e5e7eb); font-weight:600; text-align:center; }
.pega-calendar__corner { width:90px; }
.pega-calendar__time { width:90px; font-weight:600; font-size:0.85em; background: var(--pega-grid,#e5e7eb); }

.pega-calendar__cell { height:42px; min-width:90px; }
.pega-calendar__cell.is-empty { background: var(--pega-empty, #f3f4f6); }
.pega-calendar__cell .pega-calendar__class { display:block; background: var(--pega-primary,#2c7be5); color:#fff; padding:4px 6px; border-radius:3px; font-size:0.8em; cursor:pointer; margin-bottom:2px; }
.pega-calendar__cell .pega-calendar__class:hover { filter: brightness(1.1); }
.pega-calendar tbody tr.is-hidden { display:none; }

.pega-calendar__modal { position:fixed; inset:0; background:rgba(0,0,0,0.5); display:flex; align-items:center; justify-content:center; z-index:9999; }
.pega-calendar__modal[hidden] { display:none; }
.pega-calendar__modal-inner { background:#fff; color:#1a1a1a; max-width:560px; width:92%; max-height:85vh; overflow:auto; border-radius:6px; padding:24px; position:relative; }
.pega-calendar__modal-close { position:absolute; top:8px; right:12px; background:transparent; border:0; font-size:28px; cursor:pointer; line-height:1; }
.pega-calendar__modal-body h3 { margin-top:0; }
.pega-calendar__modal-class { padding:12px 0; border-bottom:1px solid #eee; }
.pega-calendar__modal-class:last-child { border-bottom:0; }
.pega-calendar__modal-class h4 { margin:0 0 4px; }
.pega-calendar__modal-class .meta { font-size:0.85em; color:#555; margin:4px 0; }
.pega-calendar__modal-class .skills { display:flex; flex-wrap:wrap; gap:8px; margin:6px 0; }
.pega-calendar__modal-class .skills span { display:inline-flex; align-items:center; gap:4px; font-size:0.85em; background:#f3f4f6; padding:3px 8px; border-radius:99px; }

/* Mobile bar (hidden on desktop). */
.pega-calendar__mobile-bar { display:none; align-items:center; gap:8px; padding:8px 4px 12px; }
.pega-calendar__mobile-bar button { background:transparent; border:1px solid var(--pega-grid,#e5e7eb); color:var(--pega-text,#1a1a1a); border-radius:6px; cursor:pointer; padding:6px 10px; font-size:18px; line-height:1; }
.pega-calendar__day-label { flex:1; text-align:center; font-weight:600; font-size:1.05em; }
.pega-calendar__filters-toggle { display:inline-flex; align-items:center; justify-content:center; padding:6px !important; }

.pega-calendar__filters-close { display:none; position:absolute; top:8px; right:10px; background:transparent; border:0; font-size:26px; line-height:1; cursor:pointer; color:var(--pega-text,#1a1a1a); }
.pega-calendar__filters-backdrop { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.4); z-index:9998; }

@media (max-width: 768px) {
	.pega-calendar { position:relative; }
	.pega-calendar__mobile-bar { display:flex; }

	/* Filters become a slide-in drawer. */
	.pega-calendar__filters {
		position:fixed; top:0; right:-340px; width:300px; max-width:90vw; height:100vh;
		background:var(--pega-bg,#fff); padding:48px 16px 16px; margin:0;
		box-shadow:-4px 0 20px rgba(0,0,0,0.1); z-index:9999;
		transition:right 0.3s ease; overflow-y:auto; flex-direction:column; align-items:stretch;
		border:0; border-radius:0;
	}
	.pega-calendar.is-filters-open .pega-calendar__filters { right:0; }
	.pega-calendar.is-filters-open .pega-calendar__filters-backdrop { display:block; }
	.pega-calendar__filters-close { display:block; }
	.pega-calendar__chk-group { max-width:none; }

	/* Day-at-a-time view. */
	.pega-calendar__corner { display:none; }
	.pega-calendar__time { width:auto; min-width:70px; }
	.pega-calendar [data-day] { display:none !important; }
	.pega-calendar[data-active-day="sun"] [data-day="sun"] { display:table-cell !important; }
	.pega-calendar[data-active-day="mon"] [data-day="mon"] { display:table-cell !important; }
	.pega-calendar[data-active-day="tue"] [data-day="tue"] { display:table-cell !important; }
	.pega-calendar[data-active-day="wed"] [data-day="wed"] { display:table-cell !important; }
	.pega-calendar[data-active-day="thu"] [data-day="thu"] { display:table-cell !important; }
	.pega-calendar[data-active-day="fri"] [data-day="fri"] { display:table-cell !important; }
	.pega-calendar[data-active-day="sat"] [data-day="sat"] { display:table-cell !important; }
	.pega-calendar__grid thead th[data-day] { font-size:0; padding:0; height:0; border:0; } /* day header redundant on mobile */
	.pega-calendar__grid { min-width:0; }
	.pega-calendar__cell { min-width:auto; }
}
