]> git.plutz.net Git - lobster/blob - style.css
Merge commit 'a27498203e5d589514f082a0fcdcca53e31c595e' into cgilite
[lobster] / style.css
1 h1:first-child, h2:first-child, h3:first-child,
2 p + h1, p + h2, p + h3 {
3   margin-top: 3pt;
4 }
5
6 /* ====== COMMON ELEMENTS ======*/
7
8 #message {
9   display: block;
10   position: fixed;
11   top: 0; width: 100%;
12   margin: 0; padding: 1em;
13   text-align: center;
14   font-weight: bold;
15   background-color: #FAA;
16   border: 1px solid #000;
17   border-style: none none solid none;
18 }
19
20 /* =========== FILTER AND SEARCH Headers ========= */
21
22 form.categories,
23 form.search, form.sort, form.filter, form.newcard, form.newcourses {
24   margin-top: 1em; padding: 0 1em;
25   z-index: 1;
26 }
27 form.filter > h1 { display: none; }
28
29 form.filter fieldset { margin-top: .5em; }
30 form.filter fieldset.item + fieldset.item legend { display: none; }
31
32 form.filter fieldset.item input[type=text] { display: block; }
33
34 form.filter fieldset.order legend {
35   float: left; margin-right: 1em;
36 }
37
38 form.filter fieldset label,
39 form.filter fieldset a { white-space: pre;}
40 form.filter button[type=submit] {
41   margin-top: .5em; margin-bottom: .5em;
42 }
43
44 form.filter button[value=export_csv] { margin-left: 1em; }
45
46 body.courses form .order { display: inline-block; margin-right: 2em;}
47
48 body.cards form.newcard {
49   position: sticky;
50   top: 0;
51   background-color: #FFF;
52   z-index: 2;
53 }
54 body.cards form.newcard input[name=seed] { flex: 1; }
55 body.cards form.newcard a[href="#top"] { float: right; }
56
57
58 /* ============ LIST ITEMS, Generic ============= */
59
60 body > form,
61 div.card,
62 div.course {
63   position: relative;
64   width: 98%; width: calc(100% - 2em);
65   margin-left: auto; margin-right: auto;
66   margin-bottom: 1em;
67   box-shadow: .125em .125em .25em;
68   z-index: 1;
69 }
70
71 /* HACK: put anchor point 10em above card and highlight target element */
72     div:target { box-shadow: none; z-index: 0; }
73     div:target:before {
74       content: '';
75       display: block;
76       margin-top: -10em;
77       height: 10em;
78       visibility: hidden;
79     }
80     div:target:after {
81       content: '';
82       display: block;
83       position: absolute;
84       left: 0; right: 0;
85       top: 10em; bottom: 0;
86       box-shadow: .125em .125em .25em;
87       animation: highlight 4s;
88       z-index: -1;
89     }
90     @keyframes highlight { from { background-color: #FF0; } to { background-color: transparent; } }
91 /**/
92
93 div .section, form .section {
94   display: block;
95   vertical-align: top;
96   padding: 0 1em;
97   overflow: hidden;
98   word-break: break-word;
99 }
100
101 div .section :last-child, form .section :last-child {
102   margin-bottom: 1em;
103 }
104
105 div .section h2, form .section h2,
106 div .section h3, form .section h3 { 
107   border-bottom: 1pt solid #EEE;
108 }
109 div .control, form .control {
110   background-color: #EEE;
111   padding: .25em;
112   text-align: right;
113 }
114
115 @media(min-width: 60em) {
116   div .section, form .section {
117     display: table-cell;
118     width: calc(100% / 10);
119   }
120   div .section :last-child { margin-bottom: 0; }
121   div .control, form .control {
122     background-color: transparent;
123   }
124   div .section:nth-of-type(2n) {
125     background-color: #EEE;
126   }
127 }
128 @media(min-width: 80em) {
129   div .control, form .control {
130     display: table-cell;
131     width: calc(100% / 10);
132   }
133   div .control .item, form .control .item {
134     display: block;
135     margin-bottom: .25em;
136   }
137 }
138
139 div .section .item, form .section .item,
140 form .section.attendance > label {
141   display: block;
142   width: 100%;
143 }
144
145 div .section .item.NOTE {
146   white-space: pre-wrap;
147 }
148
149 form .section .item {
150   margin-bottom: .25em;
151 }
152
153 form .section button[value^=addfield] {
154   font-size: .75em;
155   margin-top: .5em; padding: 0 .375em;
156 }
157
158 /* HACK: "responsive" Delete Button above each field */
159     form input.delete { display: none; }
160     form input.delete + label {
161       float: right;
162       font-size: .75em;
163       line-height: 1;
164       max-width: 1.75em; height: 1.125em; overflow: hidden;
165       color: #FBB; background-color: #444;
166       margin: 0; padding: .125em .5em 0 .5em;
167       border-radius: 4pt 4pt 0 0;
168       transition: max-width .3s;
169     }
170     form input.delete + label:before  { content: '\274c '; margin-right: .5em; }
171     form input.delete + label:hover   { max-width: 10em; }
172     -form input.delete + label:hover:before { content: ''; }
173     -form input.delete + label:hover:after  { content: ' \274c'; }
174     form input.delete:checked + label,
175     form input.delete:checked + label + *,
176     form input.delete:checked + label + .teltype + .TEL {
177       display: none;
178     }
179 /**/
180
181
182 /* ====== right hand Control Buttons on list items ====== */
183
184 form .control {
185   position: relative;
186   padding-left: 11em;
187   padding-top: 1.5em;
188 }
189 form .control .item {
190   display: inline-block;
191   margin-bottom: .25em;
192   vertical-align: text-bottom;
193 }
194
195 /* Combined Select/Submit Box */
196     form .control .item.newfield { box-shadow: .125em .125em .25em; }
197     form .control .item.newfield select { margin-right: -1pt; }
198     form .control .item.newfield button { box-shadow: none; }
199 /**/
200
201 /* HACK: Delete Checkbox before delete Button */
202     form .control .item.delete {
203       position: absolute;
204       bottom: .375em; left: .25em; width: auto;
205       padding-bottom: calc(2.25em + 2pt);
206     }
207     
208     form .control .item.delete input + label + button {
209       display: none;
210       position: absolute;
211       bottom: 0; width: 100%;
212       color: #800;
213       background-color: #FEE;
214       z-index: 1;
215     }
216     form .control .item.delete:after {
217       content: attr(label);
218       display: block;
219       position: absolute;
220       bottom: 0; width: 100%;
221       text-align: center;
222       color: #BAA;
223       padding: .25em 0;
224       border: 1pt solid;
225       box-shadow: .125em .125em .25em;
226     }
227     form .control .item.delete input:checked + label + button { display: block; }
228 /**/
229
230 @media(min-width: 80em) {
231   form .control { padding: .25em; min-height: 16em; }
232   form .control .item { width: 100%; }
233   form .control .item.newfield select { width: calc(100% - 2.5em); }
234   form .control .item.delete { bottom: .125em; right: .25em; }
235 }
236
237 /* ======= LIST ITEMS, Clients ======= */
238
239 div.card .therapies a.therapy.button { padding: .25em; line-height: .75em; }
240
241 form.card .insurance #hi_select_list:checked ~ .tab[name=hi_company] {display: block; }
242 form.card .insurance #hi_other:checked ~ .tab[name=hi_other] {display: block; }
243
244 /* ======= LIST ITEMS, Courses ======= */
245
246 form.course .dtstart input[name=DTS_YEAR],
247 form.course .dtstart select[name=DTS_MONTH] { width: calc(50% - 1.25em); }
248 form.course .dtstart input[name=DTS_YEAR] { margin-right: -.375em; }
249 form.course .dtstart table { width: 100%; margin: 1em 0; }
250 form.course .dtstart table td { text-align: right; -border: .5pt solid; }
251 form.course .dtstart table input[type=radio] { display: none; }
252 form.course .dtstart table input[type=radio] + label {
253   display: block;
254   width: 100%;
255   margin: 0; padding: 0 3pt;
256 }
257 form.course .dtstart table input[type=radio]:checked + label {
258   font-weight: bold;
259   padding: 0 2pt;
260   box-shadow: .125em .125em .25em;
261 }
262
263 form.course .dtstart label.DTSTIME {
264   display: inline-block;
265   font-weight: bold;
266   margin: 0;
267   width: calc(100% - 7.875em);
268 }
269 form.course .dtstart input[name=DTS_HOUR],
270 form.course .dtstart input[name=DTS_MINUTE] {
271   vertical-align: baseline;
272   width: 3.5em;
273   margin-bottom: 0;
274 }
275
276 form.course .recur .item { white-space: nowrap; }
277 form.course .recur .item > * { margin-bottom: 0; vertical-align: baseline; }
278 form.course .recur input[name=RRULE_INTERVAL],
279 form.course .recur input[name=RRULE_COUNT],
280 form.course .recur input[name=RRULE_UMONTH],
281 form.course .recur input[name=RRULE_UDAY] { width: 3.5em; }
282 form.course .recur input[name=RRULE_UYEAR] { width: 4.5em; }
283 form.course .recur input[name=RRULE_UYEAR],
284 form.course .recur input[name=RRULE_UMONTH],
285 form.course .recur input[name=RRULE_UDAY] {
286   margin-right: -.375em;
287 }
288
289 form.course .attendance div.attendance {
290   max-height: 16em;
291   overflow-y: scroll;
292 }
293 form.course .attendance label {
294   display: inline-block;
295   max-width: calc(100% - 2em);
296   vertical-align: top;
297   margin-bottom: 0;
298 }
299 form.course .attendance input { margin-top: .375em; }
300
301 /* ======== Categories Page ======== */
302
303 body.categories form ul { list-style: none; margin: 0; }
304
305 form.categories li {
306   display: inline-block;
307   background-color: #EEE;
308   margin-right: .5em; margin-bottom: .5em;
309   padding-left: .5em;
310   box-shadow: .125em .125em .25em;
311 }
312 form.categories li button[name=remove] {
313   font-size: .75em;
314   width: 2.5em;
315   background-color: #FBB;
316   overflow: hidden;
317   white-space: pre;
318 }
319 form.categories li button[name=remove]:before {
320   content: '\274C ';
321   margin-right: 3em;
322 }
323
324 form.categories li:last-child { padding-left: 0 }
325
326 body.categories form.namelist ul.namelist > li:nth-of-type(2n + 1) { background-color: #EEE; }
327 body.categories form.namelist ul.namelist > li h2,
328 body.categories form.namelist ul.namelist > li ul {
329   display: inline-block;
330 }
331 body.categories form.namelist ul.namelist > li h2 {
332   width: 20%;
333   min-width: 10em;
334 }
335 body.categories form.namelist ul.namelist > li ul li {
336   display: inline-block;
337 }