/* Shared TRISMA calendar presentation for scheduling and operational views. */
.trisma-calendar {
  --trisma-calendar-mint: #3ecfb2;
  --trisma-calendar-mint-deep: #168269;
  --trisma-calendar-text: #0f2b25;
  --trisma-calendar-muted: #4a7a70;
  display: grid;
  gap: 8px;
}

.trisma-calendar-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.trisma-calendar .booking-calendar-controls {
  display: flex;
  align-items: center;
}

.trisma-calendar .trisma-calendar-month {
  order: 1;
  min-width: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: left;
}

.trisma-calendar .booking-month-button[data-booking-month="previous"] {
  order: 2;
  margin-left: auto;
}

.trisma-calendar .booking-month-button[data-booking-month="next"] { order: 3; }

.trisma-calendar-month {
  color: var(--trisma-calendar-text);
  font-family: var(--font-heading, sans-serif);
  font-size: 1.05rem;
  font-weight: 700;
}

.trisma-calendar-nav-button {
  display: grid;
  width: 40px;
  height: 40px;
  padding: 0;
  place-items: center;
  border: 1px solid rgba(15, 43, 37, 0.12);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.7);
  color: var(--trisma-calendar-text);
  font: inherit;
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
}

.trisma-calendar-nav-button:hover {
  border-color: rgba(62, 207, 178, 0.52);
  background: rgba(238, 251, 247, 0.9);
}

.trisma-calendar-nav-button:focus-visible,
.trisma-calendar-day:focus-visible {
  outline: 3px solid rgba(62, 207, 178, 0.36);
  outline-offset: 2px;
}

.trisma-calendar-weekdays,
.trisma-calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 7px;
}

.trisma-calendar-weekdays {
  margin-top: 8px;
  color: var(--trisma-calendar-muted);
  font-size: 0.72rem;
  font-weight: 700;
  text-align: center;
}

.trisma-calendar-empty,
.trisma-calendar-day {
  min-height: 62px;
}

.trisma-calendar-day {
  position: relative;
  display: grid;
  width: 100%;
  padding: 10px;
  align-content: start;
  justify-items: start;
  border: 1px solid transparent;
  border-radius: 14px;
  background: transparent;
  color: rgba(15, 43, 37, 0.32);
  font: inherit;
  font-weight: 700;
  text-align: left;
}

.trisma-calendar-day.is-unavailable { cursor: not-allowed; }

.trisma-calendar-day.is-available {
  border-color: rgba(15, 43, 37, 0.1);
  background: rgba(255, 255, 255, 0.74);
  box-shadow: 0 8px 18px rgba(15, 43, 37, 0.04);
  color: var(--trisma-calendar-text);
  cursor: pointer;
}

.trisma-calendar-day.is-available:hover {
  border-color: rgba(62, 207, 178, 0.48);
  box-shadow: 0 8px 18px rgba(15, 43, 37, 0.06), inset 0 0 0 1px rgba(151, 255, 232, 0.16);
  transform: none;
}

.trisma-calendar-day.is-available::after {
  position: absolute;
  right: 11px;
  bottom: 10px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--trisma-calendar-mint);
  box-shadow: 0 0 0 4px rgba(62, 207, 178, 0.12);
  content: "";
}

.trisma-calendar-day.is-selected {
  border-color: rgba(62, 207, 178, 0.56);
  background: rgba(221, 245, 238, 0.9);
  box-shadow: inset 0 0 0 1px rgba(151, 255, 232, 0.2), 0 8px 18px rgba(15, 43, 37, 0.05);
  color: var(--trisma-calendar-mint-deep);
  transform: none;
}

.trisma-calendar-day.is-selected::after {
  background: var(--trisma-calendar-mint);
  box-shadow: 0 0 0 4px rgba(62, 207, 178, 0.12);
}

.profile-booking-panel {
  width: 100%;
}

.profile-card-grid-wrap > .profile-booking-calendar-card {
  grid-column: 1 / -1;
  height: auto;
}

.profile-booking-calendar-card {
  display: grid;
  gap: 8px;
  align-content: start;
}

.portal-booking-picker {
  display: grid;
  gap: 8px;
  width: 100%;
  margin-top: 18px;
  padding: 22px;
  border: 1px solid rgba(62, 207, 178, 0.2);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.7);
  box-shadow: 0 16px 34px rgba(15, 43, 37, 0.06);
}

.portal-booking-inline-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 12px;
}

.portal-booking-inline-head span {
  color: var(--trisma-calendar-mint-deep);
  font-size: 0.76rem;
  font-weight: 700;
  text-transform: uppercase;
}

.portal-booking-inline-head h2 {
  margin: 3px 0 0;
  color: var(--trisma-calendar-text);
  font-family: var(--font-heading, sans-serif);
  font-size: 1.1rem;
}

.portal-booking-picker .booking-modal-helper {
  margin: 6px 0 12px;
}

.portal-booking-picker .booking-times {
  margin-top: 14px;
}

@media (max-width: 560px) {
  .trisma-calendar-weekdays,
  .trisma-calendar-grid { gap: 4px; }

  .trisma-calendar-empty,
  .trisma-calendar-day { min-height: 46px; }

  .trisma-calendar-day {
    padding: 7px 6px;
    border-radius: 10px;
    font-size: 0.9rem;
  }

  .trisma-calendar-day.is-available::after {
    right: 7px;
    bottom: 7px;
    width: 6px;
    height: 6px;
  }

  .portal-booking-picker {
    margin-top: 14px;
    padding: 16px;
  }
}
