/* ==========================================================================
   Bladevel — Slide FX Engine (slide-fx.css)
   Hỗ trợ hiển thị cho bộ 60 hiệu ứng chuyển slide + 20 hiệu ứng xuất hiện
   nội dung (chữ/hình) do slide-fx.js điều khiển bằng Web Animations API.
   File này KHÔNG chứa animation logic — chỉ chứa các thuộc tính nền tảng
   (layer, perspective, stacking) và giao diện bộ chọn hiệu ứng.
   ========================================================================== */

/* Sân khấu slide cần perspective để các hiệu ứng 3D (flip/cube) có chiều sâu,
   và cần là nơi chứa 2 lớp slide xếp chồng (outgoing/incoming) khi chuyển. */
.tw-slide-canvas-wrap { perspective: 1600px; }

.tw-slide-item {
  position: absolute;
  inset: 0;
  height: 100%;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  will-change: transform, opacity, filter, clip-path;
}
.tw-slide-item[data-tw-hidden="1"] { display: none; }
.tw-slide-item[data-tw-hidden="0"] { display: block; }

/* Trong lúc đang chuyển, phần bị tràn ra ngoài khung cần được cắt gọn. */
.tw-slide-canvas-wrap.tw-fx-playing { overflow: hidden; }

/* Các phần tử chữ/hình bên trong 1 slide được engine gắn class này để chạy
   hiệu ứng "xuất hiện nội dung" (20 kiểu) theo thứ tự data-anim-order. */
.tw-anim-el { will-change: transform, opacity, filter, clip-path; }

/* Lớp phủ dùng cho hiệu ứng rèm cửa / ô cờ (blinds / checkerboard) — engine
   tạo các ô lưới tạm thời bên trong lớp phủ này rồi xoá đi sau khi chạy xong. */
.tw-fx-grid-overlay {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  display: grid;
}
.tw-fx-grid-cell { background: var(--tw-fx-cell-bg, #ffffff); }

/* Vệt gạch chân dùng cho hiệu ứng "underline-draw". */
.tw-fx-underline {
  position: absolute;
  left: 0; right: 0; bottom: -4px;
  height: 3px;
  border-radius: 2px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  pointer-events: none;
}

/* Dải sáng quét qua dùng cho hiệu ứng "highlight-sweep". */
.tw-fx-highlight {
  position: absolute;
  inset: -2px -6px;
  z-index: -1;
  border-radius: 4px;
  background: linear-gradient(100deg, transparent 0%, currentColor 45%, currentColor 55%, transparent 100%);
  opacity: .35;
  transform: translateX(-120%);
  pointer-events: none;
}

/* Bộ chọn hiệu ứng (thanh tóm tắt "pill" + hộp thoại 2 tab) giờ được thiết
   kế riêng trong slide-fx-picker.css (.tw-fx-bar / .tw-fx-modal / …) để dễ
   bảo trì tách biệt khỏi phần nền tảng animation ở trên. */

/* Người dùng bật "Giảm chuyển động" ở hệ điều hành -> rút ngắn mọi hiệu ứng,
   engine cũng đọc prefers-reduced-motion trực tiếp trong JS để rút ngắn
   thời lượng animate(), quy tắc dưới đây là lớp phòng hộ bổ sung. */
@media (prefers-reduced-motion: reduce) {
  .tw-slide-item, .tw-anim-el { transition-duration: .001ms !important; }
}