1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 @namespace xul url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
6 @namespace url("http://www.w3.org/1999/xhtml");
8 video > xul|videocontrols,
9 audio > xul|videocontrols {
10 writing-mode: horizontal-tb;
13 display: inline-block;
16 .controlsContainer [hidden="true"],
21 .controlBar[size="hidden"] {
25 .controlsSpacer[hideCursor] {
45 flex-direction: column;
46 justify-content: center;
48 background-color: rgb(80,80,80);
53 flex-direction: column;
54 justify-content: center;
58 .controlsSpacerStack {
60 flex-direction: column;
62 justify-content: center;
67 background-color: rgba(255,255,255,.4);
73 justify-content: center;
78 background-color: rgba(26,26,26,.8);
91 background-color: transparent;
92 background-repeat: no-repeat;
93 background-position: center;
94 background-origin: content-box;
95 background-clip: content-box;
99 background-image: url(chrome://global/skin/media/pauseButton.svg#pause);
102 background-image: url(chrome://global/skin/media/pauseButton.svg#pause-hover);
104 .playButton:hover:active {
105 background-image: url(chrome://global/skin/media/pauseButton.svg#pause-active);
107 .playButton[paused] {
108 background-image: url(chrome://global/skin/media/playButton.svg#play);
110 .playButton[paused]:hover {
111 background-image: url(chrome://global/skin/media/playButton.svg#play-hover);
113 .playButton[paused]:hover:active {
114 background-image: url(chrome://global/skin/media/playButton.svg#play-active);
118 background-image: url(chrome://global/skin/media/muteButton.svg#unmute);
121 background-image: url(chrome://global/skin/media/muteButton.svg#unmute-hover);
123 .muteButton:hover:active {
124 background-image: url(chrome://global/skin/media/muteButton.svg#unmute-active);
127 background-image: url(chrome://global/skin/media/muteButton.svg#mute);
129 .muteButton[muted]:hover {
130 background-image: url(chrome://global/skin/media/muteButton.svg#mute-hover);
132 .muteButton[muted]:hover:active {
133 background-image: url(chrome://global/skin/media/muteButton.svg#mute-active);
135 .muteButton[noAudio],
136 .muteButton[noAudio]:hover,
137 .muteButton[noAudio]:hover:active {
138 background-image: url(chrome://global/skin/media/muteButton.svg#noaudio);
140 .muteButton[noAudio] + .volumeStack {
144 .closedCaptionButton {
145 background-image: url(chrome://global/skin/media/closedCaptionButton.svg#cc-off);
147 .closedCaptionButton:hover {
148 background-image: url(chrome://global/skin/media/closedCaptionButton.svg#cc-off-hover);
150 .closedCaptionButton:hover:active {
151 background-image: url(chrome://global/skin/media/closedCaptionButton.svg#cc-off-active);
153 .closedCaptionButton[enabled] {
154 background-image: url(chrome://global/skin/media/closedCaptionButton.svg#cc);
156 .closedCaptionButton[enabled]:hover {
157 background-image: url(chrome://global/skin/media/closedCaptionButton.svg#cc-hover);
159 .closedCaptionButton[enabled]:hover:active {
160 background-image: url(chrome://global/skin/media/closedCaptionButton.svg#cc-active);
164 background-image: url(chrome://global/skin/media/fullscreenButton.svg#fullscreen);
166 .fullscreenButton:hover {
167 background-image: url(chrome://global/skin/media/fullscreenButton.svg#fullscreen-hover);
169 .fullscreenButton:hover:active {
170 background-image: url(chrome://global/skin/media/fullscreenButton.svg#fullscreen-active);
172 .fullscreenButton[fullscreened] {
173 background-image: url(chrome://global/skin/media/fullscreenButton.svg#unfullscreen);
175 .fullscreenButton[fullscreened]:hover {
176 background-image: url(chrome://global/skin/media/fullscreenButton.svg#unfullscreen-hover);
178 .fullscreenButton[fullscreened]:hover:active {
179 background-image: url(chrome://global/skin/media/fullscreenButton.svg#unfullscreen-active);
186 .volumeControl::-moz-range-thumb,
187 .scrubber::-moz-range-thumb {
192 background-color: #ffffff;
193 filter: drop-shadow(0px 0px 2px rgba(0,0,0,0.65));
196 .volumeControl::-moz-focus-outer,
197 .scrubber::-moz-focus-outer {
201 .progressBackgroundBar {
203 flex-direction: column;
204 justify-content: center;
243 border-radius: 2.5px;
246 background-color: transparent;
251 background-color: rgba(0,0,0,0.7);
254 .bufferBar::-moz-progress-bar,
255 .progressBar::-moz-progress-bar,
256 .volumeBackground::-moz-meter-bar {
261 border-radius: 2.5px;
265 .scrubber:hover::-moz-range-thumb,
266 .volumeControl:hover::-moz-range-thumb {
267 background-color: #48a0f7;
270 .scrubber:active::-moz-range-thumb,
271 .volumeControl:active::-moz-range-thumb {
272 background-color: #2d89e6;
275 .scrubber::-moz-range-track,
276 .scrubber::-moz-range-progress {
277 background-color: transparent;
280 .volumeControl::-moz-range-progress,
281 .volumeControl::-moz-range-track {
283 border-radius: 2.5px;
286 .volumeControl::-moz-range-progress {
287 background-color: #ffffff;
290 .volumeControl::-moz-range-track {
291 background-color: rgba(0,0,0,0.7);
295 .bufferBar::-moz-progress-bar {
296 background-color: rgba(255,255,255,0.3);
297 border-radius: 2.5px;
300 .progressBar::-moz-progress-bar {
301 background-color: #00b6f0;
309 border: 1px solid #000000;
310 border-radius: 2.5px;
312 vertical-align: middle;
314 background-color: #000000;
318 .textTrackList > .textTrackItem {
328 text-overflow: ellipsis;
330 background-color: transparent;
333 .textTrackList > .textTrackItem:hover {
334 background-color: #444444;
337 .textTrackList > .textTrackItem[on] {
346 .positionDurationBox {
348 padding-inline-start: 1px;
349 padding-inline-end: 9px;
353 font-size-adjust: 0.55;
358 display: inline-block;
369 .statusIcon[type="throbber"] {
370 background: url(chrome://global/skin/media/throbber.png) no-repeat center;
373 .statusIcon[type="throbber"][stalled] {
374 background: url(chrome://global/skin/media/stalled.png) no-repeat center;
377 .statusIcon[type="error"] {
380 background: url(chrome://global/skin/media/error.png) no-repeat center;
381 background-size: contain;
384 /* Overlay Play button */
389 background-image: url(chrome://global/skin/media/playButton.svg#play);
390 background-repeat: no-repeat;
391 background-position: 54% 50%;
392 background-size: 40% 40%;
393 background-color: #1a1a1a;
399 .controlsSpacerStack:hover > .clickToPlay,
404 .controlsSpacerStack:hover > .clickToPlay[fadeout] {
408 .controlBar[fullscreen-unavailable] .fullscreenButton {
412 /* CSS Transitions */
414 transition-property: transform, opacity;
415 transition-duration: 400ms, 400ms;
418 .controlsSpacer[fadeout] {
422 .clickToPlay[fadeout] {
427 .clickToPlay[fadeout][immediate] {
428 transition-property: opacity, background-size;
429 transition-duration: 0s, 0s;
431 .controlBar:not([immediate]) {
432 transition-property: opacity;
433 transition-duration: 200ms;
435 .controlBar[fadeout] {
438 .volumeStack:not([immediate]) {
439 transition-property: opacity, margin-top;
440 transition-duration: 200ms, 200ms;
442 .statusOverlay:not([immediate]) {
443 transition-property: opacity;
444 transition-duration: 300ms;
445 transition-delay: 750ms;
447 .statusOverlay[fadeout] {
451 /* Error description formatting */
464 [error="errorAborted"] > [anonid="errorAborted"],
465 [error="errorNetwork"] > [anonid="errorNetwork"],
466 [error="errorDecode"] > [anonid="errorDecode"],
467 [error="errorSrcNotSupported"] > [anonid="errorSrcNotSupported"],
468 [error="errorNoSource"] > [anonid="errorNoSource"],
469 [error="errorGeneric"] > [anonid="errorGeneric"] {