]> git.plutz.net Git - serve0/blob - static/common.css
16910fb12d5603836f27a9b73a98dd39fcd72d7b
[serve0] / static / common.css
1 /* Copyright 2014 - 2016 Paul Hänsch
2
3    This file is part of Serve0
4    
5    Serve0 is free software: you can redistribute it and/or modify
6    it under the terms of the GNU Affero General Public License as published by
7    the Free Software Foundation, either version 3 of the License, or
8    (at your option) any later version.
9    
10    Serve0 is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU Affero General Public License for more details.
14    
15    You should have received a copy of the GNU Affero General Public License
16    along with Serve0  If not, see <http://www.gnu.org/licenses/>. 
17 */
18
19 * {
20   -moz-box-sizing: border-box;
21   box-sizing: border-box;
22   -moz-transition: all .3s linear;
23   transition: all .3s linear;
24 }
25
26 body {
27   padding: 0;
28   margin: 0;
29   background-color: #000;
30   color: #DDD;
31 }
32 a { color: #EEE; }
33 legend, label, .label { font-weight: bold; }
34
35 input.tabhandle { display: none; }
36 .tabcontent { display: none; }
37 input.tabhandle:checked + label.tabhandle + .tabcontent { display: inline-block; }
38 input.tabhandle:checked + .tabcontent { display: inline-block; }
39
40 textarea {
41   display: block;
42   width: 100%;
43 }
44
45 .info {
46   margin: 0;
47   padding: 0 .25em;
48   background-color: rgba(208,208,255,.625 );
49   color: #000;
50   border: #000 1px solid;
51 }
52 .info.tag {
53   line-height: 1.6em;
54   background-color: #DBB;
55   margin-right: -.75ex;
56 }
57
58 .pagination_nav {
59   display: inline-block;
60   float: right;
61   transition: none;
62   border: none;
63   background-color: #333;
64   text-align: right;
65 }
66 .panel:after { content: ''; display: block; clear: both;}
67 .pagination_nav a {
68   display: none;
69   text-decoration: none;
70   padding-left: 1.5ex;
71 }
72 .pagination_nav a.previous,
73 .pagination_nav a.current,
74 .pagination_nav a.next { display: inline-block; }
75 .pagination_nav a.current { color: #F66; font-weight: bold; }
76
77 .pagination_nav:hover {
78   position: absolute;
79   line-height: 1.75em;
80   left: 0; right: 0;
81   padding: .5em 3ex .5em 0;
82   overflow: auto;
83 }
84 #search .pagination_nav:hover {
85   top: 0; bottom: auto;
86   padding-top: 2.5em;
87   border-bottom: 1px solid #FFF;
88 }
89 #foot .pagination_nav:hover {
90   top: auto; bottom: 0;
91   padding-bottom: 2.5em;
92   border-top: 1px solid #FFF;
93 }
94 .pagination_nav:hover a { display: inline; }
95
96 /* == Panels == */
97
98 .panel {
99   position: relative;
100   display: block;
101   width: 100%;
102   margin: 0;
103   padding: .25em .5em;
104   background-color: #333;
105   border-width: 1px;
106   border-style: none none solid none;
107 }
108
109 a.panel {
110   font-weight: bold;
111   display: inline-block;
112   border: none;
113   width: auto;
114   padding: 0;
115   margin: auto 1em 1ex 0;
116   text-decoration: none;
117 }
118
119 .panel .help { display: block;}
120
121 /* == Top Panel == */
122
123 .panel.switchable.top {
124   position: absolute;
125   top: 0;
126 }
127
128 body.playctl .panel#advfilter,
129 body.playctl .panel#morelinks,
130 body.playctl .panel#search {
131   margin-top: 1.25em;
132   border-top: 1px solid #FFF;
133 }
134
135 .panel#search select { margin-right: .5em; }
136
137 /* == Bottom Panels == */
138 .panel.bottom,
139 .panel#foot {
140   position: fixed;
141   bottom: 0px;
142   border-style: solid none none none;
143 }
144
145 /* == Switchable Panels == */
146
147 .panel.switchable {
148   z-index: 1;
149   overflow: hidden;
150   min-height: 0; max-height: 0;
151   padding-top: 0; padding-bottom: 0;
152 }
153 .panel.switchable:target {
154   max-height: 100%;
155   overflow-y: scroll;
156 }
157 .panel.switchable.top:target{ padding-bottom: 1em; }
158
159 .panel#search,
160 .panel#foot {
161   max-height: 100%;
162   z-index: 0;
163   padding: .25em .5em 0 .5em;
164   overflow: visible;
165 }
166
167 body.playctl .panel#search,
168 body.playctl .panel#foot { padding-right: .25em; }
169
170
171 /* == Panel Switches == */
172
173 .panel.switchable.bottom a.panel:last-of-type,
174 .panel.switchable.top a.panel:first-of-type {
175   display: block;
176   border-style: none none solid none;
177   border-width: 1px;
178 }
179 .panel.switchable.bottom a.panel:last-of-type {
180   border-style: solid none none none;
181   margin-top: .5em;
182 }
183
184
185 /* == Panel Elements == */
186
187 .panel#advfilter .filter,
188 .panel#tagger .newtag,
189 .panel#tagger input[type=submit],
190 .panel#preferences > * {
191   display: inline-block;
192   vertical-align: top;
193   margin-top: 1em;
194 }
195
196
197 /* == Advanced Filters == */
198
199 /* == Filter Boxes == */
200 #advfilter .filter {
201   border: solid 1px #FFF;
202   border-radius: .25em;
203   padding: .25em .5em;
204 }
205 #advfilter .filter .tabcontainer {
206   position: relative;
207   width: 16em;
208   font-weight:normal;
209 }
210 #advfilter .filter .tabcontainer input + .category.tabhandle {
211   display: block;
212   width: 50%;
213 }
214 #advfilter .filter .tabcontainer input:checked + .category.tabhandle {
215   background: #FFF;
216   color: #000;
217 }
218 #advfilter .filter .tabcontainer .category.tabcontent {
219   position: absolute;
220   top: 0; right: 0;
221   width: 50%;
222   height: 100%;
223   min-height: 4em;
224   border: 2px #FFF solid;
225   border-radius: 0 .25em .25em 0;
226 }
227
228 #advfilter > label.tabhandle {
229   text-align: right;
230   width: 4em;
231   margin-left: 4em;
232 }
233
234 /* == Dynamic Appearance of Boxes == */
235 .panel#advfilter > .tabhandle + label { display: none; }
236 .panel#advfilter > .tabhandle:checked + label + .tabcontent + .tabhandle + label { display: inline-block; }
237 .panel#advfilter > .tabhandle:checked + label + .tabcontent + .tabhandle:checked + label { display: none; }
238 .panel#advfilter > .tabhandle + label + .tabcontent {
239   display: inline-block;
240   overflow: hidden;
241   max-width: 0;
242   max-height: 0;
243   padding: 0;
244   border: none;
245 }
246 .panel#advfilter > .tabhandle:checked + label + .tabcontent {
247   max-width: 100%;
248   max-height: 100%;
249   padding: .25em .5em;
250   border: solid 1px #FFF;
251 }
252
253 #advfilter .filter.final {
254   width: 16em;
255   margin-left: 1em;
256 }
257
258
259 /* == Recent filters == */
260
261 p.quicklinks { padding-bottom: 3em; }
262 p.quicklinks :first-child {width: 100%;}
263 p.quicklinks input { display: block; }
264 p.quicklinks a {
265   display: block;
266   word-wrap: break-word;
267   margin-left: 10%;
268   margin-bottom: .75em;
269   margin-top: -1.5em;
270 }
271 p.quicklinks input:checked,
272 p.quicklinks input:checked + a { display: none;}
273
274 /* == Thumblist == */
275
276 #thumblist {
277   width: 100%;
278   padding: .5em 0 3em 0;
279   text-align: center;
280 }
281
282 #thumblist .thumb {
283   position: relative;
284   display: inline-block;
285   text-align: left;
286   width: 90%;
287   padding: 0 .5em;
288   margin: .5%;
289   margin-bottom: .75em;
290   vertical-align: top;
291   word-wrap: break-word;
292 }
293 @media (min-width: 460px){#thumblist .thumb{width: 48%;}}
294 @media (min-width: 620px){#thumblist .thumb{width: 32%;}}
295 @media (min-width: 1004px){#thumblist .thumb{width: 250px; margin: 2px;}}
296
297 #thumblist .thumb img {
298   width: 100%;
299   margin: 0; padding: 0;
300 }
301 #thumblist .thumb h2 {
302   position: absolute;
303   top: 0; width: 100%;
304   font-size: 1.125em;
305   font-weight: normal;
306   padding: .5ex .5em;
307   margin: 0;
308   border-bottom: 1px solid #333;
309   background: rgba(0,0,0,.5);
310 }
311 #thumblist .thumb .property {
312   position: absolute; left: .25em;
313   margin-top: -1.5em;
314 }
315 #thumblist .thumb .property:nth-of-type(2) { left: 5em;}
316 #thumblist .thumb button {
317   display: block;
318   width: 100%;
319   margin: 0; padding: 0;
320   border: none;
321   line-height: 0;
322   background-color: transparent;
323 }
324 #thumblist input {
325   margin: .75em .5em;
326 }
327
328 /* == Filelist == */
329
330 #thumblist .file {
331   color: #000;
332   display: inline-block;
333   text-align: left;
334   width: 90%;
335   padding: .5em .5em;
336   margin: .5%;
337   margin-bottom: .75em;
338   vertical-align: top;
339   word-wrap: break-word;
340 }
341 @media (min-width: 460px){#thumblist .file{width: 48%;}}
342 @media (min-width: 620px){#thumblist .file{width: 32%;}}
343 @media (min-width: 1004px){#thumblist .file{width: 250px; margin: 2px;}}
344
345 #thumblist .file.directory { background-color: #BBD; }
346 #thumblist .file.plain { background-color: #111; color: #777; }
347 #thumblist .file.video { background-color: #DBB; }
348
349 .panel#tagger .newtag { width: 50%;}
350 .panel#tagger .newtag.additional,
351 .panel#tagger .newtag.description { width: 100%;}
352 .panel#tagger .newtag select,
353 .panel#tagger .newtag .label{
354   display: block;
355   width: 100%;
356 }
357 .panel#tagger input[type=submit],
358 .panel#tagger button {
359   min-width: 10em; height: 3em;
360 }
361 @media (min-width: 460px){
362 .panel#tagger .newtag { width: 10em;}
363 .panel#tagger .newtag.additional,
364 .panel#tagger .newtag.description { width: 20em; max-width: 40%; }
365 }
366
367 .panel#preferences > fieldset {
368   border: solid 1px;
369   border-radius: .25em;
370 }
371 .panel#preferences > input { display: block; }
372
373 /* == Client side player == */
374
375 #videoview h1, 
376 #playctl h1 { font-size: 1.25em;}
377 #videoview h1, #videoview > a,
378 #playctl h1, #playctl > a {
379   display: inline-block;
380   margin-right: 1em;
381   padding: 0; margin: .5em 0;
382 }
383 #videoview video {
384   display: block;
385   margin: 0;
386   width: 100%;
387 }
388
389 /* == Server side player == */
390
391 form.playctl fieldset {
392   display: block;
393   position: relative;
394   width: 100%;
395   border: none;
396   text-align: center;
397 }
398 form.playctl fieldset.playback  { height: 12em; }
399 form.playctl fieldset.playback button {
400   position: absolute;
401   height: 6em;
402   padding-top: 1em;
403   background-color: #EEE;
404   border: 1px solid #333;
405 }
406 form.playctl fieldset.playback button[value="-60"] {top: 6em; left: 0; width: 20%;}
407 form.playctl fieldset.playback button[value="-10"] {top: 6em; left: 20%; width: 30%;}
408 form.playctl fieldset.playback button[value="stop"] {top: 0; left: 0; width: 40%;}
409 form.playctl fieldset.playback button[value="pause"] {top: 0; right: 0; width: 60%;}
410 form.playctl fieldset.playback button[value="+10"] {top: 6em; right: 20%; width: 30%;}
411 form.playctl fieldset.playback button[value="+60"] {top: 6em; right: 0; width: 20%;}
412
413 form.playctl fieldset.volume { height: 3em; }
414 form#advctl.playctl fieldset.volume { height: 4em; }
415 form.playctl fieldset.volume button[name="amp"] {position: absolute; width: 50%; height: 4em; top: 0;}
416 form.playctl fieldset.volume button[value="off"] {left:0;}
417 form.playctl fieldset.volume button[value="on"] {right:0;}
418 form.playctl fieldset.volume button[name="vol"] {position: relative; display: inline-block; width: 4%;}
419 form.playctl fieldset.volume button[name="vol"].selected { background-color: #FA6;}
420 form.playctl fieldset.volume button[name="vol"][value="100"],
421 form.playctl fieldset.volume button[name="vol"][value="0"] { width: 4%;}
422 form.playctl fieldset.pasink button { width: 100%; height: 3em;}
423
424 span.progress {
425   display: block;
426   position: fixed;
427   top: 0em;
428   width: 100%; left:0; right: 0;
429   color: white;
430   background-color: black;
431   border-top: 1px solid white;
432   padding: 0;
433   height: 1em;
434   overflow: hidden;
435 }
436 span.progress > span {
437   display: block;
438   position: absolute;
439   text-align: center;
440   background-color: #333;
441   min-width: 2em;
442 }