]> git.plutz.net Git - confetti/blob - style.css
Includ bday field in quick entries
[confetti] / style.css
1 * {
2   position: relative;
3   box-sizing: border-box;
4   max-width: 100%;
5   font-family: sans-serif;
6   font-weight: normal;
7   font-size: initial;
8   font-style: normal;
9   text-decoration: none;
10   line-height: 1.5em;
11   color: inherit; background: transparent;
12   padding: 0; margin: 0;
13   border: none;
14 }
15
16 body {
17   color: #000; background-color: #FFF;
18 }
19
20 /* ======= GENERIC HTML STYLES =======*/
21
22 p { margin-bottom: 1em; }
23
24 a {
25   text-decoration: underline;
26   font-style: italic;
27   color: #068;
28 }
29
30 i, em { font-style: italic; }
31 b, strong { font-weight: bolder; }
32 ul, ol { margin-left: 1.125em; }
33 table th { font-weight: bold; }
34
35 h1, h2, h3 {
36   font-weight: bold;
37   margin-top: 1em;
38   margin-bottom: .5em;
39 }
40
41 h1:first-child, h2:first-child, h3:first-child,
42 p + h1, p + h2, p + h3 {
43   margin-top: 0;
44 }
45
46 h4, h5, h6, form legend {
47   font-weight: bolder;
48   margin-bottom: .25em;
49 }
50
51 h1 { font-size: 1.5em; }
52 h2 { font-size: 1.125em; }
53
54 select, input, button, textarea,
55 .control a {
56   display: inline-block;
57   background-color: #FFF;
58   border: 1pt solid;
59   padding: .25em .75em;
60   vertical-align: text-bottom;
61 }
62 .control a {
63   color: inherit;
64   font-style: normal;
65   text-decoration: none;
66 }
67
68 select { padding: .375em 0; }
69
70 input[type=radio], input[type=checkbox] {
71   vertical-align: baseline;
72 }
73 input[type=number] { text-align: right; padding-right: 0; }
74
75 button, input[type=button],
76 .control a {
77   box-shadow: .125em .125em .25em;
78   cursor: pointer;
79 }
80 input[type=radio], input[type=checkbox],
81 input[type=radio] + label, input[type=checkbox] + label {
82   cursor: pointer;
83 }
84
85 label { margin-right: .75em; }
86 input + label {
87   margin-left: .375em;
88 }
89
90 /* ====== COMMON ELEMENTS ======*/
91
92 body > ul.menu {
93   display: block;
94   height: 1.75em;
95   margin: 0; -padding: 0 .5em;
96   list-style: none;
97   color: #CCC;
98   background-color: #444;
99   box-shadow: inset 0 -.25em .25em #000;
100   overflow: hidden;
101   z-index: 3;
102 }
103
104 body > .menu li {
105   display: inline-block;
106 }
107 body > .menu a {
108   color: inherit;
109   padding: .5em 3em;
110   box-shadow: inset 0 0 .5em #000;
111 }
112 body.cards > .menu a[href="/cards/"],
113 body.courses > .menu a[href="/courses/"] {
114   color: #000;
115   background-color: #FFF;
116   box-shadow: none;
117 }
118
119 /* =========== FILTER AND SEARCH Headers ========= */
120
121 form.categories,
122 form.search, form.sort, form.filter, form.newcard, form.newcourses {
123   margin-top: 1em; padding: 0 1em;
124   z-index: 1;
125 }
126 form.filter > h1 { display: none; }
127
128 form.filter fieldset { margin-top: .5em; }
129 form.filter fieldset.item + fieldset.item legend { display: none; }
130 form.filter fieldset.item input[type=radio] { display: none; }
131 form.filter fieldset.item input[type=radio] + label {
132   display: table-cell;
133   padding: .5em 1em;
134   background-color: #EEE;
135   border-style: solid;
136   border-width: .5pt .25pt 0 .25pt;
137   white-space: normal;
138 }
139 form.filter fieldset.item input[type=radio] + label:first-of-type {
140   border-left: 1pt solid;
141 }
142 form.filter fieldset.item input[type=radio]:checked + label {
143   position: relative;
144   background-color: #FFF;
145   box-shadow: .125em -.125em .125em #888;
146   z-index: 1;
147 }
148 form.filter fieldset.item input[type=text],
149 form.filter fieldset.item fieldset.courses,
150 form.filter fieldset.item fieldset.categories {
151   position: relative;
152   display: block;
153   width: 100%;
154   margin-top: -1pt;
155   padding: .25em .75em;
156   border: 1pt solid;
157   box-shadow: .125em .125em .25em #888;
158 }
159 form.filter fieldset.item fieldset.courses,
160 form.filter fieldset.item fieldset.categories { display: none; }
161 form.filter fieldset.item input[value=course]:checked ~ input[type=text],
162 form.filter fieldset.item input[value=CATEGORIES]:checked ~ input[type=text] { display: none; }
163 form.filter fieldset.item input[value=course]:checked ~ fieldset.courses,
164 form.filter fieldset.item input[value=CATEGORIES]:checked ~ fieldset.categories { display: block; }
165
166 form.filter fieldset.order legend {
167   float: left; margin-right: 1em;
168 }
169
170 form.filter fieldset label,
171 form.filter fieldset a { white-space: pre;}
172 form.filter button[type=submit] {
173   margin-top: .5em; margin-bottom: .5em;
174 }
175
176 form.filter button[value=export_csv] { margin-left: 1em; }
177
178 body.courses form .order { display: inline-block; margin-right: 2em;}
179
180 body.cards form.newcard { display: flex; }
181 body.cards form.newcard input[name=seed] { flex: 1; }
182
183
184 /* ============ LIST ITEMS, Generic ============= */
185
186 body > form,
187 div.card,
188 div.course {
189   position: relative;
190   width: 98%; width: calc(100% - 2em);
191   margin-left: auto; margin-right: auto;
192   margin-bottom: 1em;
193   box-shadow: .125em .125em .25em;
194   z-index: 1;
195 }
196
197 /* HACK: put anchor point 10em above card and highlight target element */
198     div:target { box-shadow: none; z-index: 0; }
199     div:target:before {
200       content: '';
201       display: block;
202       margin-top: -10em;
203       height: 10em;
204       visibility: hidden;
205     }
206     div:target:after {
207       content: '';
208       display: block;
209       position: absolute;
210       left: 0; right: 0;
211       top: 10em; bottom: 0;
212       box-shadow: .125em .125em .25em;
213       animation: highlight 4s;
214       z-index: -1;
215     }
216     @keyframes highlight { from { background-color: #FF0; } to { background-color: transparent; } }
217 /**/
218
219 div .section, form .section {
220   display: block;
221   vertical-align: top;
222   padding: 0 1em;
223   overflow: hidden;
224   word-break: break-word;
225 }
226
227 div .section :last-child, form .section :last-child {
228   margin-bottom: 1em;
229 }
230
231 div .section h2, form .section h2,
232 div .section h3, form .section h3 { 
233   border-bottom: 1pt solid #EEE;
234 }
235 div .control, form .control {
236   background-color: #EEE;
237   padding: .25em;
238   text-align: right;
239 }
240
241 @media(min-width: 60em) {
242   div .section, form .section {
243     display: table-cell;
244     width: calc(100% / 10);
245   }
246   div .section :last-child { margin-bottom: 0; }
247   div .control, form .control {
248     background-color: transparent;
249   }
250   div .section:nth-of-type(2n) {
251     background-color: #EEE;
252   }
253 }
254 @media(min-width: 80em) {
255   div .control, form .control {
256     display: table-cell;
257     width: calc(100% / 10);
258   }
259   div .control .item, form .control .item {
260     display: block;
261     margin-bottom: .25em;
262   }
263 }
264
265 div .section .item, form .section .item,
266 form .section.attendance > label {
267   display: block;
268   width: 100%;
269 }
270
271 div .section .item.NOTE {
272   white-space: pre-wrap;
273 }
274
275 form .section .item {
276   margin-bottom: .25em;
277 }
278
279 form .section button[value^=addfield] {
280   font-size: .75em;
281   margin-top: .5em; padding: 0 .375em;
282 }
283
284 /* HACK: "responsive" Delete Button above each field */
285     form input.delete { display: none; }
286     form input.delete + label {
287       float: right;
288       font-size: .75em;
289       line-height: 1;
290       max-width: 1.75em; height: 1.125em; overflow: hidden;
291       color: #FBB; background-color: #444;
292       margin: 0; padding: .125em .5em 0 .5em;
293       border-radius: 4pt 4pt 0 0;
294       transition: max-width .3s;
295     }
296     form input.delete + label:before  { content: '\274c '; margin-right: .5em; }
297     form input.delete + label:hover   { max-width: 10em; }
298     -form input.delete + label:hover:before { content: ''; }
299     -form input.delete + label:hover:after  { content: ' \274c'; }
300     form input.delete:checked + label,
301     form input.delete:checked + label + *,
302     form input.delete:checked + label + .teltype + .TEL {
303       display: none;
304     }
305 /**/
306
307
308 /* ====== right hand Control Buttons on list items ====== */
309
310 form .control {
311   position: relative;
312   padding-left: 11em;
313   padding-top: 1.5em;
314 }
315 form .control .item {
316   display: inline-block;
317   margin-bottom: .25em;
318   vertical-align: text-bottom;
319 }
320
321 /* Combined Select/Submit Box */
322     form .control .item.newfield { box-shadow: .125em .125em .25em; }
323     form .control .item.newfield select { margin-right: -1pt; }
324     form .control .item.newfield button { box-shadow: none; }
325 /**/
326
327 /* HACK: Delete Checkbox before delete Button */
328     form .control .item.delete {
329       position: absolute;
330       bottom: .375em; left: .25em; width: auto;
331       padding-bottom: calc(2.25em + 2pt);
332     }
333     
334     form .control .item.delete input + label + button {
335       display: none;
336       position: absolute;
337       bottom: 0; width: 100%;
338       color: #800;
339       background-color: #FEE;
340       z-index: 1;
341     }
342     form .control .item.delete:after {
343       content: attr(label);
344       display: block;
345       position: absolute;
346       bottom: 0; width: 100%;
347       text-align: center;
348       color: #BAA;
349       padding: .25em 0;
350       border: 1pt solid;
351       box-shadow: .125em .125em .25em;
352     }
353     form .control .item.delete input:checked + label + button { display: block; }
354 /**/
355
356 @media(min-width: 80em) {
357   form .control { padding: .25em; min-height: 16em; }
358   form .control .item { width: 100%; }
359   form .control .item.newfield select { width: calc(100% - 2.5em); }
360   form .control .item.delete { bottom: .125em; right: .25em; }
361 }
362
363 /* ======= LIST ITEMS, Courses ======= */
364
365 form.course .dtstart input[name=DTS_YEAR],
366 form.course .dtstart select[name=DTS_MONTH] { width: calc(50% - 1.25em); }
367 form.course .dtstart input[name=DTS_YEAR] { margin-right: -.375em; }
368 form.course .dtstart table { width: 100%; margin: 1em 0; }
369 form.course .dtstart table td { text-align: right; -border: .5pt solid; }
370 form.course .dtstart table input[type=radio] { display: none; }
371 form.course .dtstart table input[type=radio] + label {
372   display: block;
373   width: 100%;
374   margin: 0; padding: 0 3pt;
375 }
376 form.course .dtstart table input[type=radio]:checked + label {
377   font-weight: bold;
378   padding: 0 2pt;
379   box-shadow: .125em .125em .25em;
380 }
381
382 form.course .dtstart label.DTSTIME {
383   display: inline-block;
384   font-weight: bold;
385   margin: 0;
386   width: calc(100% - 7.875em);
387 }
388 form.course .dtstart input[name=DTS_HOUR],
389 form.course .dtstart input[name=DTS_MINUTE] {
390   vertical-align: baseline;
391   width: 3.5em;
392   margin-bottom: 0;
393 }
394
395 form.course .recur .item { white-space: nowrap; }
396 form.course .recur .item > * { margin-bottom: 0; vertical-align: baseline; }
397 form.course .recur input[name=RRULE_INTERVAL],
398 form.course .recur input[name=RRULE_COUNT],
399 form.course .recur input[name=RRULE_UMONTH],
400 form.course .recur input[name=RRULE_UDAY] { width: 3.5em; }
401 form.course .recur input[name=RRULE_UYEAR] { width: 4.5em; }
402 form.course .recur input[name=RRULE_UYEAR],
403 form.course .recur input[name=RRULE_UMONTH],
404 form.course .recur input[name=RRULE_UDAY] {
405   margin-right: -.375em;
406 }
407
408 form.course .attendance div.attendance {
409   max-height: 16em;
410   overflow-y: scroll;
411 }
412 form.course .attendance label {
413   display: inline-block;
414   max-width: calc(100% - 2em);
415   vertical-align: top;
416   margin-bottom: 0;
417 }
418 form.course .attendance input { margin-top: .375em; }
419
420 /* ======== Categories Page ======== */
421
422 body.categories form ul { list-style: none; margin: 0; }
423
424 form.categories li {
425   display: inline-block;
426   background-color: #EEE;
427   margin-right: .5em; margin-bottom: .5em;
428   padding-left: .5em;
429   box-shadow: .125em .125em .25em;
430 }
431 form.categories li button[name=remove] {
432   font-size: .75em;
433   width: 2.5em;
434   background-color: #FBB;
435   overflow: hidden;
436   white-space: pre;
437 }
438 form.categories li button[name=remove]:before {
439   content: '\274C ';
440   margin-right: 3em;
441 }
442
443 form.categories li:last-child { padding-left: 0 }
444
445 body.categories form.namelist ul.namelist > li:nth-of-type(2n + 1) { background-color: #EEE; }
446 body.categories form.namelist ul.namelist > li h2,
447 body.categories form.namelist ul.namelist > li ul {
448   display: inline-block;
449 }
450 body.categories form.namelist ul.namelist > li h2 {
451   width: 20%;
452   min-width: 10em;
453 }
454 body.categories form.namelist ul.namelist > li ul li {
455   display: inline-block;
456 }