/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at .
http://www.apache.org/licenses/LICENSE-2.0 . Unless required by
applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
OR CONDITIONS OF ANY KIND, either express or implied. See the License
for the specific language governing permissions and limitations under
the License.
 */

/* Body */
html {
  min-height: calc(100% - 4px);
  position: relative;
}

body {
     background: #F5F5F5;
     margin: 0 0 32px;
}
/* header and footer */

header {
     background: #EEE !important;
     border-radius: 0px !important;
}

.navbar {
     min-height: 30px;
     max-height: 48px;
}
.footer {
    text-align: center;
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    padding-top: 6px;
    height: 30px;
    background: rgba(30,30,30,0.2);
    border-top: 1px solid rgba(40,40,40,0.15);
    color: #333;
    font-family: sans-serif;
    font-size: 1.15rem;
    display: block;
}

/* Advanced search bar */
#advanced_search {
     width: calc(35% - 100px);
     max-width: 362px;
     min-width: 220px;
     position: absolute;
     margin-top: 26px;
     padding-left: 4px;
     margin-left: -1px;
     list-style: none;
     background: #FFE;
     border: 1px solid #999;
     display: none;
     z-index: 2;
}


/* Quick Search */

#q {
     background-position: center left;
     background: url(../images/search.png) center left;
     background-repeat: no-repeat;
     text-indent: 24px;
     background-color: #FFF;
     border: none;
     height: 30px;
     font-size: 10pt;
     border-radius: 0px;
}

.quickform {
  width: 35%;
  max-width: 450px;
  min-width: 220px;
}

#q:active {
     border: none;
}

#q-dropdown {
     height: 26px !important;
     width: 20px;
     background: #FFF;
     float: right;
     padding-top: 4px;
}

.unifiedsearch {
     border-top-right-radius: 4px;
     border-bottom-right-radius: 4px;
     border: 0.5px solid rgba(0,0,0,0);
     float: left;
     background: #999;
     border: 1px solid #666;
     height: 28px;
     width: calc(100% - 40px);
}

.unifiedsearch:hover {
     border: 1px solid #369d;
}

.unifiedsearch #q {
     position: relative;
     border-top: none !important;
     padding-top: -1px;
     width: calc(100% - 68px);
     max-height: 26px;
     line-height: 14px !important;
     outline: none;
}

.unifiedsearch button {
     border: none !important;
     height: 26px;
     margin-right: 0px;
     border-left-style: none;
     border-radius: 2px;
     border-top-left-radius: 0px;
     border-bottom-left-radius: 0px;
     width: 48px;
     float: right;
}

.btn {
     max-height: 28px;
     padding-top: 4px;
}



/* Calendar and date pickers */

.divider {
     border-bottom: 2px groove #DDD8;
}

.datepicker {
     position: absolute;
     width: 400px;
     height: 240px;
     border: 2px inset #666;
     background: #FFF;
     top: 32px;
     left: 20px;
     padding: 10px;
     z-index: 1100;
}

.calendarpicker {
     position: fixed;
     min-width: 280px;
     min-height: 220px;
     border: 2px inset #666;
     background: #FFF;
     top: 32px;
     left: 20px;
     padding: 10px;
     z-index: 1200;
     text-align: center;
     font-family: monospace;
}

.calendarpicker h3 {
     margin: 0px;
     font-family: sans-serif;
     width: 100%;
     background: linear-gradient(to bottom, rgba(125,126,125,1) 0%,rgba(14,14,14,1) 100%);
     color: #FFF;
}

.calendarpicker a {
     margin-left: 16px;
     margin-right: 16px;
     font-weight: bold;
     color: #FFF;
     padding-right: 8px;
     padding-left: 8px;
     background: linear-gradient(to bottom, rgba(0,183,234,1) 0%,rgba(0,158,195,1) 100%);
     border-radius: 4px;
}

