/* NewsPager transmission artifacts: movement belongs to the receiver, not the photograph.
   One publisher image, CSS-only optics; no video fetch, duplicate image or animation loop. */
.picture-tube .pager-video-field{
 display:none;position:absolute;inset:0;z-index:2;pointer-events:none;
 background:repeating-linear-gradient(0deg,transparent 0 3px,#a1f9d516 3.5px 4px,transparent 4.5px 7px),
            linear-gradient(0deg,transparent 43%,#a8e9ff2a 50%,transparent 57%);
 background-size:100% 7px,100% 170%;
 opacity:.32;
}
.picture-tube[data-mode="photo"][data-photo-effect="field-weave"] .pager-video-field,
.picture-tube[data-mode="photo"][data-photo-effect="timebase-slip"] .pager-video-field,
.picture-tube[data-mode="photo"][data-photo-effect="chroma-delay"] .pager-video-field,
.picture-tube[data-mode="photo"][data-photo-effect="flyback"] .pager-video-field{
 display:block;animation:dx-video-field-phase 11.7s linear infinite;
}
.picture-tube[data-mode="photo"][data-photo-effect="field-weave"] .pager-video-field{
 opacity:.42;animation-duration:7.9s;
}
.picture-tube[data-mode="photo"][data-photo-effect="timebase-slip"] .pager-video-field{
 background-position:0 0,0 50%;opacity:.35;animation-duration:9.1s;
}
.picture-tube[data-mode="photo"][data-photo-effect="chroma-delay"] .pager-video-field{
 opacity:.22;animation-duration:13.3s;
}
.picture-tube[data-mode="photo"][data-photo-effect="flyback"] .pager-video-field{
 background:linear-gradient(to bottom,transparent 0 46%,#b1e8ff38 49%,#e7fff95c 50%,transparent 54%);
 background-size:100% 240%;opacity:.48;animation:dx-video-flyback-band 10.4s linear infinite;
}
@keyframes dx-video-field-phase{
 0%{background-position:0 0,0 -110%}
 49%{background-position:0 3.5px,0 30%}
 50%{background-position:0 0,0 33%}
 100%{background-position:0 7px,0 180%}
}
@keyframes dx-video-flyback-band{
 0%,18%{background-position:0 -120%;opacity:0}
 20%{opacity:.5}
 43%{background-position:0 90%;opacity:.35}
 48%,100%{background-position:0 120%;opacity:0}
}
/* Four new receiver behaviors. The frame is always readable; the signal never goes black.
   Each photograph receives one motion timeline, not competing image animations. */
.picture-tube[data-mode="photo"][data-photo-effect="field-weave"] > img:not([hidden]),
dialog.band-reader.band-has-picks .band-picks .band-picture-tube[data-mode="photo"][data-photo-effect="field-weave"] > img:not([hidden]){
 animation:dx-video-field-weave 15.2s ease-in-out infinite;
}
.picture-tube[data-mode="photo"][data-photo-effect="timebase-slip"] > img:not([hidden]),
dialog.band-reader.band-has-picks .band-picks .band-picture-tube[data-mode="photo"][data-photo-effect="timebase-slip"] > img:not([hidden]){
 animation:dx-video-timebase 12.8s steps(1,end) infinite;
}
.picture-tube[data-mode="photo"][data-photo-effect="chroma-delay"] > img:not([hidden]),
dialog.band-reader.band-has-picks .band-picks .band-picture-tube[data-mode="photo"][data-photo-effect="chroma-delay"] > img:not([hidden]){
 animation:dx-video-chroma 17.6s ease-in-out infinite;
}
.picture-tube[data-mode="photo"][data-photo-effect="flyback"] > img:not([hidden]),
dialog.band-reader.band-has-picks .band-picks .band-picture-tube[data-mode="photo"][data-photo-effect="flyback"] > img:not([hidden]){
 animation:dx-video-flyback 14.9s ease-in-out infinite;
}
@keyframes dx-video-field-weave{
 0%,100%{transform:scale(1.10) translateY(0);filter:contrast(1.22) saturate(1.85)}
 24%{transform:scale(1.11) translateY(-1.5%) skewX(.3deg);filter:contrast(1.3) saturate(2.0)}
 49%{transform:scale(1.12) translateY(1.7%) skewX(-.3deg);filter:contrast(1.19) saturate(1.7)}
 74%{transform:scale(1.11) translateY(-1%) skewX(.2deg);filter:contrast(1.28) saturate(2)}
}
@keyframes dx-video-timebase{
 0%,36%,50%,74%,100%{transform:scale(1.10);filter:contrast(1.23) saturate(1.85)}
 38%{transform:scale(1.12) translateX(3%) skewX(2.3deg);filter:contrast(1.42) saturate(2.2)}
 40%{transform:scale(1.12) translateX(-2%) skewX(-1.7deg);filter:contrast(1.28) saturate(1.9)}
 43%{transform:scale(1.10) translateX(1%);filter:contrast(1.36) saturate(2.05)}
 76%{transform:scale(1.11) translateX(-2%) skewX(-1.2deg);filter:contrast(1.4) saturate(2.15)}
 78%{transform:scale(1.10) translateX(.8%);filter:contrast(1.23) saturate(1.85)}
}
@keyframes dx-video-chroma{
 0%,100%{transform:scale(1.10) translate(0,0);filter:contrast(1.2) saturate(1.9)}
 32%{transform:scale(1.14) translate(-1.4%,.8%);filter:contrast(1.3) saturate(2.2) hue-rotate(7deg)}
 37%{transform:scale(1.13) translate(.8%,-.4%);filter:contrast(1.33) saturate(1.5) hue-rotate(-9deg)}
 41%{transform:scale(1.12) translate(0,0);filter:contrast(1.22) saturate(1.9)}
 72%{transform:scale(1.15) translate(1.6%,-1%);filter:contrast(1.3) saturate(2.15) hue-rotate(5deg)}
}
@keyframes dx-video-flyback{
 0%,100%{transform:scale(1.10) translateY(0);filter:contrast(1.22) saturate(1.85)}
 28%{transform:scale(1.14) translateY(-2%);filter:contrast(1.3) saturate(2)}
 47%{transform:scale(1.14) translateY(2%);filter:contrast(1.38) saturate(2.15)}
 53%{transform:scale(1.12) translateY(-.8%);filter:contrast(1.24) saturate(1.9)}
 76%{transform:scale(1.11) translateY(.7%);filter:contrast(1.27) saturate(2)}
}
/* Save cycles when the reader leaves; reduced-motion gets the original still photograph. */
.picture-tube.ghost-paused .pager-video-field,
.picture-tube.ghost-paused[data-mode="photo"] > img:not([hidden]){animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){
 .picture-tube .pager-video-field{display:none!important;animation:none!important}
 .picture-tube[data-mode="photo"] > img:not([hidden]),
 dialog.band-reader.band-has-picks .band-picks .band-picture-tube[data-mode="photo"] > img:not([hidden]){
  animation:none!important;will-change:auto
 }
}
