style changes
authorPaul Hänsch <paul@plutz.net>
Mon, 18 Jan 2021 01:44:10 +0000 (02:44 +0100)
committerPaul Hänsch <paul@plutz.net>
Mon, 18 Jan 2021 01:44:10 +0000 (02:44 +0100)
cards/l10n.sh
cards/list.sh
cards/widgets.sh
courses/courses.css [deleted file]
courses/widgets.sh
style.css [changed from file to symlink]
style_new.css [new file with mode: 0644]
style_old.css [moved from cards/cards.css with 55% similarity]

index ec52766..ae50260 100755 (executable)
@@ -1,4 +1,4 @@
-# Copyright 2014, 2016, 2019 Paul Hänsch
+# Copyright 2014, 2016, 2019, 2021 Paul Hänsch
 #
 # This file is part of Confetti.
 # 
@@ -25,25 +25,25 @@ l10n(){
     N) printf %s "Name";;
     n_pre) printf %s "Titel";;
     n_first) printf %s "Vorname";;
-    n_middle) printf %s "Mittelnamen";;
+    n_middle) printf %s "Mittel&shy;namen";;
     n_last) printf %s "Nachname";;
     n_post) printf %s "Zusätze";;
-    NICKNAME) printf %s "Spitzname";;
-    SOUND) printf %s "Aussprache";;
-    GENDER) printf %s "Geschlecht";;
+    NICKNAME) printf %s "Spitz&shy;name";;
+    SOUND) printf %s "Aus&shy;sprache";;
+    GENDER) printf %s "Ge&shy;schlecht";;
     KIND) printf %s "Typ";;
     TITLE) printf %s "Beruf";;
     ROLE) printf %s "Position";;
-    ORG) printf %s "Organisation";;
+    ORG) printf %s "Orga&shy;ni&shy;sation";;
     MEMBER) printf %s "Mitglied";;
     CATEGORIES) printf %s "Kategorien";;
     ANNIVERSARY) printf %s "Jubiläum";;
     BDAY) printf %s "Geburtstag";;
     EMAIL) printf %s "E-Mail";;
     TEL) printf %s "Telefon";;
-    teltype) printf %s "Anschlusstyp:";;
+    teltype) printf %s "Anschluss&shy;typ:";;
     TYPE=HOME) printf %s "Privat";;
-    TYPE=WORK) printf %s "Geschäftlich";;
+    TYPE=WORK) printf %s "Geschäft&shy;lich";;
     TYPE=CELL) printf %s "Mobil";;
     TYPE=FAX) printf %s "Fax";;
     IMPP) printf %s "Chat";;
@@ -82,12 +82,12 @@ l10n(){
     hi_status) printf %s "Ver&shy;sich&shy;er&shy;ten&shy;sta&shy;tus";;
     X-HEALTH-INSURANCE-NOCONTRIB) printf %s "Zu&shy;zahl&shy;ungs&shy;be&shy;frei&shy;ung";;
     X-CLIENT-REFERRAL) printf %s "Empfehl&shy;ung durch";;
-    prescriptions) printf %s "Verordnungen";;
-    new_prescription) printf %s "Neue Verordnung";;
+    prescriptions) printf %s "Verord&shy;nungen";;
+    new_prescription) printf %s "Neue Verord&shy;nung";;
     no_icd) printf %s "Kein ICD Code";;
   
-    X-ZACK-JOINDATE)  printf %s "An&shy;mel&shy;de&shy;da&shy;tum";;
-    X-ZACK-LEAVEDATE) printf %s "Ab&shy;mel&shy;de&shy;da&shy;tum";;
+    X-ZACK-JOINDATE)  printf %s "Anmelde&shy;datum";;
+    X-ZACK-LEAVEDATE) printf %s "Abmelde&shy;datum";;
     X-ZACK-JOINDATE_short)  printf %s "Anm.";;
     X-ZACK-LEAVEDATE_short) printf %s "Abm.";;
   
@@ -95,6 +95,7 @@ l10n(){
     edit_categories) printf %s "Kategorien Bearbeiten";;
     vcf_export) printf %s "Vcard Exportieren";;
     control) printf %s "Aktionen";;
+    delete) printf %s "entfernen";;
     edit_update) printf %s "Daten übernehmen";;
     edit_cancel) printf %s "Abbrechen";;
     edit_delete) printf %s "Eintrag löschen";;
@@ -112,14 +113,14 @@ l10n(){
     filter_street) printf %s "Straße";;
     filter_zip) printf %s "PLZ.";;
     filter_TEL) printf %s "Telefon";;