.calendarpicker th {
     background: linear-gradient(to bottom, rgba(255,214,94,1) 0%,rgba(254,191,4,1) 100%);
     color: #333;
     padding: 2px;
     width: 38px;
     height: 22px;
     font-family: sans-serif;
     font-size: 0.9em;
     text-align: center;
}

.calendarpicker td {
     font-size: 1em;
     width: 16px;
     height: 16px;
     text-align: right;
     padding: 3px;
     width: 38px;
     height: 22px;
     cursor: pointer;
     font-family: sans-serif;
}

.calendarpicker td:hover {
     font-weight: bold;
     background: linear-gradient(to bottom, rgba(73,155,234,1) 0%,rgba(32,124,229,1) 100%);
}



.dropdown-submenu {
    position:relative;
}
.dropdown-submenu>.dropdown-menu {
    top:0;
    left:100%;
    margin-top:-6px;
    margin-left:-1px;
    border-radius:0 6px 6px 6px;
}
.dropdown-submenu:hover>.dropdown-menu {
    display:inline-block;
}
li .dropdown-submenu.pull-left {
    height: 24px !important;
}

a.dropdown-toggle {
  margin: 0px;
  padding: 15px 8px !important;
}

.dropdown-submenu.pull-left>.dropdown-menu {
     position: relative !important;
     left: -235px !important;
     top: -20px !important;
     width: 240px;
     border-radius:6px 0 6px 6px;
}

/* ListView header */

#listview_header {
    font-size: 1.5rem;
    line-height: 32px;
    text-align: center;
}

#listview_chevrons {
    float: right;
    width: 340px;
    font-size: 1.2rem;
    text-align: right;
    padding-right: 8px;
}

#listview_header button {
    width: 24px;
    height: 24px;
    line-height: 22px;
    text-align: center;
    background: #EEE;
    color: #555;
    border: 1px outset #AAAA;
}

#listview_header button[disabled=true] {
    color: #AAA;
}

#listview_header button[download=true] {
    background: #369;
    color: #FFF;
    margin-left: 8px;
}

#listview_chevrons button:first-of-type {
    border-right: none;
    margin-left: 4px;
}

/* sidebar */
#sidebar {
     padding-left: 20px;

}

/* Gravatar icons */
.gravatar {
    width: 34px;
    height: 34px;
    float: left;
    margin-left: 1px;
    margin-top: 0px;
    border-radius: 15%;
}

.gravatar_sm {
    width: 24px;
    height: 24px;
    float: left;
    margin-right: 4px;
    border-radius: 50%;
}

.chatty_gravatar {
    width: 42px;
    height: 42px;
    float: left;
    border-radius: 6px;
    margin-left: -7px;
    margin-top: 0px;
    background-color: #FFF;
    border: 2.5px solid #FFF;
    margin-bottom: -12px;
    position: absolute;
    z-index: 2;
}


/* Sidebar word cloud */
#sidebar_wordcloud {
    border-top: 2px groove #AAA3;
    margin-top: 10px;
    float: left;
    width: 100%;
}

/* Sidebar stats panel */

#sidebar_stats {
    margin-top: 10px;
    border-top: 2px groove #AAA3;
    width: 100%;
    position: relative;
    float: left;
    font-size: 1rem;
}

.sidebar_stats_participant {
    width: 90%;
    float: left;
    margin-bottom: 4px;
    font-size: 1rem;
}


/* Sidebar subscribe link */
#subscribe_button {
    margin-top: 16px;
    display: inline-block;
    background-color: #337ab7;
    color: white;
    font-size: 1.15rem;
    text-decoration: none;
    cursor: pointer;
    padding: 5px;
    border: 1px solid #0009;
    border-radius: 4px;
}

/* Sidebar calendar */

#sidebar_calendar {
     width: 100%;
     user-select: none;
     /*border: 1px solid #6666;*/
}

#sidebar_calendar > p {
     margin: 0px;
}
.sidebar_calendar_year {
     font-size: 1rem;
     font-weight: bold;
     margin-bottom: 8px;
     width: 100%;
     float: left;
}

