|
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/. */ |
|
4 |
|
5 @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); |
|
6 |
|
7 /* video controls */ |
|
8 .controlsOverlay { |
|
9 -moz-box-pack: center; |
|
10 -moz-box-align: end; |
|
11 padding: 20px; |
|
12 -moz-box-flex: 1; |
|
13 -moz-box-orient: horizontal; |
|
14 } |
|
15 |
|
16 .controlBar { |
|
17 -moz-box-flex: 1; |
|
18 font-size: 16pt; |
|
19 padding: 10px; |
|
20 background-color: #34353a; |
|
21 border-radius: 8px; |
|
22 width: 100%; |
|
23 } |
|
24 |
|
25 .controlsSpacer { |
|
26 display: none; |
|
27 -moz-box-flex: 0; |
|
28 } |
|
29 |
|
30 .fullscreenButton, |
|
31 .playButton, |
|
32 .castingButton, |
|
33 .muteButton { |
|
34 -moz-appearance: none; |
|
35 min-height: 42px; |
|
36 min-width: 42px; |
|
37 border: none !important; |
|
38 } |
|
39 |
|
40 .fullscreenButton { |
|
41 background: url("chrome://browser/skin/images/fullscreen-hdpi.png") no-repeat center; |
|
42 } |
|
43 |
|
44 .fullscreenButton[fullscreened="true"] { |
|
45 background: url("chrome://browser/skin/images/exitfullscreen-hdpi.png") no-repeat center; |
|
46 } |
|
47 |
|
48 .playButton { |
|
49 background: url("chrome://browser/skin/images/pause-hdpi.png") no-repeat center; |
|
50 } |
|
51 |
|
52 /* |
|
53 * Normally the button bar has fullscreen spacer play spacer mute, but if |
|
54 * this is an audio control rather than a video control, the fullscreen button |
|
55 * is hidden by videocontrols.xml, and that alters the position of the |
|
56 * play button. This workaround moves it back to center. |
|
57 */ |
|
58 .controlBar.audio-only .playButton { |
|
59 transform: translateX(28px); |
|
60 } |
|
61 |
|
62 .playButton[paused="true"] { |
|
63 background: url("chrome://browser/skin/images/play-hdpi.png") no-repeat center; |
|
64 } |
|
65 |
|
66 .castingButton { |
|
67 display: none; |
|
68 } |
|
69 |
|
70 .muteButton { |
|
71 background: url("chrome://browser/skin/images/mute-hdpi.png") no-repeat center; |
|
72 } |
|
73 |
|
74 .muteButton[muted="true"] { |
|
75 background: url("chrome://browser/skin/images/unmute-hdpi.png") no-repeat center; |
|
76 } |
|
77 |
|
78 /* bars */ |
|
79 .scrubberStack { |
|
80 width: 100%; |
|
81 min-height: 32px; |
|
82 max-height: 32px; |
|
83 padding: 0px 8px; |
|
84 margin: 0px; |
|
85 } |
|
86 |
|
87 .bufferBar, |
|
88 .bufferBar .progress-bar, |
|
89 .progressBar, |
|
90 .progressBar .progress-bar, |
|
91 .scrubber, |
|
92 .scrubber .scale-slider, |
|
93 .scrubber .scale-thumb { |
|
94 -moz-appearance: none; |
|
95 border: none; |
|
96 padding: 0px; |
|
97 margin: 0px; |
|
98 background-color: transparent; |
|
99 } |
|
100 |
|
101 .bufferBar { |
|
102 border: 1px solid #5e6166; |
|
103 } |
|
104 |
|
105 .bufferBar, |
|
106 .progressBar { |
|
107 margin: 9px 0px 11px 0px; |
|
108 height: 8px |
|
109 } |
|
110 |
|
111 .bufferBar .progress-bar { |
|
112 background-color: #5e6166; |
|
113 } |
|
114 |
|
115 .progressBar .progress-bar { |
|
116 background-color: white; |
|
117 } |
|
118 |
|
119 .scrubber { |
|
120 margin-left: -16px; |
|
121 margin-right: -16px; |
|
122 } |
|
123 |
|
124 .scrubber .scale-thumb { |
|
125 display: -moz-box; |
|
126 background: url("chrome://browser/skin/images/scrubber-hdpi.png") no-repeat; |
|
127 height: 32px; |
|
128 width: 32px; |
|
129 } |
|
130 |
|
131 .durationBox { |
|
132 -moz-box-orient: horizontal; |
|
133 -moz-box-pack: start; |
|
134 -moz-box-align: center; |
|
135 color: white; |
|
136 font-weight: bold; |
|
137 padding: 0px 8px; |
|
138 margin-top: -6px; |
|
139 } |
|
140 |
|
141 .positionLabel { |
|
142 -moz-box-flex: 1; |
|
143 } |
|
144 |
|
145 .statusOverlay { |
|
146 -moz-box-align: center; |
|
147 -moz-box-pack: center; |
|
148 background-color: rgb(50,50,50); |
|
149 } |
|
150 |
|
151 .statusIcon { |
|
152 margin-bottom: 28px; |
|
153 width: 36px; |
|
154 height: 36px; |
|
155 } |
|
156 |
|
157 .statusIcon[type="throbber"] { |
|
158 background: url(chrome://global/skin/media/throbber.png) no-repeat center; |
|
159 } |
|
160 |
|
161 .statusIcon[type="error"] { |
|
162 background: url(chrome://global/skin/media/error.png) no-repeat center; |
|
163 } |
|
164 |
|
165 /* CSS Transitions */ |
|
166 .controlBar:not([immediate]) { |
|
167 transition-property: opacity; |
|
168 transition-duration: 200ms; |
|
169 } |
|
170 |
|
171 .controlBar[fadeout] { |
|
172 opacity: 0; |
|
173 } |
|
174 |
|
175 .statusOverlay:not([immediate]) { |
|
176 transition-property: opacity; |
|
177 transition-duration: 300ms; |
|
178 transition-delay: 750ms; |
|
179 } |
|
180 |
|
181 .statusOverlay[fadeout] { |
|
182 opacity: 0; |
|
183 } |
|
184 |
|
185 .volumeStack, |
|
186 .controlBar[firstshow="true"] .muteButton, |
|
187 .controlBar[firstshow="true"] .scrubberStack, |
|
188 .controlBar[firstshow="true"] .durationBox, |
|
189 .timeLabel { |
|
190 display: none; |
|
191 } |
|
192 |
|
193 .controlBar[firstshow="true"] .playButton { |
|
194 transform: none; |
|
195 } |
|
196 |
|
197 /* Error description formatting */ |
|
198 .errorLabel { |
|
199 font-family: Helvetica, Arial, sans-serif; |
|
200 font-size: 11px; |
|
201 color: #bbb; |
|
202 text-shadow: |
|
203 -1px -1px 0 #000, |
|
204 1px -1px 0 #000, |
|
205 -1px 1px 0 #000, |
|
206 1px 1px 0 #000; |
|
207 padding: 0 10px; |
|
208 text-align: center; |
|
209 } |