/* One combined reception treatment; station graphics remain readable. */
.signal-filters{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.broadcast-id{position:absolute;left:4.3%;right:4.3%;top:4%;bottom:4%;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none;z-index:6;color:#fff;font-family:'Courier New',Courier,monospace;font-size:2.65cqw;font-weight:700;line-height:1.2;letter-spacing:.08cqw;text-shadow:1px 1px 2px #000,0 0 5px #0008;font-variant-numeric:tabular-nums}
.screen-callsign{letter-spacing:.14cqw}
.screen-service{position:absolute;left:0;bottom:0;font-size:.75em;opacity:.8;text-align:left;white-space:nowrap}
.screen .demo-stamp{bottom:10%}
.program-overlay{position:absolute;left:6%;right:6%;bottom:17%;z-index:6;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:.8cqw;color:#fff;font-family:'Liberandos',Arial,sans-serif;font-size:4.4cqw;font-weight:400;line-height:1.25;text-align:center;text-shadow:1px 2px 2px #000,0 0 8px #000b}
.program-overlay span{max-width:100%;overflow-wrap:anywhere}
.program-overlay[data-position=upper]{top:22%;bottom:auto}
.program-overlay span:first-child:not(:last-child){font-size:3.5cqw}
.screen[data-mode=bulletin] .broadcast-id{top:1.3%;left:6%;right:6%;font-size:1.65cqw;justify-content:flex-end}
.screen[data-mode=bulletin] .screen-callsign{display:none}
.reception-grain{position:absolute;inset:0;z-index:5;pointer-events:none;display:none}
.screen[data-reception=combined] video{filter:url('#reception-tape') saturate(.82) contrast(1.12) brightness(.98) blur(.15px);transform:scale(1.018)}
.screen[data-reception=combined] .scanlines{background:repeating-linear-gradient(0deg,#0000001a 0,#0000001a 1px,transparent 1px,transparent 3px);box-shadow:inset 0 0 8cqw #0005}
.screen[data-reception=combined]:is([data-mode=program],[data-mode=appointment]) video{animation:reception-wear 9s steps(1,end) infinite}
.screen[data-reception=combined]:is([data-mode=program],[data-mode=appointment]) .reception-grain{display:block;opacity:.11;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='1' seed='13'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E");background-size:180px 180px;animation:grain-shift .7s steps(1,end) infinite;mix-blend-mode:soft-light}
.screen[data-mode=bulletin] .scanlines{background:repeating-linear-gradient(0deg,#0000000d 0,#0000000d 1px,transparent 1px,transparent 4px);box-shadow:inset 0 0 60px #0002}
/* Horizontal jumps and skew retain 40% of their original amplitude. */
@keyframes reception-wear{0%,13%,16%,26%,29%,34%,37%,61%,64%,69%,73%,100%{transform:scale(1.018)}14%{transform:scale(1.018) translateX(-.52px) skewX(.028deg)}27%{transform:scale(1.018) translateX(.26px)}35%{transform:scale(1.018) translateX(.72px) skewX(-.04deg)}62%{transform:scale(1.018) translateX(-.3px)}70%{transform:scale(1.018) translateX(-.84px) skewX(.056deg)}}
@keyframes grain-shift{0%{background-position:0 0}25%{background-position:47px 63px}50%{background-position:110px 20px}75%{background-position:27px 115px}}
@media(prefers-reduced-motion:reduce){.reception-grain{display:none!important}}