.sidebar_calendar_month {
     float: left;
     font-weight: normal;
     font-size: 0.6vw;
     border-radius: 2px;
     margin: 1px;
     border-top: 3px solid #666;
     width: 7%;
     text-align: center;
}

.sidebar_calendar_month:hover {
     cursor: pointer;
     border-top: 3px solid #369;
     color: #369;

}

.sidebar_calendar_month_nothing {
     float: left;
     font-weight: normal;
     font-size: 0.6vw;
     border-radius: 2px;
     margin: 1px;
     border-top: 3px solid #DDD;
     color: #AAA;
     width: 7%;
     text-align: center;
}

.sidebar_calendar_chevron {
     text-align: center;
     width: 100%;
     font-size: 16px;
     height: 20px;
     float: left;
}

.sidebar_calendar_chevron:hover {
     color: #369;
     cursor: pointer;
}


/* list picker */
#list_picker {
    height: 27px;
    z-index: 1;
    margin-bottom: -1px;
}
#list_picker ul {
    list-style: none;
    padding-inline-start: 0px;
    margin: 0px;
}

#list_picker_ul > li {
    display: inline-block;
    border: 1px solid #E0E0E0;
    background: #F9F9F9;
    border-radius: 0px;
    margin: 0px;
    margin-right: -1px;
    height: 27px;
    line-height: 18px;
    padding: 2px;
    padding-left: 8px;
    padding-right: 8px;
    padding-top: 2px;
    max-width: 200px;
    overflow: hidden;
    white-space:nowrap;
    text-overflow: ellipsis;
    border-top-left-radius: 3px;
    border-top-right-radius: 3px;
    border-top: 3px solid #E0E0E0;
    border-bottom: 1px solid #E0E0E0;
}

#list_picker li.active {
    z-index: 1;
    height: 27px;
    background: #FFF;
    border-top: 3px solid #369;
    border-bottom: -2px solid #FFF;
    font-weight: bold;
}

#list_picker li:not(.active):not(.others):hover {
    border-top: 3px solid #693;
    border-bottom: 1px solid #FFF;
    cursor: pointer;
    height: 27px;
}

#list_picker li.search {
    z-index: 1;
    height: 27px;
    background: #FFE;
    border-top: 2px solid #942;
    border-bottom: 1px solid #FFF;
}

/* List Index */
#list_index_child {
    background: #FFF;
    border: 1.5px groove #FFF9;
    min-height: 100px;
    max-width: 800px;
}


/* Emails */

/* ListView email wrapper */
#emails {
    background: #FFF;
    border: 1px solid #E0E0E0;
    min-height: auto;
    overflow-y: hidden;
}


/* Flat email item */
.listview_email_flat {
    background: #FFF;
    border-left: 3px solid #AAA;
    height: 40px;
    line-height: 40px;
    padding-top: 2px;
    font-size: 1.25rem;
    float: left;
    width: calc(100% - 4px);
    position: relative;
    margin: 2px;
    margin-bottom: -2px;
}

.listview_email_as {
  float: left;
  width: calc(80% - 200px);
  padding-left: 1%;
  padding-right: 1%;
}

.listview_email_labels {
  float: right;
  width: 240px;
  min-width: 240px;
  text-align: right;
  position: absolute;
  right: 8px;
}

.email_unread {
  font-weight: bold;
}


/* Compacted email item */
.listview_email_compact {
    background: #FFF;
    border-left: 3px solid #AAA;
    border-top: none;
    height: 20px;
    line-height: 20px;
    font-size: 1.25rem;
    float: left;
    width: calc(100% - 4px);
    margin: 2px;
}

.listview_email_compact .listview_email_author {
    height: 20px;
    line-height: 20px;
}

.listview_email_compact .gravatar {
    height: 20px;
    width: 20px;
}

