/* VTB Laser — non-blocking visual overlay for the number grid */
.vtb-laser {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 5;
}

/* Base beam; orientation handled via modifier classes */
.vtb-laser__beam {
  position: absolute;
  will-change: transform, left, top;
  filter: drop-shadow(0 0 4px rgba(255, 60, 60, 0.9));
  mix-blend-mode: screen;
}

.vtb-laser__beam::before,
.vtb-laser__beam::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 999px;
}

/* Vertical sweep (left/right) — 3px wide, full height */
.vtb-laser__beam--v {
  top: 0;
  bottom: 0;
  width: 3px;
  transform: translateX(-50%);
}

.vtb-laser__beam--v::before {
  background: rgba(255, 60, 60, 0.9);
}

.vtb-laser__beam--v::after {
  background: rgba(255, 92, 92, 0.6);
  filter: blur(8px);
}

/* Horizontal sweep (top/bottom) — 3px high, full width */
.vtb-laser__beam--h {
  left: 0;
  right: 0;
  height: 3px;
  transform: translateY(-50%);
}

.vtb-laser__beam--h::before {
  background: rgba(255, 60, 60, 0.9);
}

.vtb-laser__beam--h::after {
  background: rgba(255, 92, 92, 0.6);
  filter: blur(8px);
}

@media (prefers-reduced-motion: reduce) {
  .vtb-laser__beam {
    display: none;
  }
}

.vtb-laser-host .vc-cell,
.vc-grid-wrap .vc-cell {
  --laser: 0;
  transition: box-shadow 0.16s ease-out, filter 0.16s ease-out;
  box-shadow: 0 0 calc(var(--laser) * 12px) rgba(255, 92, 92, 0.55),
    0 0 0 calc(var(--laser) * 3px) rgba(255, 92, 92, 0.35) inset;
  filter: brightness(calc(1 + var(--laser) * 0.2));
}
