/** Variable and font definitions */

:root {
  /* color definitions */
  --ring-light-blue: rgba(59, 193, 211, 0.3);
  --ring-dark-blue: #003b4e;

  /* main properties */
  --bg-color: #f2f2f2; /* same as macOS client */

  /* navbar properties */
  --navbar-height: 40px;
  --navbar-padding-top: 8px;
  --navbar-padding-bottom: var(--navbar-padding-top);

  /* message bar properties */
  --textarea-max-height: 150px;

  /* button properties */
  --action-icon-color: var(--ring-dark-blue);
  --deactivated-icon-color: #BEBEBE;
  --action-icon-hover-color: var(--ring-light-blue);
  --action-critical-icon-hover-color: rgba(211, 77, 59, 0.3); /* complementary color of ring light blue */
  --action-critical-icon-press-color: rgba(211, 77, 59, 0.5);
  --action-critical-icon-color: #4E1300;
  --non-action-icon-color: #212121;
  --action-icon-press-color: rgba(59, 193, 211, 0.5);

  /* hairline properties */
  --hairline-color: #d9d9d9;
  --hairline-thickness: 0.2px;
}

@font-face {
    font-family: emoji;

    /* Fonts for text outside emoji blocks */
    src: local('Open sans'),
         local('Helvetica'),
         local('Segoe UI'),
         local('sans-serif');
}

@font-face {
    font-family: emoji;

    src: local('Noto Color Emoji'),
         local('Android Emoji'),
         local('Twitter Color Emoji');

    /* Emoji unicode blocks */
    unicode-range: U+1F300-1F5FF, U+1F600-1F64F, U+1F680-1F6FF, U+2600-26FF;
}

/** Body */

body {
  --navbar-size: calc(var(--navbar-height) + var(--navbar-padding-top) + var(--navbar-padding-bottom));
  --messagebar-size: 57px; /* FIXME clean this up */

  margin: 0;
  overflow: hidden;
  background-color: var(--bg-color);
  padding-top: var(--navbar-size);
  padding-bottom: var(--messagebar-size);

  /* disable selection highlight because it looks very bad */
  -webkit-user-select: none;
}

/** Navbar */

.navbar-wrapper {
  /* on top, over everything and full width */
  position: fixed;
  left:0; right:0;
  z-index: 500;
  top: 0;
}

#navbar {
  background-color: var(--bg-color);
  padding-right: 8px;
  padding-left: 8px;
  padding-top: var(--navbar-padding-top);
  padding-bottom: var(--navbar-padding-bottom);
  height: var(--navbar-height);
  overflow: hidden;
  align-items: center;

  /* takes whole width */
  left:0; right:0;

  /* hairline */
  border-bottom: var(--hairline-thickness) solid var(--hairline-color);
}

#navbar.hiddenState {
  visibility: hidden;
}

.svgicon {
  display: block;
  margin: auto;
  height: 100%;
}

.nav-button {
  width: 40px;
  height: 40px;
  align-self: center;
  display: flex;
  cursor: pointer;
  border-radius: 50%;
}

.nav-button.deactivated {
  width: 40px;
  height: 40px;
  align-self: center;
  display: flex;
  border-radius: 50%;
  cursor: auto;
}

.nav-right {
  float: right;
}

.nav-left {
  float: left;
}

#nav-contactid {
  margin: 0px;
  margin-left: 5px;
  padding: 0px;
  height: 100%;
  font-family: emoji;

  /* enable selection (it is globally disabled in the body) */
  -webkit-user-select: auto;
}

#nav-contactid.oneEntry {
  display: flex;
  justify-content: center;
  align-items: center;
}

#nav-contactid-alias {
  font-size: 14px;
  font-weight: bold;
  margin: 5px 0px 3px;
}

#nav-contactid-bestId {
  font-size: 11px;
}

.oneEntry #nav-contactid-bestId {
  visibility: hidden;
}

.action-button svg {
  fill: var(--action-icon-color);
}

.action-button.deactivated svg {
  fill: var(--deactivated-icon-color);
}

