.tv-stage { background: #000; cursor: zoom-in; }
.tv-stage.is-full { cursor: default; }
.tv-screen { position: absolute; inset: 0; overflow: hidden; background: #111; }
.tv-screen canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; image-rendering: pixelated; }
.tv-scan { position: absolute; inset: 0; pointer-events: none;
  background: repeating-linear-gradient(to bottom, rgba(0, 0, 0, .32) 0, rgba(0, 0, 0, .32) 1px, transparent 1px, transparent 3px); }
.tv-scan[hidden], .tv-text[hidden] { display: none; }
.tv-vig { position: absolute; inset: 0; pointer-events: none; display: none; }
.tv-framed { background: radial-gradient(120% 140% at 50% 30%, #3a3632 0%, #1d1b19 60%, #0e0d0c 100%); }
.tv-framed .tv-screen { inset: 5.5% 6.5%; border-radius: 9% / 12%; box-shadow: 0 0 0 3px #0b0a09, 0 0 0 6px #2c2926, inset 0 0 40px rgba(0, 0, 0, .8); }
.tv-framed .tv-vig { display: block; border-radius: inherit;
  background: radial-gradient(ellipse at 50% 50%, transparent 55%, rgba(0, 0, 0, .55) 100%),
              linear-gradient(160deg, rgba(255, 255, 255, .08) 0%, transparent 30%); }
.tv-text { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); margin: 0; padding: .35em .8em; max-width: 90%;
  background: rgba(0, 0, 0, .78); color: #f2f2f2; font: 700 24px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .14em; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; }
.tv-actions { align-items: flex-end; gap: 12px 18px; margin-top: 14px; }
.tv-vol { flex: 1; min-width: 180px; }
.tv-text-in { width: 100%; margin-top: 8px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace !important; }
.ctl label.switch { justify-content: flex-start; }