-    filter_BDAY) printf %s "Geburtsjahr";;
-    filter_bdate) printf %s "Geburtsdatum";;
+    filter_BDAY) printf %s "Geburts&shy;jahr";;
+    filter_bdate) printf %s "Geburts&shy;datum";;
     filter_course) printf %s "Kurs";;
     filter_CATEGORIES) printf %s "Kategorien";;
     filter_apply) printf %s "Filtern";;
     filter_cancel) printf %s "Filter löschen";;
     newcard) printf %s "Neuen Eintrag anlegen";;
-    course_attendance) printf %s "Kursteilnahme";;
+    course_attendance) printf %s "Kurs&shy;teil&shy;nahme";;
   
     gender_none) printf %s "keine Angabe";;
     gender_female) printf %s "Weiblich";;
index 1c60291..74ad020 100755 (executable)
@@ -55,15 +55,20 @@ edit_card(){
            done)
          ]
          [div .control
-           [select .item name="newfield"
-             [option value="" disabled="disabled" selected="selected" $(l10n edit_addfieldtext)]
-             $(for f in NICKNAME EMAIL TEL IMPP ADR URL NOTE; do
-               printf '[option value="%s" %s] ' "$f" "$(l10n "$f")"
-             done)
-          ][button .item type="submit" name="action" value="addfield" $(l10n edit_addfield)]
+           [div .item .delete label="$(l10n edit_delete)"
+              [input type="checkbox" #delete]
+              [label for="delete" $(l10n edit_delete)]
+             [button type="submit" name="action" value="delete" $(l10n edit_delete)]
+            ]
+            [div .item .newfield
+              [select name="newfield"
+               [option value="" disabled="disabled" selected="selected" $(l10n edit_addfieldtext)]
+               $(for f in NICKNAME EMAIL TEL IMPP ADR URL NOTE; do
+                 printf '[option value="%s" %s] ' "$f" "$(l10n "$f")"
+               done)
+             ][button type="submit" name="action" value="addfield" $(l10n edit_addfield)]
+            ]
            [button .item type="submit" name="action" value="update"   $(l10n edit_update)]
-           [input type="checkbox" #delete] [label .item for="delete" $(l10n edit_delete)]
-             [button .item type="submit" name="action" value="delete"]
            [button .item type="submit" name="action" value="cancel"   $(l10n edit_cancel)]
          ]
          [input type="hidden" name="UID" value="$(pdi_value "$card" UID |HTML)"]
index 5fbf125..544fd73 100755 (executable)
@@ -1,4 +1,4 @@
-# Copyright 2014 - 2019 Paul Hänsch
+# Copyright 2014 - 2019, 2021 Paul Hänsch
 #
 # This file is part of Confetti.
 # 
@@ -26,8 +26,7 @@ cat <<EOF
     [legend $(l10n filter_item):]
 
     $(for field in any name street zip TEL BDAY CATEGORIES; do
-      printf '[input id="%s%i" type="radio" name="filter_type%i" value="%s" %s]
-              [label for="%s%i" %s ]' \
+      printf '[input id="%s%i" type="radio" name="filter_type%i" value="%s" %s][label for="%s%i" %s ]' \
               "$field" "$n" "$n" "$field" "$([ "$1" = "$field" ] && printf checked )" \
               "$field" "$n" "$(l10n filter_$field)"
     done)
@@ -96,12 +95,12 @@ card_item(){
     cnt="$(pdi_count "$card" "$item")"
 
     case $item in
-      FN) printf '[h2 .item .FN &shy;%s]' "$(pdi_value "$card" FN |unescape |HTML)"
+      FN) printf '[h2 .item .FN %s]' "$(pdi_value "$card" FN |unescape |HTML)"
         ;;
-      GENDER) printf '[span .item .GENDER &shy;%s]' "$(pdi_value "$card" GENDER |l10n)"
+      GENDER) printf '[span .item .GENDER %s]' "$(pdi_value "$card" GENDER |l10n)"
         ;;
       NICKNAME) seq 1 $cnt |while read c; do
-          printf '[span .item .NICKNAME &shy;aka. "%s"]' \
+          printf '[span .item .NICKNAME aka. "%s"]' \
                  "$(pdi_value "$card" NICKNAME $c |unescape |HTML)"
         done
         ;;
@@ -129,7 +128,7 @@ card_item(){
       EMAIL) 
         [ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n EMAIL)"
         seq 1 $cnt |while read c; do