.non-action-button svg {
  fill: var(--non-action-icon-color);
}

.non-action-button:hover, .action-button:hover {
  background: var(--action-icon-hover-color);
}

.non-action-button:active, .action-button:active {
  background: var(--action-icon-press-color);
}

.action-button.deactivated:hover, .action-button.deactivated:active {
  background: none;
}

.action-critical-button svg {
  fill: var(--action-critical-icon-color);
}

.action-critical-button:hover {
  background: var(--action-critical-icon-hover-color);
}

.action-critical-button:active {
  background: var(--action-critical-icon-press-color);
}

#navbar #addBannedContactButton, #navbar #addToConversationsButton {
  display: none;
}

#navbar.onBannedState #addToConvButton, #navbar.onBannedState #callButtons, #navbar.onBannedState #addToConversationsButton {
  display: none;
}

#navbar.onBannedState #addBannedContactButton {
  display: flex;
}

/** Invitation bar */

#invitation {
  visibility: hidden;
  background: var(--ring-light-blue);
  position: absolute;
  width: 100%;

  /* hairline */
  border-bottom: var(--hairline-thickness) solid var(--hairline-color);
}

#actions
{
  margin: 10px;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: center;
}

.invitation-button,
.flat-button {
  margin: 5px;
  border: 0;
  border-radius: 5px;
  transition: all 0.3s ease;
  color: #f9f9f9;
  padding: 10px 20px 10px 20px;
  vertical-align: middle;
  cursor: pointer;
}

.button-green {
  background: #27ae60;
}

.button-green:hover {
  background: #1f8b4c;
}

.button-red {
  background: #dc3a37;
}

.button-red:hover {
  background: #b02e2c;
}

#invitation #text h1 {
  font-size: 1.5em;
}

#invitation #text {
  text-align: center;
  width: 90%;
  margin: auto;
  margin-top: 10px;
  font-size: 0.8em;
}

/** Messaging bar */

#sendMessage {
  background-color: var(--bg-color);
  display: flex;
  position: relative;
  padding-right: 10px;
  padding-left: 8px;
  overflow: hidden;
  padding-top: 8px;
  padding-bottom: 8px;
  align-items: center;

  position: fixed;
  left:0; right:0;
  z-index: 500;
  bottom: 0;
  /* hairline */
  border-top: var(--hairline-thickness) solid var(--hairline-color);
}

#sendMessage.hiddenState {
  visibility: hidden;
}

#message {
  font-family: emoji;
  flex: 1;
  background-color: var(--bg-color);
  border: 0;
  overflow-y: scroll;
  color: black;
  max-height: var(--textarea-max-height);
  margin-right: 10px;
  resize: none;

  /* enable selection (it is globally disabled in the body) */
  -webkit-user-select: auto;
}

#message:focus,
#message.focus {
  outline: none;
}

#container[disabled] {
  background-color: #ccc;
}

input[placeholder], [placeholder], *[placeholder] {
    color: #d3d3d3;
}

/** Main chat view */

#lazyloading-icon {
    margin: auto;
    margin-bottom: 10px;
    margin-top: 5px;
    vertical-align: center;
    width: 30px;
    display: flex;
}

#container {
  position: relative;
  height: 100%;
  width: 100%;
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 0;
  justify-content: flex-end;
}

a:link {
  text-decoration: none;
  color: #0e649b;
  transition: all 0.2s ease-in-out;
  border-bottom: dotted 1px;
}

a:hover {
  border: 0;
}

#messages {
  position: relative;
  z-index: 0;
  width: 100%;
  overflow-y: scroll;
  height: auto;
  padding-top: 0.5em;
}

.last-message {
  padding-bottom: 1.5em !important;
}

/* General messages */

.message_wrapper {
    max-width: 70%;
    margin: 8px 0 0 0;
    display: inline-block;
    padding: 1em;
    border-radius: 10px;
    position: relative;
}

.message {
    font: 0.875em emoji;
    margin: 0;
    display: flex;
    justify-content: flex-start;
    align-items: top;
    overflow: hidden;

  /* enable selection (it is globally disabled in the body) */
  -webkit-user-select: auto;
}

