.kac-calendar-wrap{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  position:relative;
}
.kac-calendar-wrap *{box-sizing:border-box}

.kac-month{
  margin:0 0 1.6rem;
  min-width:0;
}

/* Each displayed month owns one unified navigation/title row. */
.kac-nav{
  display:grid;
  grid-template-columns:auto auto minmax(0,1fr) auto auto;
  align-items:center;
  gap:.45rem;
  margin:0 0 .75rem;
}
.kac-nav-button{
  width:var(--kac-nav-button-width);
  height:var(--kac-nav-button-height);
  min-width:0;
  min-height:0;
  padding:0 .35rem;
  border:var(--kac-nav-button-border-width) solid var(--kac-nav-button-border-color);
  border-radius:5px;
  background:var(--kac-nav-button-bg);
  color:var(--kac-nav-button-font-color);
  cursor:pointer;
  font-family:inherit;
  font-size:var(--kac-nav-button-font-size);
  font-weight:var(--kac-nav-button-font-weight);
  line-height:1;
}
.kac-nav-button:hover,.kac-nav-button:focus{filter:brightness(.96)}
.kac-nav-button:disabled{opacity:.45;cursor:wait}
.kac-nav-title{
  text-align:center;
  font-size:var(--kac-nav-title-font-size);
  color:var(--kac-nav-title-font-color);
  font-weight:var(--kac-nav-title-font-weight);
  white-space:nowrap;
}

.kac-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  width:100%;
  min-width:0;
  border-top:var(--kac-border-width) solid var(--kac-border-color);
  border-left:var(--kac-border-width) solid var(--kac-border-color);
}
.kac-weekday,.kac-day{
  min-width:0;
  border-right:var(--kac-border-width) solid var(--kac-border-color);
  border-bottom:var(--kac-border-width) solid var(--kac-border-color);
}
.kac-weekday{
  padding:.45rem .2rem;
  text-align:center;
  background:var(--kac-weekday-bg);
  font-size:var(--kac-weekday-size);
  color:var(--kac-weekday-color);
  font-weight:var(--kac-weekday-weight);
}
.kac-day{
  min-height:clamp(88px,13vw,155px);
  padding:.35rem;
  background:var(--kac-current-bg);
  overflow:hidden;
}
.kac-day-adjacent{background:var(--kac-adjacent-bg)}
.kac-day-adjacent .kac-day-number{opacity:.45}
.kac-day-number{
  margin:0 0 .3rem;
  font-size:var(--kac-date-size);
  line-height:1.2;
}
.kac-day-weekday .kac-day-number{
  color:var(--kac-date-weekday-color);
  font-weight:var(--kac-date-weekday-weight);
}
.kac-day-saturday .kac-day-number{
  color:var(--kac-date-sat-color);
  font-weight:var(--kac-date-sat-weight);
}
.kac-day-holiday .kac-day-number{
  color:var(--kac-date-holiday-color);
  font-weight:var(--kac-date-holiday-weight);
}
/* Today overrides normal weekday/weekend styles. */
.kac-day-today{background:var(--kac-today-bg)}
.kac-day-today .kac-day-number{
  opacity:1;
  font-size:var(--kac-today-size);
  color:var(--kac-today-color);
  font-weight:var(--kac-today-weight);
}

.kac-event{
  display:block;
  min-width:0;
  margin:0 0 .35rem;
  padding:.38rem .42rem;
  border:0;
  border-radius:5px;
  background:var(--kac-event-bg,var(--kac-service-bg));
  text-decoration:none;
  color:inherit;
  line-height:1.35;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.kac-event:hover,.kac-event:focus{filter:brightness(.97)}
.kac-event-time,.kac-event-name,.kac-event-capacity,.kac-event-status{
  display:block;
  min-width:0;
}
.kac-event-time{
  font-size:var(--kac-time-size);
  color:var(--kac-time-color);
  font-weight:var(--kac-time-weight);
}
.kac-event-name{
  margin-top:.08rem;
  font-size:var(--kac-name-size);
  color:var(--kac-name-color);
  font-weight:var(--kac-name-weight);
}
.kac-event-capacity{
  margin-top:.15rem;
  font-size:var(--kac-cap-size);
  color:var(--kac-cap-color);
  font-weight:var(--kac-cap-weight);
}
.kac-remain{
  color:var(--kac-remain-color);
  font-weight:var(--kac-remain-weight);
}
.kac-remain-unavailable{color:var(--kac-remain-unavailable-color)}
.kac-event-status{
  margin-top:.12rem;
  font-size:var(--kac-status-size);
  font-weight:var(--kac-status-weight);
}
.kac-status-open{color:var(--kac-status-open-color)}
.kac-status-full{color:var(--kac-status-full-color)}
.kac-status-closed{color:var(--kac-status-closed-color)}
.kac-status-waiting{color:var(--kac-status-waiting-color)}

.kac-loading{
  position:absolute;
  inset:1rem 0 auto 0;
  margin:auto;
  width:max-content;
  max-width:90%;
  padding:.5rem .8rem;
  border-radius:5px;
  background:rgba(255,255,255,.92);
  box-shadow:0 1px 6px rgba(0,0,0,.15);
  z-index:3;
}
.kac-public-error{padding:1rem;border:1px solid #b32d2e}
.kac-calendar-wrap.is-loading .kac-months{opacity:.45;pointer-events:none}

@media (max-width:1024px){
  .kac-nav{gap:.25rem;margin-bottom:.55rem}
  .kac-nav-button{padding:0 .25rem}
  .kac-nav-title{font-size:1rem}
  .kac-weekday{padding:.3rem .05rem}
  .kac-day{min-height:82px;padding:.18rem}
  .kac-day-number{margin-bottom:.16rem}
  .kac-event{margin-bottom:.2rem;padding:.2rem .18rem;border-radius:3px;line-height:1.25}
  .kac-event-capacity,.kac-event-status{margin-top:.08rem}
}

@media (max-width:480px){
  .kac-nav-button{padding:0 .18rem}
  .kac-nav-title{font-size:.92rem}
  .kac-day{min-height:68px}
  .kac-event{padding:.16rem .12rem}
}

/* v1.1.0: weekday/date and time/service-name labels are left aligned. */
.kac-weekday,
.kac-day-number,
.kac-event-time,
.kac-event-name{
  text-align:left!important;
}
.kac-day,
.kac-event,
.kac-event-capacity,
.kac-event-status{
  text-align:right!important;
}
.kac-weekday,.kac-day,.kac-event{vertical-align:top}
.kac-day{align-content:start}
