
body {
margin: 0;
margin-bottom: 25px;
padding: 0;
background-color: #ddd;
/*background-image: url("/images/perldancer-bg.jpg");*/
background-repeat: no-repeat;
background-position: top left;
background-opacity: 0.1;
background-image: conic-gradient(#bde, teal, green, teal, #bde);


font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
font-size: 13px;
color: #333;
}

h1 {
font-size: 28px;
color: #000;
}

a  {color: #03c}
a:hover {
background-color: #03c;
color: white;
text-decoration: none;
}

#page {
background-color: #ddd;
width: 750px;
margin: auto;
margin-left: auto;
padding-left: 0px;
margin-right: auto;
}

#content {
background-color: white;
border: 3px solid #aaa;
border-top: none;
padding: 25px;
width: 750px;
}

#sidebar {
float: right;
width: 175px;
}

#header, #about, #getting-started {
padding-left: 75px;
padding-right: 30px;
}


#header {
background-image: url("../images/calendar.png");
background-repeat: no-repeat;
background-position: top left;
height: 64px;
}
/*
#header h1, #header h2 {margin: 0}
#header h2 {
color: #888;
font-weight: normal;
font-size: 16px;
}
*/
#header-info {
    float: right;
    text-align: right;
}



#about h3 {
margin: 0;
margin-bottom: 10px;
font-size: 14px;
}

#about-content {
background-color: #ffd;
border: 1px solid #fc0;
margin-left: -11px;
}
#about-content table {
margin-top: 10px;
margin-bottom: 10px;
font-size: 11px;
border-collapse: collapse;
}
#about-content td {
padding: 10px;
padding-top: 3px;
padding-bottom: 3px;
}
#about-content td.name  {color: #555}
#about-content td.value {color: #000}

#about-content.failure {
background-color: #fcc;
border: 1px solid #f00;
}
#about-content.failure p {
margin: 0;
padding: 10px;
}

#getting-started {
border-top: 1px solid #ccc;
margin-top: 25px;
padding-top: 15px;
}
#getting-started h1 {
margin: 0;
font-size: 20px;
}
#getting-started h2 {
margin: 0;
font-size: 14px;
font-weight: normal;
color: #333;
margin-bottom: 25px;
}
#getting-started ol {
margin-left: 0;
padding-left: 0;
}
#getting-started li {
font-size: 18px;
color: #888;
margin-bottom: 25px;
}
#getting-started li h2 {
margin: 0;
font-weight: normal;
font-size: 18px;
color: #333;
}
#getting-started li p {
color: #555;
font-size: 13px;
}

#search {
margin: 0;
padding-top: 10px;
padding-bottom: 10px;
font-size: 11px;
}
#search input {
font-size: 11px;
margin: 2px;
}
#search-text {width: 170px}

#sidebar ul {
margin-left: 0;
padding-left: 0;
}
#sidebar ul h3 {
margin-top: 25px;
font-size: 16px;
padding-bottom: 10px;
border-bottom: 1px solid #ccc;
}
#sidebar li {
list-style-type: none;
}
#sidebar ul.links li {
margin-bottom: 5px;
}

h1, h2, h3, h4, h5 {
font-family: sans-serif;
margin: 1.2em 0 0.6em 0;
}

p {
line-height: 1.5em;
margin: 1.6em 0;
}

code, .filepath, .app-info {
    font-family: 'Andale Mono', Monaco, 'Liberation Mono', 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', monospace;
}

#footer {
clear: both;
padding-top: 2em;
text-align: center;
padding-right: 160px;
font-family: sans-serif;
font-size: 10px;
}

.model-display {
    border: 1px solid #acd;
    display: flex;
    flex-direction: column;
    box-shadow: 3px 3px 5px 2px #456;
    margin: 8px;
}
.display-row {
    border-bottom: 1px solid #9bc;
    background-color: #bde;
    padding: 3px;
    display: flex;
    flex-direction: row;
    align-items: stretch;
}
.display-row-support { /* e.g. image-preview */
    border-bottom: 1px solid #9bc;
    background-color: #bde;
    padding: 3px;
}
.display-form .button-container {
    background-color: #bde;
}

