/* EzyFlat liquidity cycles widget (audit A-07). LOCAL PREVIEW ONLY.
   The layer sits inside .hl-box at z-index 1, below the scrollytelling outline (.hl, z-index 2). */
.shot__frame:has(>.lq-layer){position:relative}
.ov-host{position:relative;display:block}
.ov-host>img{display:block;width:100%;height:auto;margin:0}
.lq-layer{position:absolute;inset:0;z-index:1;display:block;pointer-events:none}
.lq-art{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible}

/* particles */
.lq-p{will-change:transform,opacity}
.lq-p--thin .core{fill:var(--text-3)}
.lq-p--thin .halo{fill:var(--text-3);opacity:.2}
.lq-p--live .core{fill:var(--lq-mint,var(--accent))}
.lq-p--live .halo{fill:var(--lq-mint,var(--accent));opacity:.26}

/* box glow */
.lq-pulse{fill:none;stroke-width:2;opacity:0}
.lq-pulse--thin{stroke:var(--text-3)}
.lq-pulse--leak{stroke:var(--warn)}
.lq-pulse--live{stroke:var(--lq-mint,var(--accent))}

/* lit arrows and loop for the region being read */
.lq-lit{opacity:0;transition:opacity .45s}
.lq-lit.on{opacity:1}
.lq-lit g{fill:none;stroke-linecap:round;stroke-linejoin:round}
.lq-lit .glow{stroke-width:7;opacity:.16}
.lq-lit .core{stroke-width:2.4}
.lq-lit--thin g{stroke:var(--text-2)}
.lq-lit--live g{stroke:var(--lq-mint,var(--accent))}
.lq-lit polyline{stroke-dasharray:none}
.lq-lit.on .lq-dash{animation:lq-march 1.1s linear infinite}
.lq-layer.is-paused .lq-dash{animation-play-state:paused}
@keyframes lq-march{to{stroke-dashoffset:-10}}

@media (prefers-reduced-motion:reduce){
  .lq-lit{transition:none}
  .lq-lit.on .lq-dash{animation:none}
}
@media print{.lq-layer{display:none!important}}
