.of {
  overflow: hidden;
}

.of::after {
  clear: both;
}

.c-w {
  width: var(--w);
  margin-inline: auto;
}

.c-ipf {
  color: red;
  font-weight: bold;
  font-style: normal;
}

.c-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

/* 基础省略号类：c-eli（通用重置 + 基础溢出控制） */
.c-eli {
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
  box-sizing: border-box;
}

/* r1：超1行显示省略号（单行省略） */
.celi.r1 {
  white-space: nowrap; /* 强制不换行 */
}

/* r2：超2行显示省略号（多行省略） */
.celi.r2 {
  display: -webkit-box; /* 必须：开启webkit弹性盒 */
  -webkit-box-orient: vertical; /* 必须：垂直排列 */
  -webkit-line-clamp: 2; /* 关键：只显示2行 */
  white-space: normal; /* 取消单行强制不换行 */
}

/* r3：超3行显示省略号（你的核心需求） */
.celi.r3 {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3; /* 关键：只显示3行 */
  white-space: normal;
}