.display-row:hover {
    background: salmon;
}

.row-label {
    display: flex;
    flex-direction: row;
    flex: 0 0 12em;
    align-items: center;
    gap: 5px;
}

.row-contents {
    display: flex;
    flex: 1 0 40em;
    cursor: pointer;
    overflow: hidden;
}

.multi-select-flex {
    display: flex;
    flex-direction: column;
    flex: 1;
}

.multi-select-wrapper {
    display: flex;
    flex-direction: row;
    flex: 1;
}

.select-shortener {
    display: flex;
    flex: 1 0 90%;
}

/* Hide the red 'x' button if there is only one dropdown. */
.multi-select-wrapper:only-of-type .remove-multi-select-button {
    display: none;
}

.remove-multi-select-button {
    background-color: #e55;
    font-size: 75%;
    border-radius: 6px;
    cursor: pointer;
    font-weight: bold;
    box-shadow: 0 0 5px black;
    margin-left: 3px;
    height: 1.5em;
    display: flex;
    flex: 0 0 2em;
    align-self: center;
    justify-content: center;
}

.add-multi-select-button {
    background-color: #484;
    font-size: 75%;
    height: 1.5em;
    color: lightgreen;
    border-radius: 6px;
    cursor: pointer;
    width: 8em;
    font-weight: bold;
    box-shadow: 0 0 5px black;
    margin: 5px 3px 0px;
    display: flex;
    order: 99;
    justify-content: center;
    align-self: end;
}

.list-and-button option {
    overflow: hidden;
    text-overflow: ellipsis;
}
.clickable-list {
    width: 30em; /* prevent superlong event.name from breaking UI */
}

.list-and-button {
    display: flex;
    margin: 8px 8px 15px 8px;
    padding: 3px;
    border: 1px solid #acd;
    background-color: #bde;
    box-shadow: 3px 3px 5px 2px #456;
}
.flex-vertical {
    display: flex;
    flex-direction: column;
}

.button-container {
    display: flex;
    justify-content: center;
    padding: 5px;
    gap: 10px;
}
.create-new-container {
    flex-direction: column;
}
.button {
    box-shadow: 1px 1px 2px 1px #8fdaff;
    background-color: #d7f2ff;
    border: 1px solid #8fdaff;
    border-radius: 10px;
    cursor: pointer;
}
/* these two are to keep super long venue names from blowing out the series
 * default popup
 * https://stackoverflow.com/questions/10672586/how-to-make-select-elements-shrink-to-max-width-percent-style-within-fieldset
/
.select-shortener {
    display:inline-block;
    max-width: 90%;
}
*/
.select-shortener select {
    width: 100%;
}

/* so they'll be invisible if the javascript breaks */
.the-modal-zone {
    display: none;
}

/* :invalid handles the 'required' attribute, but only colors them in if
 * they're required and empty, and using both :required and :invalid keeps the
 * submit button from being colored in */
:required:invalid {
    background-color: yellow;
}

/* this disables the submit button until all the "required" fields are filled in
 *  https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid#showing_sections_in_stages
 * */
form:invalid button.disableable {
    opacity: 0.3;
    pointer-events: none;
}

/* the required-marker is the yellow * after the required fields */
.required-marker:after {
    content: "*";
    font-weight: bold;
    color: yellow;
    text-shadow: 0 0 2px red;
    display: flex;
}


.help-button {
    border: 1px solid grey;
    border-radius: 1.2em;
    width: 1.2em;
    height: 1.2em;
    cursor: help;
    background-color: #484;
    color: yellow;
    display: flex;
    justify-content: center;
    order: 99;
    margin-left: 1em;
    margin-right: 1em;
}

.help-content {display: none;}

.image-preview {
    display: none;
    padding-left: 40px;
}
.image-preview img {
    border: 2px solid #5cbeef;
}
.fullsize-image {
    display: none;
    align: left;
}

/* 
 * accordion nav menu!
 * https://www.freecodecamp.org/news/build-an-accordion-menu-using-html-css-and-javascript/#:~:text=In%20UI%20design%2C%20an%20accordion,label%20will%20expand%20its%20content.
 */
