#screen-player { background: #000; } #video-stage { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } #video-el { width: 100%; height: 100%; background: #000; object-fit: contain; } #avplay-surface { width: 100%; height: 100%; } .pl-clock { position: absolute; z-index: 2; top: 2.4rem; right: 3.4rem; font-size: 2.4rem; text-shadow: 0 .1rem .6rem #000; } /* ---- live info bar ---- */ .pl-live { position: absolute; z-index: 2; left: 3.4rem; right: 3.4rem; bottom: 3rem; display: flex; align-items: center; gap: 2rem; padding: 1.6rem 2.4rem; background: rgba(0, 0, 0, .73); border-radius: var(--r-lg); } .pl-live-logo { width: 8rem; height: 8rem; border-radius: 1.2rem; background: rgba(255, 255, 255, .07); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .pl-live-logo img { max-width: 85%; max-height: 85%; } .pl-live-meta { flex: 1; min-width: 0; } .pl-live-line { display: flex; gap: 1.4rem; align-items: baseline; } .pl-num { color: var(--accent-bright); font-weight: 700; font-size: 2.2rem; } .pl-name { font-size: 2.8rem; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .pl-epg { font-size: 1.7rem; margin-top: .4rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .pl-fav { font-size: 3rem; color: var(--warn); } .pl-fav .ic { fill: currentColor; } /* ---- VOD control dock ---- */ .pl-dock { position: absolute; z-index: 2; left: 2.5%; width: 95%; bottom: 3rem; padding: 1.4rem 2.6rem 1.6rem; background: rgba(0, 0, 0, .73); border-radius: var(--r-lg); display: grid; grid-template-columns: 1fr auto 1fr; grid-template-rows: auto auto; align-items: center; row-gap: 1rem; } .dock-title { font-size: 2.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-right: 2rem; } .dock-transport, .dock-tools { display: flex; gap: 1.2rem; align-items: center; } .dock-tools { justify-content: flex-end; } .dock-btn { width: 5rem; height: 5rem; border-radius: 50%; font-size: 2.6rem; display: flex; align-items: center; justify-content: center; border: .2rem solid transparent; background: rgba(255, 255, 255, .06); } .dock-btn.big { width: 6rem; height: 6rem; font-size: 3rem; } .dock-btn.focused { border-color: var(--accent); box-shadow: none; background: rgba(12, 135, 152, .35); } .dock-btn.disabled { opacity: .3; } .dock-progress { grid-column: 1 / -1; display: flex; align-items: center; gap: 1.6rem; font-size: 1.5rem; color: var(--text-2); } .dock-bar { flex: 1; height: .7rem; border-radius: .4rem; background: rgba(255, 255, 255, .25); position: relative; } .dock-fill { height: 100%; width: 0; border-radius: .4rem; background: var(--accent); } .dock-knob { position: absolute; top: 50%; left: 0; width: 1.8rem; height: 1.8rem; margin: -.9rem 0 0 -.9rem; border-radius: 50%; background: var(--accent); border: .2rem solid #fff; } .dock-bar.focused .dock-knob { width: 2.4rem; height: 2.4rem; margin: -1.2rem 0 0 -1.2rem; } /* ---- friendly error / reconnect ---- */ .pl-error { position: absolute; inset: 0; z-index: 1; background: radial-gradient(60rem 40rem at 50% 45%, rgba(10, 32, 88, .55), rgba(0, 0, 0, .94)); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.2rem; } .pl-error-art { font-size: 11rem; color: var(--accent-bright); opacity: .85; filter: drop-shadow(0 0 2rem rgba(30, 197, 234, .35)); } .pl-error-art .ic { stroke-width: 1.1; } .pl-error-title { font-size: 3rem; font-weight: 700; } .pl-error-sub { font-size: 1.9rem; color: var(--text-3); } /* Safe structured playback diagnostics, displayed only while an error is on screen. It intentionally has no stream URL, credentials or server text. */ .pl-error-debug { max-width: min(92vw, 110rem); padding: .9rem 1.2rem; border: 1px solid rgba(30, 197, 234, .42); border-radius: .5rem; background: rgba(0, 0, 0, .38); color: var(--text-2); font: 1.35rem/1.45 ui-monospace, SFMono-Regular, Consolas, monospace; text-align: center; overflow-wrap: anywhere; } .pl-buffering { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } .pl-digits { position: absolute; top: 3rem; left: 3.4rem; font-size: 4.4rem; font-weight: 700; color: var(--accent-bright); text-shadow: 0 .1rem .8rem #000; } video::cue { font-size: var(--sub-size, 100%); }