/* Hide labels, expand subject when mobile */
@media only screen and (max-width: 600px) {
  #portrait_notice {
    display: block !important;
    background: #FFD;
    font-size: 83%;
    font-weight: bold;
    width: 100%;
    text-align: center;
    padding: 1px;
  }
  .listview_email_as {
    width: calc(80% - 50px);
    min-width: 200px;
  }
  .quickform {
      width: 66%;
  }
  
  .listview_email_labels {
    display: none;
  }
  .listview_email_flat {
    min-width: 300px;
    animation: fadein 0.5s;
  }

  .listview_email_compact {
    min-width: 300px;
    height: 32px;
    animation: fadein 0.5s;
  }

  .listview_email_compact .listview_email_subject {
      display: block;
      line-height: 38px;
      margin-left: 24px;
  }
  
  @keyframes fadein {
      from {
          opacity:0;
      }
      to {
          opacity:1;
      }
  }
  #list_picker li {
    display: none;
    line-height: 1rem;
  }
  #list_picker ul>li.list_all_narrow {
    display: inline-block !important;
    max-width: 280px;
    width: 280px;
  }
  #list_picker ul>li.list_all_narrow>select {
    max-width: 240px;
    width: 240px;
  }
  .navbar-brand {
    display: none;
  }
  .chatty_body {
    margin: 4px;
    margin-left: 18px;
    padding: 2px;
    word-wrap: normal !important;
    white-space: pre-wrap !important;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: calc(100% - 10px);
  }
  .chatty_body a {
    word-break: break-all !important;
  }
  .quickform>a {
    display: none;
  }
  #project_select {
    max-width: 150px;
    font-size: 80%;
  }
  
  .listview_email_body {
    white-space: normal !important;
  }
  
  .listview_email_author {
    width: 75% !important;
    margin-top: -6px;
    margin-left: 3px;
  }
  
  .listview_email_as {
    width: 100%;
  }
  .listview_email_flat {
    height: auto;
    margin-bottom: 3px;
  }
  
  .listview_email_subject {
    width: calc(100% - 48px);
    margin-top: -16px;
    margin-left: 39px;
  }
  #project_select_form {
    display: none;
  }

}

#display_options_dropdown, #login_dropdown {
    z-index: 1001;
    background-color: white;
}

#display_options_dropdown > div {
    width: 100%;
    overflow-y: auto;
}

#display_options_dropdown > div > div {
    width: 45%;
    float: left;
    margin: 2%;
}

#display_options_dropdown > div > div:first-child {
    border-right: 2px solid #3333;
}

#preferences_ul {
    width: 160px;
    position: absolute;
    right: 16px;
    top: 12px;
    z-index: 9;
    display: inline;
    list-style: none;
    margin: 0;
}

#preferences_ul li{
    display: inline;
}

#preferences_ul > li > a > img {
    margin-top: -5px;
}

#preferences_ul li a {
    display: inline !important;
}

#preferences_ul .dropdown-menu {
    position: absolute;
    margin-top: 10px;
    left: auto;
    right: 0;
}

#display_options_dropdown {
    width: 380px;
    z-index: 1001;
}

.navbar-default {
    height: 48px;
}

@media only screen and (max-width: 480px) {
    #preferences_ul #display_options_dropdown {
        width: 300px;
        position: absolute;
        left: -240px;
        right: auto;
        font-weight: normal;
        font-size: 1.15rem;
    }
}

@media only screen and (max-width: 860px) {
  .navbar-brand {
    display: none;
  }
  .dropdown-toggle {
    height: 40px;
  }

}

@media only screen and (max-width: 1200px) {
  .chatty_body {
    word-wrap: normal !important;
    white-space: pre-wrap;
  }
  .chatty_body a {
    word-break: break-all !important;
  }
  #emails_parent {
    min-width: 72.5%;
  }
}


/* Show wide list index on desktop, narrow on mobile */
#list_index_child_wide {
    display: block;
}
#list_index_child {
    display: none;
}

@media only screen and (max-width: 800px) {
    #list_index_child_wide {
        display: none;
    }
    #list_index_child {
        display: block;
    }
}