.menu_interaction
{
    margin: 5px;
    padding: 10px;
    padding-top: 0;
    opacity: 0;
    height: 20px;
    transition:visibility 0.3s linear,opacity 0.3s linear;
}

.message_type_contact .menu_interaction
{
    display: none;
    visibility: hidden;
}

.message_type_call .menu_interaction
{
    margin: auto;
    padding: 0;
    vertical-align: center;
}

.message_type_call .menu_interaction .dropdown
{
    margin-top: -17px;
}

.message:hover .menu_interaction
{
    display: block;
    opacity: 1;
}

.dropdown {
    display: none;
    z-index: 1;
    position: absolute;
    background-color: #fff;
    padding-top: 3px;
    padding-bottom: 3px;
}

.dropdown div
{
    color: #111;
    padding: 10px;
}

.dropdown div:hover
{
    background-color: #ddd;
}

#showmenu:checked ~ .dropdown{
    display:block;
}

.message_in {
    padding-left: 25%;
}

.message_out {
    padding-right: 25%;
    flex-direction: row-reverse;
}

.message_in + .message_in .sender_image {
    opacity: 0;
}

.message_out + .message_out .sender_image {
    opacity: 0;
}

.message_delivery_status {
    margin: 10px 10px;
    color: #A0A0A0;
}

.message_sender {
    display: none;
}

.sender_image {
    border-radius: 50%;
    margin: 10px;
}

.message_out > .message_wrapper {
    background-color: #cfd8dc;
    border-top-right-radius: 0;
    transform-origin: top right;
}

.message_out + .message_out > .message_wrapper {
    border-top-right-radius: 10px;
}

.message_in > .message_wrapper {
    background-color: #fdfdfd;
    border-top-left-radius: 0;
    transform-origin: top left;
}

.message_in + .message_in > .message_wrapper {
    border-top-left-radius: 10px;
}


@-webkit-keyframes fade-in {
    from {
      opacity: 0;
    }
    to {
      opacity: 1;
    }
}

.timestamp {
    display: flex;
    justify-content: flex-start;
    color: #333;
    font-size: 10px;
    padding: 5px;
}

.timestamp_out {
    flex-direction: row-reverse;
}

/* Buttons */

.flat-button {
    flex: 1;
    padding: 0;
}

.left_buttons {
    display: flex;
    align-self: center;
    max-width: 90px;
    padding-left: 1em;
}

/* Status */

.status_circle {
    fill: #A0A0A0;
    -webkit-animation: circle-dance;
    -webkit-animation-duration: 0.8s;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-direction: alternate;
    -webkit-animation-timing-function: ease-in-out;
}

.anim-first {
    -webkit-animation-delay: 0.7s;
}

.anim-second {
    -webkit-animation-delay: 0.9s;
}

.anim-third {
    -webkit-animation-delay: 1.1s;
}

@-webkit-keyframes circle-dance {
  0%,50% {
    -webkit-transform: translateY(0);
    fill: #A0A0A0;
  }
  100% {
    -webkit-transform: translateY(-8px);
    fill: #000;
  }
}

.status-x {
    stroke-dasharray: 12;
}

/* Contact + Call interactions */
.message_type_contact .message_wrapper,
.message_type_call .message_wrapper {
    width: auto;
    margin-left: 30%;
    margin-right: 30%;
    display: flex;
    flex-wrap: wrap;
    background-color: #f2f2f2;
    padding: 0;
}

.message_type_contact .message_wrapper:before,
.message_type_call .message_wrapper:before {
    display: none;
}

.message_type_contact .text,
.message_type_call .text {
    align-self: center;
    font-size: 1.2em;
    padding: 1em;
}

/* file interactions */

.message_type_data_transfer .message_wrapper {
    padding: 0;
    width: 30%;
    display: flex;
    flex-wrap: wrap;
}

.accept, .refuse {
    border-radius: 50%;
    cursor: pointer;
}

.accept svg,
.refuse svg {
    padding: 8px;
    width: 24px;
    height: 24px;
}