-          printf '[a .item .EMAIL href="mailto:%s" &shy;%s]' \
+          printf '[a .item .EMAIL href="mailto:%s" %s]' \
                  "$(pdi_value "$card" EMAIL $c |unescape |HTML)" \
                  "$(pdi_value "$card" EMAIL $c |unescape |HTML)"
         done
@@ -139,16 +138,16 @@ card_item(){
         seq 1 $cnt |while read c; do
           teltype="$(pdi_attrib "$card" TEL $c TYPE)"
           [ "$teltype" ] \
-          && printf '[span .item .TEL [span .type &shy;%s:] %s]' \
+          && printf '[span .item .TEL [span .type %s:] %s]' \
                     "$(l10n "TYPE=$teltype" |HTML)" \
                     "$(pdi_value "$card" TEL $c |unescape |HTML)" \
-          || printf '[span .item .TEL &shy;%s]' \
+          || printf '[span .item .TEL %s]' \
                     "$(pdi_value "$card" TEL $c |unescape |HTML)"
         done
         ;;
       *)[ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n "$item")"
         seq 1 $cnt |while read c; do
-          printf '[span .item .%s &shy;%s]' "$item" \
+          printf '[span .item .%s %s]' "$item" \
                  "$(pdi_value "$card" "$item" $c |unescape |HTML)"
         done
         ;;
diff --git a/courses/courses.css b/courses/courses.css
deleted file mode 100644 (file)
index a8a8cc3..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-# Copyright 2014 Paul Hänsch
-#
-# This file is part of Confetti.
-# 
-# Confetti is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# Confetti is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-# 
-# You should have received a copy of the GNU Affero General Public License
-# along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
-*/
-
-.sort {
-  display: block;
-  border: solid 1px;
-  border-radius: 4px 4px 0 0 ;
-  margin: .5em 2em .25em 2em;
-  padding: .25em 2ex .25em 2ex;
-  background: #EFF;
-}
-.sort .label {
-  font-weight: bold;
-}
-
-.newcourse {
-  display: block;
-  border: solid 1px;
-  border-radius: 0 0 4px 4px;
-  margin: .25em 2em 1em 2em;
-  padding: .25em 2ex .25em 2ex;
-  background: #EFF;
-}
-
-.course {
-  display: block;
-  position: relative;
-  border: solid 1px;
-  margin: .25em 2em;
-  padding: 0 20ex 0 0;
-  overflow: auto;
-  background: #FFF;
-  min-height: 9em;
-}
-.course .control {
-  display: inline-block;
-  position: absolute;
-  top 0; right: 0;
-  text-align: right;
-  background: #EEF;
-  margin: 0;
-  height: 100%;
-  width: 20ex;
-  max-width: 33%;
-  padding: .25em 1ex;
-}
-.course .control .item {
-  display: inline-block;
-  vertical-align: top;
-  width: 100%;
-  color: #008;
-  margin: .25em 0 0 0;
-  border: 1px solid black;
-  background: #FFF;
-}
-.course .control a.item {
-  border-right: 3px double;
-  padding: .125em 1ex;
-}
-.course .control a.item:hover{
-  border-right: 1px solid;
-}
-
-.course .control .item[name=newfield] { width: 85%;}
-.course .control .item[value=addfield] { width: 15%;}
-
-.course .section {
-  display: inline-block;
-  vertical-align: top;
-  float: left;
-  width: 20ex;
-  min-width: 16.5%;
-  min-height: 6em;
-  margin: .125em 0 .5ex 0;
-  padding: 0 1ex .25em 1ex;
-}
-.course .section:nth-of-type(2n){ background: #EEE;}
-
-.course .section .item {
-  display: block;
-  max-width: 100%;
-  word-wrap: break-word;
-}
-
-.course .section h2, .course .section h3 {
-  font-size: 1em;
-  display: block;
-  font-weight: bold;
-  margin: .25em -.5ex .25em -.5ex;
-  border-style: none none solid none;
-  border-width: 1px;
-}
-.course .section h2 {
-  font-size: 1.2em;
-  margin-top: 0;
-}
-
-.course .attendance {
-  min-width: 66%;
-}
-.course .attendance a {
-  display: inline-block;
-  vertical-align: top;
-  min-width: 13.5ex;
-  width: 19%;
-  color: #008;
-  border-style: solid;
-  border-width: 1px;
-  margin: .25em .125ex .25em .125ex;
-  padding: .125em 1ex .125em 1ex;
-  background: #EFF;
-}
-
-.course .dtstart { width: 37ex; }
-.course .dtstart .DTSYEAR,
-.course .dtstart .DTSMONTH,
-.course .dtstart .DTS{
-  font-size: .875em;
-  margin: .25em .25ex 1em .25ex;
-  display: inline-block;
-  text-align: center;
-  font-weight: bold;
-}
-
-.course .dtstart .DTSYEAR{ width: 11.5ex; }
-.course .dtstart .DTSMONTH{ width: 18.5ex; }
-.course .dtstart .DTS{ width: 5.5ex; }
-
-.course .dtstart .DTSCAL,
-.course .dtstart .DTSCALHEAD {
-  display: inline-block;
-  overflow: hidden;
-  text-align: center;
-  width: 5ex;
-  margin: 0;
-}
-.course .dtstart .DTSCALHEAD {
-  font-weight: bold;
-  border-top: 1px solid;
-  border-bottom: 1px solid;
-}
-
-.course .dtstart input[name=DTSDAY] { display: none; margin: 0; height: 0; width: 0; }
-.course .dtstart input[name=DTSDAY]:checked + label.DTSCAL { font-weight: bold; border: solid 1px; }
-
-.course .dtstart .DTSTIME{
-  display: inline-block;
-  width: 10ex;
-  font-weight: bold;
-}
-
-.course .recur{ width: 37ex; }
-.course .section select,
-.course .section button,
-.course .section input {
-  border: 1px solid;
-  margin: .5em 0;
-}
-
-.course .select_attendance {
-  max-height: 17em;
-  overflow-y: scroll;
-}
-.course .select_attendance label{
-  display: block;
-  position: relative;
-  margin: 0; padding: 0;
-  padding-left: 3ex;
-}
-.course .select_attendance label input{
-  position: absolute;
-  margin: 0; padding: 0;
-  margin-left: -3ex;
-  top: 0;
-}
-
-.course .section input[type="text"] { width: 100%; }
-.course .section textarea.COMMENT { min-height: 6em; width: 100%; overflow: auto; }
-
index d4ce22a..ec0acc2 100755 (executable)
@@ -92,13 +92,13 @@ cal_item(){
       attendance);;
       COMMENT)[ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n "$item")"
         seq 1 $cnt |while read c; do
