/* ===== SF Calendar (HARDENED against Elementor/theme resets) ===== */

.sf-calendar{
  font-family: Arial, sans-serif;
  width: 100%;
}

/* Title */
.sf-calendar .sf-calendar__head{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  margin: 0 0 10px !important;
}
.sf-calendar .sf-calendar__title{
  font-weight:700 !important;
  font-size:18px !important;
  color:#111 !important;
}

/* Grid */
.sf-calendar .sf-calendar__grid{
  display:grid !important;
  grid-template-columns:repeat(7, minmax(0, 1fr)) !important;
  gap:10px !important;
  width:100% !important;
  align-items:stretch !important;
}
.sf-calendar .sf-calendar__grid > *{
  min-width:0 !important;
  box-sizing:border-box !important;
}

/* Weekdays */
.sf-calendar .sf-calendar-weekday{
  display:block !important;
  text-align:center !important;
  font-weight:700 !important;
  font-size:15px !important;
  color:#222 !important;
  margin: 0 0 2px !important;
  line-height:1.2 !important;
}

/* Cells */
.sf-calendar .sf-calendar-cell{
  background:#fff !important;
  border:1px solid #dcdcdc !important;
  border-radius:0 0 12px 0 !important;
  padding:42px 10px 10px !important;
  min-height:110px !important;
  box-shadow:0 3px 8px rgba(0,0,0,0.05) !important;

  position:relative !important;

  display:flex !important;
  flex-direction:column !important;
  justify-content:flex-start !important;

  box-sizing:border-box !important;
  overflow:hidden !important;
}

.sf-calendar .sf-calendar-cell--weekend{
  background:#f1f1f1 !important;
}

.sf-calendar .sf-calendar-cell--empty{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  min-height:110px !important;
}

/* Date number */
.sf-calendar .sf-date-number{
  position:absolute !important;
  top:10px !important;
  right:12px !important;
  font-weight:700 !important;
  font-size:18px !important;
  color:#000 !important;
  line-height:1 !important;
}

/* Events wrapper */
.sf-calendar .sf-calendar-events{
  display:flex !important;
  flex-direction:column !important;
  gap:4px !important;
  width:100% !important;
  margin-top:auto !important;
}

/* Event pill */
.sf-calendar a.sf-event{
  display: block !important;
  width: 100% !important;
  align-self: stretch !important;

  padding: 4px 8px !important;
  border-radius: 13px !important;

  font-size: 12px !important;
  font-weight: 600 !important;
  line-height: 1.2 !important;
  color: #fff !important;
  text-decoration: none !important;

  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  overflow-wrap: anywhere !important;
  box-sizing: border-box !important;
}

/* Filter UI */
.sf-calendar-filter{
  display:flex !important;
  align-items:center !important;
  gap:10px !important;
}
.sf-calendar-filter__label{
  font-weight:700 !important;
  font-size:14px !important;
}
.sf-calendar-filter__select{
  border:1px solid #d0d0d0 !important;
  border-radius:10px !important;
  padding:8px 10px !important;
  font-size:14px !important;
  background:#fff !important;
}

/* Mobile: agenda/list */
@media (max-width: 640px){
  .sf-calendar .sf-calendar__grid{
    grid-template-columns:1fr !important;
    gap:8px !important;
  }
  .sf-calendar .sf-calendar-weekday{
    display:none !important;
  }
  .sf-calendar .sf-calendar-cell--empty{
    display:none !important;
  }
  .sf-calendar .sf-calendar-cell{
    min-height:auto !important;
    justify-content:flex-start !important;
    padding:12px !important;
  }
  .sf-calendar .sf-date-number{
    position:static !important;
    margin:0 0 8px !important;
    font-size:16px !important;
  }
}

/* Prevent FOUC: hide calendar until JS marks it ready */
.sf-calendar[data-sf-ready="0"]{
  visibility: hidden;
}
.sf-calendar[data-sf-ready="1"]{
  visibility: visible;
}

/* Track days fallback modal */
.sf-track-modal{
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: block;
}
.sf-track-modal[hidden]{
  display: none !important;
}
.sf-track-modal__backdrop{
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.6);
}
.sf-track-modal__dialog{
  position: relative;
  width: min(960px, calc(100vw - 24px));
  max-height: calc(100vh - 24px);
  margin: 12px auto;
  overflow: auto;
  background: #fff;
  border-radius: 12px;
  padding: 16px;
  box-sizing: border-box;
  z-index: 1;
}
.sf-track-modal__close{
  position: sticky;
  top: 0;
  margin-left: auto;
  display: block;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  background: #111;
  color: #fff;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.sf-track-modal-open{
  overflow: hidden;
}
