/* Free slots */
.free {
  position: absolute;
  left: 3px;
  right: 3px;
  display: none;
  /* ВАЖНО: было align-items/justify-content/gap — теперь растягиваем
     по вертикали, время уходит к краям через space-between */
  flex-direction: column;
  justify-content: space-between;
  align-items: stretch;
  padding: 2px 4px;
  text-align: center;
  border: 1.5px dashed var(--green);
  border-radius: 6px;
  background: rgba(52, 168, 83, 0.12);
  color: #a8dab5;
  font-size: 11px;
  line-height: 1.15;
  overflow: hidden;
  z-index: 1;
  pointer-events: none;
}
.calendar.show-free .free { display: flex; }

/* Время старта / конца — прижато к верхнему и нижнему краю слота */
.free-time {
  font-size: 10px;
  font-weight: 700;
  color: #ceead6;
  letter-spacing: 0.2px;
  line-height: 1;
  flex: 0 0 auto;
}

/* Центральная зона: FREE + длительность */
.free-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}

.free-t {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  opacity: 0.9;
}
.free-dur { font-size: 10px; opacity: 0.85; white-space: nowrap; }

/* Compact: если слот короче ~1.5 часа — центр скрываем,
   оставляем только время по краям, иначе всё слипается */
.free.compact .free-center { display: none; }
.free.compact { padding: 3px 4px; }