/* ── NEON LINES + LED CHASE ── */
.neon-lines {
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 100;
  --neon-size: 2px;
  --run-len: 260px;
  animation: neon-breathe 4s ease-in-out infinite;
}
.neon {
  position: absolute;
  background: rgb(var(--neon-core));
  box-shadow:
    0 0 3px  0   rgba(var(--neon-core),.85),
    0 0 8px  1px rgba(var(--neon-mid),.7),
    0 0 18px 2px rgba(var(--neon-mid),.4),
    0 0 36px 4px rgba(var(--neon-far),.35);
}
.neon--top,  .neon--bottom,
.neon--header { height: var(--neon-size); right: 0; }
.neon--left, .neon--right,
.neon--sidebar { width: var(--neon-size); bottom: 0; }
.neon--top    { top: 0; left: 0; }
.neon--bottom { bottom: 0; left: 0; }
.neon--left   { left: 0; top: 0; }
.neon--right  { right: 0; top: 0; }
.neon--header { top: calc(var(--ticker-h) + var(--header-h) - var(--neon-size)); left: 0; }
.neon--sidebar{ top: calc(var(--ticker-h) + var(--header-h)); left: calc(var(--sidebar-w) - var(--neon-size)); }
.neon::after {
  content: "";
  position: absolute;
  pointer-events: none;
  background-repeat: no-repeat;
  animation-duration: var(--run-time, 4s);
  animation-delay: var(--run-delay, 0s);
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  filter:
    drop-shadow(0 0 4px rgba(var(--neon-head),1))
    drop-shadow(0 0 12px rgba(var(--neon-mid),.9));
}
.neon--top::after, .neon--header::after, .neon--bottom::after {
  inset: -1.5px 0;
  background-size: var(--run-len) 100%;
}
.neon--top::after, .neon--header::after {
  background-image: linear-gradient(90deg,
    rgba(var(--neon-core),0) 0%, rgba(var(--neon-core),.15) 35%,
    rgba(var(--neon-core),.55) 70%, rgba(var(--neon-head),1) 96%, rgba(var(--neon-head),0) 100%);
  animation-name: run-x;
}
.neon--bottom::after {
  background-image: linear-gradient(270deg,
    rgba(var(--neon-core),0) 0%, rgba(var(--neon-core),.15) 35%,
    rgba(var(--neon-core),.55) 70%, rgba(var(--neon-head),1) 96%, rgba(var(--neon-head),0) 100%);
  animation-name: run-x;
  animation-direction: reverse;
}
.neon--right::after, .neon--sidebar::after, .neon--left::after {
  inset: 0 -1.5px;
  background-size: 100% var(--run-len);
}
.neon--right::after, .neon--sidebar::after {
  background-image: linear-gradient(180deg,
    rgba(var(--neon-core),0) 0%, rgba(var(--neon-core),.15) 35%,
    rgba(var(--neon-core),.55) 70%, rgba(var(--neon-head),1) 96%, rgba(var(--neon-head),0) 100%);
  animation-name: run-y;
}
.neon--left::after {
  background-image: linear-gradient(0deg,
    rgba(var(--neon-core),0) 0%, rgba(var(--neon-core),.15) 35%,
    rgba(var(--neon-core),.55) 70%, rgba(var(--neon-head),1) 96%, rgba(var(--neon-head),0) 100%);
  animation-name: run-y;
  animation-direction: reverse;
}
@keyframes run-x {
  from { background-position: calc(-1*var(--run-len)) 0; }
  to   { background-position: calc(100% + var(--run-len)) 0; }
}
@keyframes run-y {
  from { background-position: 0 calc(-1*var(--run-len)); }
  to   { background-position: 0 calc(100% + var(--run-len)); }
}
@keyframes neon-breathe {
  0%,100% { opacity:1; }
  50%     { opacity:.78; }
}
