3 box-sizing: border-box;
5 font-family: sans-serif;
11 color: inherit; background: transparent;
12 padding: 0; margin: 0;
17 color: #000; background-color: #FFF;
20 /* ======= GENERIC HTML STYLES =======*/
22 p { margin-bottom: 1em; }
25 text-decoration: underline;
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; }
41 h1:first-child, h2:first-child, h3:first-child,
42 p + h1, p + h2, p + h3 {
46 h4, h5, h6, form legend {
51 h1 { font-size: 1.5em; }
52 h2 { font-size: 1.125em; }
54 select, input, button, textarea,
56 display: inline-block;
57 background-color: #FFF;
60 vertical-align: text-bottom;
65 text-decoration: none;
68 select { padding: .375em 0; }
70 input[type=radio], input[type=checkbox] {
71 vertical-align: baseline;
73 input[type=number] { text-align: right; padding-right: 0; }
75 button, input[type=button],
77 box-shadow: .125em .125em .25em;
80 input[type=radio], input[type=checkbox],
81 input[type=radio] + label, input[type=checkbox] + label {
85 label { margin-right: .75em; }
90 /* ====== COMMON ELEMENTS ======*/
95 margin: 0; -padding: 0 .5em;
98 background-color: #444;
99 box-shadow: inset 0 -.25em .25em #000;
105 display: inline-block;
110 box-shadow: inset 0 0 .5em #000;
112 body.cards > .menu a[href="/cards/"],
113 body.courses > .menu a[href="/courses/"] {
115 background-color: #FFF;
119 /* =========== FILTER AND SEARCH Headers ========= */
122 form.search, form.sort, form.filter, form.newcard, form.newcourses {
123 margin-top: 1em; padding: 0 1em;
126 form.filter > h1 { display: none; }
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 {
134 background-color: #EEE;
136 border-width: .5pt .25pt 0 .25pt;
139 form.filter fieldset.item input[type=radio] + label:first-of-type {
140 border-left: 1pt solid;
142 form.filter fieldset.item input[type=radio]:checked + label {
144 background-color: #FFF;
145 box-shadow: .125em -.125em .125em #888;
148 form.filter fieldset.item input[type=text],
149 form.filter fieldset.item fieldset.courses,
150 form.filter fieldset.item fieldset.categories {
155 padding: .25em .75em;
157 box-shadow: .125em .125em .25em #888;
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; }
166 form.filter fieldset.order legend {
167 float: left; margin-right: 1em;
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;
176 form.filter button[value=export_csv] { margin-left: 1em; }
178 body.courses form .order { display: inline-block; margin-right: 2em;}
180 body.cards form.newcard { display: flex; }
181 body.cards form.newcard input[name=seed] { flex: 1; }
184 /* ============ LIST ITEMS, Generic ============= */
190 width: 98%; width: calc(100% - 2em);
191 margin-left: auto; margin-right: auto;
193 box-shadow: .125em .125em .25em;
197 /* HACK: put anchor point 10em above card and highlight target element */
198 div:target { box-shadow: none; z-index: 0; }
211 top: 10em; bottom: 0;
212 box-shadow: .125em .125em .25em;
213 animation: highlight 4s;
216 @keyframes highlight { from { background-color: #FF0; } to { background-color: transparent; } }
219 div .section, form .section {
224 word-break: break-word;
227 div .section :last-child, form .section :last-child {
231 div .section h2, form .section h2,
232 div .section h3, form .section h3 {
233 border-bottom: 1pt solid #EEE;
235 div .control, form .control {
236 background-color: #EEE;
241 @media(min-width: 60em) {
242 div .section, form .section {
244 width: calc(100% / 10);
246 div .section :last-child { margin-bottom: 0; }
247 div .control, form .control {
248 background-color: transparent;
250 div .section:nth-of-type(2n) {
251 background-color: #EEE;
254 @media(min-width: 80em) {
255 div .control, form .control {
257 width: calc(100% / 10);
259 div .control .item, form .control .item {
261 margin-bottom: .25em;
265 div .section .item, form .section .item,
266 form .section.attendance > label {
271 div .section .item.NOTE {
272 white-space: pre-wrap;
275 form .section .item {
276 margin-bottom: .25em;
279 form .section button[value^=addfield] {
281 margin-top: .5em; padding: 0 .375em;
284 /* HACK: "responsive" Delete Button above each field */
285 form input.delete { display: none; }
286 form input.delete + label {
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;
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 {
308 /* ====== right hand Control Buttons on list items ====== */
315 form .control .item {
316 display: inline-block;
317 margin-bottom: .25em;
318 vertical-align: text-bottom;
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; }
327 /* HACK: Delete Checkbox before delete Button */
328 form .control .item.delete {
330 bottom: .375em; left: .25em; width: auto;
331 padding-bottom: calc(2.25em + 2pt);
334 form .control .item.delete input + label + button {
337 bottom: 0; width: 100%;
339 background-color: #FEE;
342 form .control .item.delete:after {
343 content: attr(label);
346 bottom: 0; width: 100%;
351 box-shadow: .125em .125em .25em;
353 form .control .item.delete input:checked + label + button { display: block; }
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; }
363 /* ======= LIST ITEMS, Courses ======= */
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 {
374 margin: 0; padding: 0 3pt;
376 form.course .dtstart table input[type=radio]:checked + label {
379 box-shadow: .125em .125em .25em;
382 form.course .dtstart label.DTSTIME {
383 display: inline-block;
386 width: calc(100% - 7.875em);
388 form.course .dtstart input[name=DTS_HOUR],
389 form.course .dtstart input[name=DTS_MINUTE] {
390 vertical-align: baseline;
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;
408 form.course .attendance div.attendance {
412 form.course .attendance label {
413 display: inline-block;
414 max-width: calc(100% - 2em);
418 form.course .attendance input { margin-top: .375em; }
420 /* ======== Categories Page ======== */
422 body.categories form ul { list-style: none; margin: 0; }
425 display: inline-block;
426 background-color: #EEE;
427 margin-right: .5em; margin-bottom: .5em;
429 box-shadow: .125em .125em .25em;
431 form.categories li button[name=remove] {
434 background-color: #FBB;
438 form.categories li button[name=remove]:before {
443 form.categories li:last-child { padding-left: 0 }
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;
450 body.categories form.namelist ul.namelist > li h2 {
454 body.categories form.namelist ul.namelist > li ul li {
455 display: inline-block;