.accept {
    fill: #219d55;
}

.accept:hover {
    fill: white;
    background: #219d55;
}

.refuse {
    fill: #dc2719;
}

.refuse:hover {
    fill: white;
    background: #dc2719;
}

.message_type_data_transfer .text {
    padding: 1em;
    text-align: left;
    align-self: left;
    max-width: calc(100% - 180px);
}

.message_type_data_transfer .filename {
    cursor: pointer;
    font-size: 1.1em;
    overflow: hidden;
}

.message_type_data_transfer .informations {
    color: #555;
    font-size: 0.8em;
}

.message_progress_bar {
    width: 100%;
    height: 1em;
    position: relative;
    overflow: hidden;
    background-color: #eee;
    border-radius: 0;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
}

.message_progress_bar > span {
    display: inline;
    height: 100%;
    background-color: #01a2b8;
    position: absolute;
    overflow: hidden;
}

/* text interactions */

.message_type_text .message_wrapper {
    max-width: 40%;
}

.message_type_text .message_text {
    padding: 0px;
}

.message_text {
    hyphens: auto; /* When webkitgtk+ will supports this, intelligent word-breaking */
    word-break: break-word;
    word-wrap: break-word;
    display: block;
}

pre {
    font : inherit;
    font-family : inherit;
    font-size : inherit;
    font-style : inherit;
    font-variant : inherit;
    font-weight : inherit;
    margin: 0;
    padding: 0;
}

/* Media interactions */
.media_wrapper img {
    max-width: 800px;
    max-height: 700px;
    margin: 5px 0 0 0;
    border-radius: 10px;
}

.playVideo {
    background-color: rgba(0, 0, 0, 0.6);
    height: 50px;
    width: 50px;
    border-radius: 5px;
    float: right;
    position: absolute;
    top: calc(50% - 25px);
    left: calc(50% - 25px);
    z-index: 3;
}

.containerVideo {
    width: 100%;
    position: relative;
}

.playVideo svg {
    height: 40px;
    width: 40px;
    margin: 5px;
}

/* Text interaction */
.failure,
.sending {
    margin: 10px 10px;
    color: #A0A0A0;
}

/* Classic screens */
@media screen and (max-width: 1920px), screen and (max-height: 1080px) {
  .message_in {
      padding-left: 15%;
  }

  .message_out {
      padding-right: 15%;
  }

  .message_type_text .message_wrapper {
      max-width: 60%;
  }

  /* File interactions */
  .message_type_data_transfer .message_wrapper {
      width: 40%;
  }

  /* Media interactions */
  .media_wrapper img {
      max-width: 450px;
      max-height: 450px;
  }

  .menu_interaction
  {
      margin: 5px;
      padding: 2px;
      height: 10px;
      font-size: 0.7em;
      transition:visibility 0.3s linear,opacity 0.3s linear;
  }
}

/* lower resolutions */
@media screen and (max-width: 1000px), screen and (max-height: 480px) {
  .message_in {
      padding-left: 0;
  }

  .message_out {
      padding-right: 0;
  }

  .message_type_contact,
  .message_type_call {
      max-width: 100%;
  }

  .message_type_text .message_wrapper {
      max-width: 90%;
  }

  /* File interactions */
  .message_type_data_transfer .message_wrapper {
      width: 70%;
  }

  /* Media interactions */
  .media_wrapper img {
      max-width: 200px;
      max-height: 200px;
  }
}

/* Special case */
@media screen and (max-width: 300px) {
  .sender_image {
      visibility: hidden;
      display: none;
  }

  /* File interactions */
  .message_type_data_transfer .left_buttons {
      max-width: 100%;
  }

  .message_type_data_transfer .text {
      max-width: 100%;
      padding-left: 0;
  }
}

.message_type_contact .message_wrapper:hover .timestamp_action,
.message_type_call .message_wrapper:hover .timestamp_action {
    opacity: 1;
}

.timestamp_action {
    margin: auto;
    padding: 0;
    vertical-align: center;
    opacity:0;
    transition:visibility 0.3s linear,opacity 0.3s linear;
}