-          printf '[p .item .%s &shy;%s]' "$item" \
+          printf '[p .item .%s %s]' "$item" \
                  "$(pdi_value "$course" "$item" $c |unescape |HTML)"
         done
         ;;
       *)[ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n "$item")"
         seq 1 $cnt |while read c; do
-          printf '[span .item .%s &shy;%s]' "$item" \
+          printf '[span .item .%s %s]' "$item" \
                  "$(pdi_value "$course" "$item" $c |unescape |HTML)"
         done
         ;;
deleted file mode 100644 (file)
index 33e7cd03c18840c700871e337d23973e6ecfb826..0000000000000000000000000000000000000000
--- a/style.css
+++ /dev/null
@@ -1,126 +0,0 @@
-* {
-  font-family: sans-serif;
-  -moz-box-sizing: border-box;
-  -webkit-box-sizing: border-box;
-  box-sizing: border-box;
-  padding: 0; margin: 0;
-  font-size: initial;
-  line-height: 1.25em;
-  z-index: 0;
-}
-
-input, textarea, select, select * {
-  font-size: .875em;
-  padding: .125em .125em;
-}
-input, select {
-  height: 1.5em;
-  vertical-align: bottom;
-}
-button { padding: 0 .5em; }
-
-body {
-  background: #EEE;
-  margin: 0;
-  padding: 0;
-  padding-top: 2.5em;
-  position: absolute;
-  min-height: 100%;
-  width: 100%;
-  padding-bottom: 2em;
-}
-.NAVIGATION {
-  position: fixed;
-  top: 0;
-  display: inline-block;
-  border-style: none solid solid solid;
-  border-width: 0 1px 1px 1px;
-  border-radius: 0 0 4px 4px;
-  margin: 0 2em;
-  padding: .5em 1ex;
-  background: #FFF;
-  z-index: 1;
-}
-.NAVIGATION label,
-.NAVIGATION a {
-  color: #008;
-  border: solid 1px #BBF;
-  margin: .5em .5ex .25em .5ex;
-  padding: .2em 3ex .2em 3ex;
-  background: #EFF;
-}
-.NAVIGATION label:hover,
-.NAVIGATION a:hover {
-  border-width: 2px 1px;
-  background: #F3FFFF;
-}
-
-#CONFIGURE        label[for="navigationconfig"] { display: none; }
-#CONFIGURE:target label[for="navigationconfig"] { display: inline; }
-
-.NAVIGATION input#navigationconfig { display: none; }
-.NAVIGATION input + form.config {
-  position: static;
-  display: none;
-}
-
-.NAVIGATION .config a { display: block; }
-.NAVIGATION .config a:hover { border-width: 1px 2px; }
-.NAVIGATION input:checked + form.config { display: block; }
-.NAVIGATION .config input[type=text],
-.NAVIGATION .config button {
-  font-size: .875em;
-  line-height: 1.5em;
-  height: 1.75em;
-  padding: 0 .25em;
-  vertical-align: bottom;
-  border: 1px solid #000;
-  background-color: #FFF;
-}
-.NAVIGATION .config input[type=text] {
-  margin: .25em 0 0 .375em;
-  border-right: none;
-  width: 70%;
-}
-.NAVIGATION .config button {
-  min-width: 2.5em;
-  text-align: center;
-  max-width: 30%;
-}
-.NAVIGATION .config button[value=del] {
-  background: #FCC;
-}
-
-#message {
-  display: block;
-  position: fixed;
-  top: 0; width: 100%;
-  margin: 0; padding: 1em;
-  text-align: center;
-  font-weight: bold;
-  background-color: #FAA;
-  border: 1px solid #000;
-  border-style: none none solid none;
-}
-
-.trailbtn { display: none; }
-.trailbtn + .trailbox { display: none; }
-.trailbtn:checked + .trailbox { display: inline-block; }
-.trailbtn:checked + .trailbox + .trailbtn { display: block; }
-.trailbtn:checked + .trailbox + .trailbtn:before {
-   display: block; content: '+';
-   width: 3ex; text-align: center;
-   margin-top: .25em; padding: .25em 0;
-   background-color: #FFF;
-   border-width: 1px; border-style: solid;
-}
-.trailbtn:checked + .trailbox + .trailbtn:checked,
-.trailbtn:checked { display: none; }
-
-#footer {
-  width: 100%;
-  background-color: #FFF;
-  border-top: 1px solid #BBF;
-  margin: 0; padding: .5em 2em;
-  position: absolute; bottom: 0;
-}
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..a7e9ebe1e2c81e4a87435a717e4cad193807021d
--- /dev/null
+++ b/style.css
@@ -0,0 +1 @@
+style_new.css
\ No newline at end of file
diff --git a/style_new.css b/style_new.css
new file mode 100644 (file)
index 0000000..24b01ac
--- /dev/null
@@ -0,0 +1,244 @@
+* {
+  font-family: sans-serif;
+  font-weight: normal;
+  font-size: initial;
+  font-style: normal;
+  text-decoration: none;
+  line-height: 1.5em;
+  color: inherit; background: transparent;
+  padding: 0; margin: 0;
+  border: none;
+}
+
+body {
+  color: #000; background-color: #FFF;
+}
+
+p { margin-bottom: 1em; }
+
+a {
+  text-decoration: underline;
+  font-style: italic;
+  color: #068;
+}
+
+i, em { font-style: italic; }
+b, strong { font-weight: bolder; }
+ul, ol { margin-left: 1.125em; }
+
+h1, h2, h3 {
+  font-weight: bold;
+  margin-top: 1em;
+  margin-bottom: .5em;
+}
+
+h1:first-child, h2:first-child, h3:first-child,
+p + h1, p + h2, p + h3 {
+  margin-top: 0;
+}
+
+h4, h5, h6, form legend {
+  font-weight: bolder;
+  margin-bottom: .25em;
+}
+
+h1 { font-size: 1.5em; }
+h2 { font-size: 1.125em; }
+
+select, input, button, textarea,
+.control a {
+  display: inline-block;
+  background-color: #FFF;
+  border: 1pt solid;
+  padding: .25em .75em;
+  vertical-align: text-bottom;
+}
+.control a {
+  color: inherit;
+  font-style: normal;
+  text-decoration: none;
+}
+
+select { padding: .375em 0; }
+
+input[type=radio], input[type=checkbox] {
+  vertical-align: baseline;
+}
+
+button, input[type=button],
+.control a {
+  box-shadow: .125em .125em .25em;
+}
+
+label { margin-right: .75em; }
+input + label {
+  margin-left: .375em;
+}
+
+body > form,
+div.card,
+div.courselist {
+  position: relative;
+  width: 98%; width: calc(100% - 2em);
+  margin-left: auto; margin-right: auto;
+  margin-bottom: 1em;
+  box-shadow: .125em .125em .25em;
+  z-index: 1;
+}
+
+/* HACK: put anchor point 10em above card and highlight target element */
+    div:target { box-shadow: none; z-index: 0; }
+    div:target:before {
+      content: '';
+      display: block;
+      margin-top: -10em;
+      height: 10em;
+      visibility: hidden;
+    }
+    div:target:after {
+      content: '';
+      display: block;
+      position: absolute;
+      left: 0; right: 0;
+      top: 10em; bottom: 0;
+      box-shadow: .125em .125em .25em;
+      animation: highlight 4s;
+      z-index: -1;
+    }
+    @keyframes highlight { from { background-color: #FF0; } to { background-color: transparent; } }
+/**/
+
+div .section, form .section {
+  display: block;
+  vertical-align: top;
+  padding: 0 1em;
+  overflow: hidden;
+  word-break: break-word;
+}
+
+div .section :last-child, form .section :last-child {
+  margin-bottom: 1em;
+}
+
+div .section h2, form .section h2,
+div .section h3, form .section h3 { 
+  border-bottom: 1pt solid #EEE;
+}
+div .control, form .control {
+  background-color: #EEE;
+  padding: .25em;
+  text-align: right;
+}
+
+@media(min-width: 60em) {
+  div .section, form .section {
+    display: table-cell;
+    width: calc(100% / 10);
+  }
+  div .section :last-child { margin-bottom: 0; }
+  div .control, form .control {
+    background-color: transparent;
+  }
+  div .section:nth-of-type(2n) {
+    background-color: #EEE;
+  }
+}
+@media(min-width: 80em) {
+  div .control, form .control {
+    display: table-cell;
+    width: calc(100% / 10);
+  }
+  div .control .item, form .control .item {
+    display: block;
+    margin-bottom: .25em;
+  }
+}
+
+div .section .item, form .section .item,
+form .section.attendance > label {
+  display: block;
+  width: 100%;
+}
+
+form .section .item {
+  margin-bottom: .25em;
+}
+
+form .section button[value^=addfield] {
+  font-size: .75em;
+  margin-top: .5em; padding: 0 .375em;
+}
+
+form input.delete { display: none; }
+form input.delete + label {
+  float: right;
+  font-size: .75em;
+  line-height: 1;
+  max-width: .75em; height: .875em; overflow: hidden;
+  color: #FBB; background-color: #444;
+  margin: 0; padding: .125em .5em 0 .5em;
+  border-radius: 4pt 4pt 0 0;
+  transition: max-width .3s;
+}
+form input.delete + label:before  { content: '\274c '; margin-right: .5em; }
+form input.delete + label:hover   { max-width: 10em; }
+-form input.delete + label:hover:before { content: ''; }
+-form input.delete + label:hover:after  { content: ' \274c'; }
+form input.delete:checked + label,
+form input.delete:checked + label + * {
+  display: none;
+}
+
+form .control {
+  position: relative;
+  padding-left: 11em;
+  padding-top: 1.5em;
+}
+form .control .item {
+  display: inline-block;
+  margin-bottom: .25em;
+  vertical-align: text-bottom;
+}
+
+form .control .item.newfield {
+  box-shadow: .125em .125em .25em;
+}
+form .control .item.newfield select {
+  margin-right: -1pt;
+}
+form .control .item.newfield button {
+  box-shadow: none;
+}
+
+form .control .item.delete {
+  position: absolute;
+  bottom: .375em; left: .25em; width: auto;
+  padding-bottom: calc(2.25em + 2pt);
+}
+
+@media(min-width: 80em) {
+  form .control { padding: .25em; min-height: 16em; }
+  form .control .item { width: 100%; }
+  form .control .item.newfield select { width: calc(100% - 2.5em); }
+  form .control .item.delete { bottom: .125em; right: .25em; }
+}
+form .control .item.delete input + label + button {
+  display: none;
+  position: absolute;
+  bottom: 0; width: 100%;
+  color: #800;
+  background-color: #FEE;
+  z-index: 1;
+}
+form .control .item.delete:after {
+  content: attr(label);
+  display: block;
+  position: absolute;
+  bottom: 0; width: 100%;
+  text-align: center;
+  color: #BAA;
+  padding: .25em 0;
+  border: 1pt solid;
+  box-shadow: .125em .125em .25em;
+}
+form .control .item.delete input:checked + label + button { display: block; }
similarity index 55%
rename from cards/cards.css
rename to style_old.css
index 6349f8a..c4f89be 100644 (file)
@@ -1,3 +1,129 @@
+* {
+  font-family: sans-serif;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  padding: 0; margin: 0;
+  font-size: initial;
+  line-height: 1.25em;
+  z-index: 0;
+}
+
+input, textarea, select, select * {
+  font-size: .875em;
+  padding: .125em .125em;
+}
+input, select {
+  height: 1.5em;
+  vertical-align: bottom;
+}
+button { padding: 0 .5em; }
+
+body {
+  background: #EEE;
+  margin: 0;
+  padding: 0;
+  padding-top: 2.5em;
+  position: absolute;
+  min-height: 100%;
+  width: 100%;
+  padding-bottom: 2em;
+}
+.NAVIGATION {
+  position: fixed;
+  top: 0;
+  display: inline-block;
+  border-style: none solid solid solid;
+  border-width: 0 1px 1px 1px;
+  border-radius: 0 0 4px 4px;
+  margin: 0 2em;
+  padding: .5em 1ex;
+  background: #FFF;
+  z-index: 1;
+}
+.NAVIGATION label,
+.NAVIGATION a {
+  color: #008;
+  border: solid 1px #BBF;
+  margin: .5em .5ex .25em .5ex;
+  padding: .2em 3ex .2em 3ex;
+  background: #EFF;
+}
+.NAVIGATION label:hover,
+.NAVIGATION a:hover {
+  border-width: 2px 1px;
+  background: #F3FFFF;
+}
+
+#CONFIGURE        label[for="navigationconfig"] { display: none; }
+#CONFIGURE:target label[for="navigationconfig"] { display: inline; }
+
+.NAVIGATION input#navigationconfig { display: none; }
+.NAVIGATION input + form.config {
+  position: static;
+  display: none;
+}
+
+.NAVIGATION .config a { display: block; }
+.NAVIGATION .config a:hover { border-width: 1px 2px; }
+.NAVIGATION input:checked + form.config { display: block; }
+.NAVIGATION .config input[type=text],
+.NAVIGATION .config button {
+  font-size: .875em;
+  line-height: 1.5em;
+  height: 1.75em;
+  padding: 0 .25em;
+  vertical-align: bottom;
+  border: 1px solid #000;
+  background-color: #FFF;
+}
+.NAVIGATION .config input[type=text] {
+  margin: .25em 0 0 .375em;
+  border-right: none;
+  width: 70%;
+}
+.NAVIGATION .config button {
+  min-width: 2.5em;
+  text-align: center;
+  max-width: 30%;
+}
+.NAVIGATION .config button[value=del] {
+  background: #FCC;
+}
+
+#message {
+  display: block;
+  position: fixed;
+  top: 0; width: 100%;
+  margin: 0; padding: 1em;
+  text-align: center;
+  font-weight: bold;
+  background-color: #FAA;
+  border: 1px solid #000;
+  border-style: none none solid none;
+}
+
+.trailbtn { display: none; }
+.trailbtn + .trailbox { display: none; }
+.trailbtn:checked + .trailbox { display: inline-block; }
+.trailbtn:checked + .trailbox + .trailbtn { display: block; }
+.trailbtn:checked + .trailbox + .trailbtn:before {
+   display: block; content: '+';
+   width: 3ex; text-align: center;
+   margin-top: .25em; padding: .25em 0;
+   background-color: #FFF;
+   border-width: 1px; border-style: solid;
+}
+.trailbtn:checked + .trailbox + .trailbtn:checked,
+.trailbtn:checked { display: none; }
+
+#footer {
+  width: 100%;
+  background-color: #FFF;
+  border-top: 1px solid #BBF;
+  margin: 0; padding: .5em 2em;
+  position: absolute; bottom: 0;
+}
 /*
 # Copyright 2014 - 2017 Paul Hänsch
 #
@@ -347,3 +473,198 @@ form.card .insurance input[type=radio]:checked + label + select + input {
   padding: .25ex 0;
   margin-top: -1px;
 }
+/*
+# Copyright 2014 Paul Hänsch
+#
+# This file is part of Confetti.
+# 
+# Confetti is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Confetti is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
+*/
+
+.sort {
+  display: block;
+  border: solid 1px;
+  border-radius: 4px 4px 0 0 ;
+  margin: .5em 2em .25em 2em;
+  padding: .25em 2ex .25em 2ex;
+  background: #EFF;
+}
+.sort .label {
+  font-weight: bold;
+}
+
+.newcourse {
+  display: block;
+  border: solid 1px;
+  border-radius: 0 0 4px 4px;
+  margin: .25em 2em 1em 2em;
+  padding: .25em 2ex .25em 2ex;
+  background: #EFF;
+}
+
+.course {
+  display: block;
+  position: relative;
+  border: solid 1px;
+  margin: .25em 2em;
+  padding: 0 20ex 0 0;
+  overflow: auto;
+  background: #FFF;
+  min-height: 9em;
+}
+.course .control {
+  display: inline-block;
+  position: absolute;
+  top 0; right: 0;
+  text-align: right;
+  background: #EEF;
+  margin: 0;
+  height: 100%;
+  width: 20ex;
+  max-width: 33%;
+  padding: .25em 1ex;
+}
+.course .control .item {
+  display: inline-block;
+  vertical-align: top;
+  width: 100%;
+  color: #008;
+  margin: .25em 0 0 0;
+  border: 1px solid black;
+  background: #FFF;
+}
+.course .control a.item {
+  border-right: 3px double;
+  padding: .125em 1ex;
+}
+.course .control a.item:hover{
+  border-right: 1px solid;
+}
+
+.course .control .item[name=newfield] { width: 85%;}
+.course .control .item[value=addfield] { width: 15%;}
+
+.course .section {
+  display: inline-block;
+  vertical-align: top;
+  float: left;
+  width: 20ex;
+  min-width: 16.5%;
+  min-height: 6em;
+  margin: .125em 0 .5ex 0;
+  padding: 0 1ex .25em 1ex;
+}
+.course .section:nth-of-type(2n){ background: #EEE;}
+
+.course .section .item {
+  display: block;
+  max-width: 100%;
+  word-wrap: break-word;
+}
+
+.course .section h2, .course .section h3 {
+  font-size: 1em;
+  display: block;
+  font-weight: bold;
+  margin: .25em -.5ex .25em -.5ex;
+  border-style: none none solid none;
+  border-width: 1px;
+}
+.course .section h2 {
+  font-size: 1.2em;
+  margin-top: 0;
+}
+
+.course .attendance {
+  min-width: 66%;
+}
+.course .attendance a {
+  display: inline-block;
+  vertical-align: top;
+  min-width: 13.5ex;
+  width: 19%;
+  color: #008;
+  border-style: solid;
+  border-width: 1px;
+  margin: .25em .125ex .25em .125ex;
+  padding: .125em 1ex .125em 1ex;
+  background: #EFF;
+}
+
+.course .dtstart { width: 37ex; }
+.course .dtstart .DTSYEAR,
+.course .dtstart .DTSMONTH,
+.course .dtstart .DTS{
+  font-size: .875em;
+  margin: .25em .25ex 1em .25ex;
+  display: inline-block;
+  text-align: center;
+  font-weight: bold;
+}
+
+.course .dtstart .DTSYEAR{ width: 11.5ex; }
+.course .dtstart .DTSMONTH{ width: 18.5ex; }
+.course .dtstart .DTS{ width: 5.5ex; }
+
+.course .dtstart .DTSCAL,
+.course .dtstart .DTSCALHEAD {
+  display: inline-block;
+  overflow: hidden;
+  text-align: center;
+  width: 5ex;
+  margin: 0;
+}
+.course .dtstart .DTSCALHEAD {
+  font-weight: bold;
+  border-top: 1px solid;
+  border-bottom: 1px solid;
+}
+
+.course .dtstart input[name=DTSDAY] { display: none; margin: 0; height: 0; width: 0; }
+.course .dtstart input[name=DTSDAY]:checked + label.DTSCAL { font-weight: bold; border: solid 1px; }
+
+.course .dtstart .DTSTIME{
+  display: inline-block;
+  width: 10ex;
+  font-weight: bold;
+}
+
+.course .recur{ width: 37ex; }
+.course .section select,
+.course .section button,
+.course .section input {
+  border: 1px solid;
+  margin: .5em 0;
+}
+
+.course .select_attendance {
+  max-height: 17em;
+  overflow-y: scroll;
+}
+.course .select_attendance label{
+  display: block;
+  position: relative;
+  margin: 0; padding: 0;
+  padding-left: 3ex;
+}
+.course .select_attendance label input{
+  position: absolute;
+  margin: 0; padding: 0;
+  margin-left: -3ex;
+  top: 0;
+}
+
+.course .section input[type="text"] { width: 100%; }
+.course .section textarea.COMMENT { min-height: 6em; width: 100%; overflow: auto; }
+