/* ============================================================
 * 轮播图
 *
 * —— 优先级链 ——
 *   ① 后台小工具输出的 inline style  (style="--slider-ratio: 16 / 9")
 *        内联样式优先级最高，会覆盖下面所有默认值
 *   ② 本文件里的断点默认值          (--slider-ratio-md / -sm)
 *   ③ 本文件里的桌面默认值          (--slider-ratio)
 *
 * 所以后台只要在 .slider 上写一句 style="--slider-ratio: 4 / 3"
 * 就能单独控制那一个实例，不需要为每个比例再写一个 class。
 * ============================================================ */

.slider {
  /* ---- 可由后台覆盖的比例变量 ---- */
  --slider-ratio: 8 / 3;          /* 桌面宽高比，原版 1200×450 即 8:3 */
  --slider-ratio-md: 16 / 9;      /* ≤1024px 平板 */
  --slider-ratio-sm: 3 / 2;       /* ≤640px 手机 */

  /* ---- 尺寸夹取 ---- */
  --slider-min-height: 160px;     /* 高度下限：极窄容器兜底 */
  --slider-max-height: 450px;     /* 高度上限：超宽屏不再变高，可设为 none 解除 */

  position: relative;
  width: 100%;
  height: 450px;                  /* 不支持 aspect-ratio 的旧浏览器兜底：退回原版固定 450px */
  overflow: hidden;
  border-radius: 8px;
}

/* 现代浏览器：高度 = 宽度 ÷ 比例，并夹在 [min, max] 之间 */
@supports (aspect-ratio: 1 / 1) {
  .slider {
    height: auto;
    aspect-ratio: var(--slider-ratio);
    min-height: var(--slider-min-height);
    max-height: var(--slider-max-height);
  }
}

/* 断点：屏幕越窄比例越高（避免横幅被压成一条）
   注意这里改的是 aspect-ratio 的引用目标，而不是 --slider-ratio 本身，
   否则会被后台下发的内联变量反向盖掉——这是让「后台可控」生效的关键。 */
@media (max-width: 1024px) {
  .slider { aspect-ratio: var(--slider-ratio-md); }
}

@media (max-width: 640px) {
  .slider { aspect-ratio: var(--slider-ratio-sm); }
}

.slide-track {
  position: relative;
  width: 100%;
  height: 100%;
}

/* ---------- 单张幻灯片：淡入淡出 ---------- */
.slide {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.5s ease-in-out, visibility 0.5s ease-in-out;
  display: flex;
  align-items: center;
  cursor: pointer;
}

.slide.active {
  opacity: 1;
  visibility: visible;
  z-index: 1;
}

/* 整图可点击：只有带了 data-link 的 slide 才给出手型光标 */
.slide:not([data-link]) {
  cursor: default;
}

.slide.hidden {
  pointer-events: none;
}

.slide img {
  display: block;          /* 去掉 inline 图片的基线间隙 */
  width: 100%;
  height: 100%;
  object-fit: cover;       /* 关键：等比缩放后裁剪填充，绝不拉伸变形 */
  object-position: center; /* 裁剪重心，可改成 top / bottom 保留画面重点 */
  position: relative;
  z-index: 1;
}

/* ---------- 悬停时的暗色蒙层 ---------- */
.slide::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.3);
  opacity: 0;
  z-index: 2;
  transition: opacity 0.3s;
}

.slide:hover::before {
  opacity: 1;
}

/* ---------- 底部标题（胶囊） ---------- */
.description {
  position: absolute;
  bottom: 35px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 12px;
  padding: 4px 10px;
  background: rgb(255, 255, 255, 0.5);
  border: 1px solid rgb(255 255 255 / 50%);
  backdrop-filter: blur(10px);
  border-radius: 80px;
  color: #0d1a4e;
  z-index: 2;
  white-space: nowrap;
  transition: opacity 0.3s ease;
}

.slide:hover .description {
  opacity: 0;
}

/* ---------- 触摸按钮（悬停时出现） ---------- */
.many-button {
  display: flex;
  flex-direction: column;
  gap: 10px;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  z-index: 3;
}

.many-button button {
  background-color: rgb(255, 255, 255, 0.21);
  color: white;
  font-size: 13px;
  border: 1px solid rgb(255 255 255 / 50%);
  backdrop-filter: blur(12px);
  padding: 5px 15px;
  border-radius: 50px;
  cursor: pointer;
  display: none;
  z-index: 3;
  transition: background-color 0.3s;
}

.slide:hover button {
  display: block;
}

.many-button button:hover {
  background-color: #52525224;
  backdrop-filter: blur(5px);
}

/* ---------- 左右箭头（悬停时滑入） ---------- */
.slider .arrow {
  position: absolute;
  top: 50%;
  user-select: none;
  transform: translateY(-50%);
  background-color: rgb(207 207 207 / 50%);
  border: 1px solid rgb(255 255 255 / 50%);
  color: white;
  padding: 15px 10px;
  cursor: pointer;
  z-index: 50;
  border-radius: 8px;
  width: 30px;
  text-align: center;
  backdrop-filter: blur(12px);
}

.arrow.left {
  left: -30px;
  transition: left 0.3s ease;
}

.arrow.right {
  right: -30px;
  transition: right 0.3s ease;
}

.slider:hover .arrow.left {
  left: 10px;
}

.slider:hover .arrow.right {
  right: 10px;
}

/* ---------- 指示点 ---------- */
.slider-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  z-index: 10;
}

.slider-indicator {
  display: inline-block;
  width: 7px;
  height: 7px;
  background-color: rgba(153, 153, 153, 0.7);
  border-radius: 50%;
  margin: 0 3px;
  cursor: pointer;
  transition: background-color 0.3s ease, width 0.3s ease, height 0.3s ease;
  backdrop-filter: blur(5px);
}

.slider-indicator.active {
  width: 15px;
  height: 7px;
  border-radius: 100px;
  background-color: rgb(70, 103, 240);
  backdrop-filter: blur(5px);
}