#list_index_wide_lists {
    list-style: none;
    background-color: white;
    width: 716px;
    padding-inline-start: 0px;
    padding-top: 8px;
    padding-left: 8px;
    padding-bottom: 8px;
}

/* Hide word cloud on short displays */
@media only screen and (max-height: 700px) {
  #sidebar_wordcloud {
    display: none;
  }


}

.listview_email_labels .label {
  margin-right: 8px;
}

.listview_email_author {
  font-weight: bold;
  width: 15%;
  min-width: 80px;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-left: 1%;
  line-height: 36px;
  float: left;
  white-space: nowrap;
}

.listview_email_subject {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #1d4f75 !important;
  line-height: 20px;
}


.listview_email_body {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  color: #888;
  line-height: 17px;
}

a > .listview_email_flat {
    border-top: 1px solid #E0E0E0;
}

a > .listview_email_compact {
    border-top: 1px solid #E0E0E0;
}

a:first-child > .listview_email_flat {
    border-top: none;
}

a:first-child > .listview_email_compact {
    border-top: none;
}


.listview_email_flat:hover {
    border-left: 3px solid #369;
    background: #FFE;
}

.listview_email_compact:hover {
    border-left: 3px solid #369;
    background: #FFE;
}

.listview_kbd {
  padding: 2px 2px;
  margin: 3px;
  color: #333;
  font-size: 80%;
  background-color: #83e46f;
}


.listview_others {
    display: block;
    font-size: 12px;
    font-family: sans-serif;
    font-weight: 700;
    color: #444;
    line-height: 1rem;
    padding: 4px;
    width: 160px;
    max-width: 160px; 
    box-sizing: border-box;
    margin: 0px;
    border: 1px solid #aaa;
    box-shadow: 0 1px 0 1px rgba(0,0,0,.04);
    border-radius: .5em;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-color: #fff;
    background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),
      linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%);
    background-repeat: no-repeat, repeat;
    background-position: right .7em top 50%, 0 0;
    background-size: .65em auto, 100%;
}
.listview_others::-ms-expand {
    display: none;
}
.listview_others:hover {
    border-color: #888;
}
.listview_others:focus {
    border-color: #aaa;
    box-shadow: 0 0 1px 3px rgba(59, 153, 252, .7);
    box-shadow: 0 0 0 3px -moz-mac-focusring;
    color: #222; 
    outline: none;
}
.listview_others option {
    font-weight:normal;
}

#list_picker ul>li.list_all_narrow {
  display: none;
}


/* Expanded email placeholder */
.email_placeholder {
  background: #FFEC;
    font-family: Hack;
    font-size: 1.25rem;
    float: left;
    width: 100%;
    display: none;
}

.email_wrapper {

    border-top: 1px solid #CCC9;
    border-left: 3px solid #AAA;
    font-family: Hack;
    margin-left: 8px;
    font-size: 1.25rem;
    white-space: pre-wrap;
    float: left;
    width: calc(100% - 10px);
    position: relative;
}


.email_placeholder_chatty .email_wrapper > .email_wrapper {
  padding-left: 16px;
  border: none;
}


.email_wrapper_nonest {
    font-family: Hack;
    margin-left: 0px;
    font-size: 1.25rem;
    white-space: pre-line;
    float: left;
    width: calc(100% - 10px);
    position: relative;
}


.email_wrapper > pre > a {
  text-decoration: underline !important;
  color: #1d4f75;
}

a .listview_email_flat {
  color: #234 !important;
  text-decoration: none;
}

a .listview_email_threaded {
  color: #234 !important;
  text-decoration: none;
}




.email_quote {
  font-size: 1.25rem;
  background: #3333;
  border-left-color: #7ab733;
  opacity: 0.8;
}


.email_wrapper_nonest pre {
  white-space: pre-wrap;
  border: none;
  color: #223;
  padding: 5px;
  font-size: 1.25rem;
  font-family: Hack;
  padding-right: 40px;
  position: relative;
  overflow:visible;
}