.accordion .accordion-container {
    position: relative;
    margin: 10px 10px;
}

.accordion .accordion-label {
    position: relative;
    padding: 10px 0;
    font-size: 30px;
    color: black;
    cursor: pointer;
}

.accordion .accordion-label::before {
    content: '+';
    color: black;
    position: absolute;
    top: 50%;
    right: -5px;
    font-size: 30px;
    transform: translateY(-50%);
}

.accordion .content {
    position: relative;
    background: white;
    overflow: hidden;
    height: 0;
    /*transition: max-height 0s ease-out ;
    /max-height: 0;*/
}

.accordion hr {
    width: 100;
    margin-left: 0;
    border: 1px solid grey;
}

/* Unhides the content part when active. Sets the height */

.accordion .accordion-container.active .content {
    /*transition: max-height 0.5s ease-in ;
    /max-height: 35em;*/
    height: 100%
}

/* Changes from plus sign to negative sign once active */

.accordion .accordion-container.active .accordion-label::before {
  content: '-';
  font-size: 30px;
}


/* toggle switch css from https://dev.to/codebubb/create-a-simple-on-off-slide-toggle-with-css-db8 */

.custom-bool {
    display: inline-flex;
    width: 15em;
    height: 1.3em;
    margin-bottom: 3px;
}
.custom-bool input {
    display: none;
}
.custom-bool input + label {
  height: 100%;
  width: 100%;
}
.custom-bool input + label > .status-switch {
  cursor: pointer;
  width: 100%;
  height: 100%;
  position: relative;
  background-color: grey;
  color: white;
  transition: all 0.5s ease;
  padding: 3px 3px 1px;
  border-radius: 3px;
}
.custom-bool input + label > .status-switch:before, .custom-bool input + label > .status-switch:after {
  border-radius: 2px;
  height: calc(100% - 6px);
  width: calc(50% - 3px);
  display: flex;
  align-items: center;
  position: absolute;
  justify-content: center;
  transition: all 0.3s ease;
}
.custom-bool input + label > .status-switch:before {
  background-color: white;
  color: black;
  box-shadow: 0 0 4px 4px rgba(0, 0, 0, 0.2);
  left: 3px;
  z-index: 10;
  content: attr(data-no);
}
.custom-bool input[value="1"] + label > .status-switch {
  background-color: var(--data-yes-color);
}
.custom-bool input[value="1"] + label > .status-switch:before {
  color: var(--data-yes-color);
  left: 50%;
  content: attr(data-yes);
}

/* Toast stuff
https://codepen.io/kieran/pen/ajLvjm
*/

#toasts {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: 0;
  position: fixed;
  top: 3em;;
  width: 100%;
}

#toasts .toast {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: #d6d8d9;
  border-radius: 3px;
  box-shadow: 2px 2px 3px rgba(0, 0, 0, .1);
  color: rgba(0,0,0, .6);
  cursor: default;
  margin-bottom: 20px;
  opacity: 0;
  position: relative;
  padding: 20px;
  transform: translateY(15%);
  transition: opacity .5s ease-in-out, transform .5s ease-in-out;
  width: 15em;
  will-change: opacity, transform;
  z-index: 1100;
} 

#toasts .toast.success {
  background: #484;
  color: lightgreen;
}

#toasts .toast.warning {
  background: #ffa533;
}

#toasts .toast.info {
  background: #2cbcff;
}

#toasts .toast.error {
  background: #f44336;
}

#toasts .toast.show {
  opacity: 1;
  transform: translateY(0);
  transition: opacity .5s ease-in-out, transform .5s ease-in-out;
}

#toasts .toast.hide {
  height: 0;
  margin: 0;
  opacity: 0;
  overflow: hidden;
  padding: 0 30px;
  transition: all .5s ease-in-out;
}

#toasts .toast .close {
  cursor: pointer;
  font-size: 24px;
  height: 16px;
  margin-top: -10px;
  position: absolute;
  right: 14px;
  top: 50%;
  width: 16px;
}

@keyframes fadeout {
    0% {opacity: 1}
    100% {opacity: 0}
}
@keyframes fadein {
    0% {opacity: 0}
    100% {opacity: 1}
}