/* lightbox.css — 灯箱（.lb-*）：照片放大查看、左右滑、下拉关闭、缩放、计数与说明、加载中占位 / 加载失败 */

.lb-root {
  position: absolute;
  inset: 0;
  z-index: 10;
  overflow: hidden;
  color: #FFFFFF;
  touch-action: none;
  outline: none;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
}
.lb-bg { position: absolute; inset: 0; background: #0C0B0A; }
.lb-stage { position: absolute; inset: 0; touch-action: none; }
.lb-root.is-zoomed .lb-stage { cursor: grab; }
.lb-root.is-grabbing .lb-stage { cursor: grabbing; }
.lb-track { position: absolute; inset: 0; will-change: transform; }
.lb-slide { position: absolute; left: 0; top: 0; width: 100%; height: 100%; }
.lb-frame {
  position: absolute;
  transform-origin: 50% 50%;
  will-change: transform;
  background: rgba(255, 255, 255, .04);
}
.lb-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
  -webkit-user-drag: none;
  transition: opacity 280ms var(--ease-out);
}
/* 还没下载好：淡淡的底 + 转圈；失败：图标 + 文字 */
.lb-frame.is-loading { background: rgba(255, 255, 255, .07); }
.lb-frame.is-loading .lb-img, .lb-frame.is-error .lb-img { opacity: 0; }
.lb-spin {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 32px;
  height: 32px;
  margin: -16px 0 0 -16px;
  border-radius: 50%;
  border: 2.5px solid rgba(255, 255, 255, .2);
  border-top-color: rgba(255, 255, 255, .85);
  opacity: 0;
  transition: opacity var(--dur-2) var(--ease-out);
  pointer-events: none;
}
.lb-frame.is-loading .lb-spin { opacity: 1; animation: lb-spin .9s linear infinite; }
@keyframes lb-spin { to { transform: rotate(360deg); } }
.lb-err {
  position: absolute;
  inset: 0;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: 14px;
  color: rgba(255, 255, 255, .7);
}
.lb-frame.is-error { background: rgba(255, 255, 255, .06); }
.lb-frame.is-error .lb-err { display: flex; }

/* 打开前（等首张图解码）全部透明 */
.lb-root.is-pre .lb-bg, .lb-root.is-pre .lb-stage, .lb-root.is-pre .lb-chrome { opacity: 0; }

/* 顶部计数 + 关闭、两侧翻页（仅鼠标设备）、底部说明 */
.lb-chrome { position: absolute; inset: 0; pointer-events: none; transition: opacity var(--dur-2) var(--ease-out); }
.lb-root.is-bare .lb-chrome { opacity: 0; }
.lb-root.is-bare .lb-chrome .lb-btn { pointer-events: none; }
.lb-top {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 10px 28px 20px;
  background: linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, 0));
}
.lb-count {
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 1px;
  font-variant-numeric: tabular-nums;
  color: rgba(255, 255, 255, .92);
}
.lb-of { color: rgba(255, 255, 255, .6); }
.lb-btn {
  pointer-events: auto;
  flex: none;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #FFFFFF;
  background: rgba(255, 255, 255, .1);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  transition: background-color var(--dur-2), transform var(--dur-1) var(--ease-out), opacity var(--dur-2);
}
.lb-btn:hover { background: rgba(255, 255, 255, .2); }
.lb-btn:active { transform: scale(.92); }
.lb-btn:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 2px; }
.lb-close { margin-left: auto; }
.lb-nav { position: absolute; top: 50%; margin-top: -22px; display: none; }
.lb-prev { left: 10px; }
.lb-next { right: 10px; }
@media (hover: hover) and (pointer: fine) {
  .lb-nav { display: inline-flex; }
}
.lb-bottom {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 40px 22px 24px;
  background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, .58));
}
.lb-cap {
  font-size: 15px;
  line-height: 1.6;
  color: rgba(255, 255, 255, .94);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