.email_wrapper pre {
  white-space: pre-wrap;
  border: none;
  color: #223;
  padding: 5px;
  font-size: 1.25rem;
  font-family: Hack;
  padding-right: 40px;
  overflow:visible;
  position: relative;
}



.email_kv_edit {
  width: 100%;
  float: left;
  height: 32px;
  position: relative;
  min-width: 370px;
  background: #EEE;
  border-bottom: 0.75px solid #CCC9;
  z-index: 1;
}


.email_kv {
  width: 100%;
  float: left;
  position: relative;
  min-width: 370px;
  background: #EEE;
  border-bottom: 0.75px solid #CCC9;
  z-index: 1;
}

.email_key {
  min-width: 90px;
  max-width: 150px;
  font-weight: bold;
  float: left;
  padding-left: 5px;
  padding-right: 5px;
}

.email_value {
  width: 70%;
  min-width: 240px;
  float: left;
}

.email_value_emphasis {
  width: 70%;
  min-width: 240px;
  float: left;
  font-weight: bold;
  color: darkred;
}

/* Chatty email theme */

/* Expanded email placeholder */
.email_placeholder_chatty {
  background: #337AB7 !important;
  font-family: Hack;
  font-size: 1.25rem;
  float: left;
  width: 100%;
  display: none;
  border: none;
  padding-bottom: 10px;
  z-index: -5;
  padding-left: 4px;
  padding-top: 4px;
}

a.checked {
  font-weight: bold;
}

.chatty_author {
  line-height: 36px;
  font-family: sans-serif;
  float: left;
  width: 100%;
  color: #FFF;
  margin-bottom: -16px;
}

.chatty_author_name {
  padding-left: 50px;
}

.chatty_title {
  color: #FFF;
  font-family: Selawk, Hack;
  margin: 15px;
  margin-left: 30px;
  
}

pre.diff {
  background: #FFDD;
  border: 1px solid #3336;
  white-space: pre-wrap;
  
}
.chatty_title_inline {
  color: #333D;
  font-family: Selawk, Hack;
  margin: 5px;
}

a.chatty_title {
  color: #FFFB !important;
  margin-bottom: 10px;
  display: block;
}

#chatty_link {
  font-size: 2.8rem;
  margin-top: 12px;
  width: 32px;
  height: 26px;
  margin-right: 10px;
  background-image: url(../images/sr_off.png);
  background-size: contain;
  cursor: pointer;
}

#chatty_link.enabled {
  background-image: url(../images/sr_on.png);
}

.chatty_body {
  border-radius: 6px;
  margin: 10px;
  background: #FFF;
  border: none;
  padding: 10px !important;
  padding-top: 16px;
  padding-left: 16px;
  margin-left: 20px;
  min-width: 300px;
  display: inline-block;
  white-space: pre-line !important;
  border: none;
  color: #223;
  padding: 5px;
  font-size: 1.33rem !important;
  font-family: Selawk,Hack !important;
  margin-bottom: 25px;
  position: relative;
  overflow: visible;
}


/* Calendar widgets */
#calendarpicker_popup a {
    width: 24px;
    height: 22px;
    line-height: 22px;
    background: #337ab7;
    border-radius: 1px;
    color: #FFF;
    border: 1px outset #AAAA !important;
    float: none;
    text-indent: -4px;
}

a.enabled {
  color: #316eb3 !important;
}

a.disabled {
  color: #555 !important;
}


/* Selawik font */
@font-face {
  font-family: 'Selawk';
  src: url('../fonts/selawk.ttf');
}

.toolbar_chatty {
  position: absolute;
  height: 48px;
  width: 200px;
  bottom: -32px;
  right: 10px;
  text-align: right;
  visibility: visible;

}


.toolbar {
  position: absolute;
  right: 2px;
  height: 130px;
  width: 32px;
  top: 10px;
  overflow: visible;
  z-index: 3;
  text-align: right;
}

.toolbar > .toolbar_btn {
  border: none;
  border-radius: 50%;
  border-bottom-right-radius: 0%;
  border-top-right-radius: 0%;
  height: 28px;
  width: 32px;
  padding: 0px;
  margin-bottom: 2px;
  margin-right: 10px;
  line-height: 28px;
  text-align: center;
  position: relative;
  clear: both;
}

.chatty_body:hover > div > .toolbar_btn {
  visibility: visible !important;
  transition: all 0s ease-in-out;
  transform: translate(0px, 0px) scale(1,1);
  transform-style: flat;

}

.chatty_body:active > div > .toolbar_btn {
  visibility: visible !important;
  transition: all 0s ease-in-out;
  transform: translate(0px, 0px) scale(1,1);
  transform-style: flat;

}

.toolbar_chatty>.toolbar_btn {
  border: 2px solid #FFF;
  visibility: hidden;
  transform: translate(0px, -16px) scale(1,0);
}

.toolbar_chatty > a.toolbar_btn:hover {
  line-height: 30px;
}

.toolbar_chatty > .toolbar_btn:hover {
  color: #FFF;
  min-height: 34px;
  margin-bottom: -32px;
  border-top-left-radius: 20%;
  border-top-right-radius: 20%;
}

.toolbar > .toolbar_btn:hover {
  color: #FFF;
  margin-left: -4px;
  min-width: 38px;

}

.toolbar_chatty > .toolbar_btn {

  border: 2px solid #FFF;
  border-radius: 25%;
  border-top-left-radius: 0%;
  border-top-right-radius: 0%;
  height: 28px;
  width: 32px;
  padding: 0px;
  margin-bottom: -33px;
  margin-right: 10px;
  line-height: 24px;
  text-align: center;
}

.toolbar_button_reply {
  background: #1a935b;
  color: #FFF;
  text-indent: 1px;
}


.toolbar_button_link {
  background: #563D7C;
  color: #FFF !important;
}

.toolbar_button_source {
  background: #c93d24;
  color: #FFF !important;
  text-indent: 1px;
}


.toolbar_button_admin {
  background: #e5c30b;
  color: #FFF !important;
  text-indent: 1px;
}

pre {
  word-break:keep-all;
  word-wrap:normal;
}

.ui-loader {
  display: none !important;
}

.chatty_body a {
    word-break: break-all !important;
  }

.auditlog_entry:nth-child(odd) {
    background: #EEE;
}

.auditlog_entry:nth-child(even) {
    background: #F8F8F8;
}

.auditlog_entry td {
    padding: 2px;
}

.auditlog_entries th {
    padding: 2px;
}

.calendar_count {
    display: block;
    line-height: 5px;
    font-size: 0.65em;
}

.chatty_body a:hover {
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg id='squiggle-link' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:ev='http://www.w3.org/2001/xml-events' viewBox='0 0 10 18'%3E%3Cstyle type='text/css'%3E.squiggle{animation:shift .5s linear infinite;}@keyframes shift {from {transform:translateX(-10px);}to {transform:translateX(0);}}%3C/style%3E%3Cpath fill='none' stroke='%23223344' stroke-width='0.65' class='squiggle' d='M0,17.5 c 2.5,0,2.5,-1.5,5,-1.5 s 2.5,1.5,5,1.5 c 2.5,0,2.5,-1.5,5,-1.5 s 2.5,1.5,5,1.5' /%3E%3C/svg%3E");
    background-position: 0 100%;
    background-size: auto 24px;
    background-repeat: repeat;
    text-decoration: none;
    border-bottom: none;
    padding-bottom: 1px;
}


.infobox {
    color: #224E;
    background-color: #E3F7FC;
    padding: 4px;
    border-radius: 4px;
    border: 1px solid #2249;
    margin: 8px;
    max-width: 620px;
    min-height: 54px;
    font-family: Selawk, Hack;
    font-size: 1.4rem;
}

.infobox .glyphicon {
    font-size: 3rem;
    display: block;
    float: left;
    padding: 6px;
    padding-top: 14px;
    font-weight: lighter;
}
