body {
  margin: 0;
  overflow: hidden;
  background-color: #f2f2f2;
}

/** TODO invitation bar like Tirifto mock up */

#invitation {
  visibility: hidden;
  width: 100%;
  background: #bae5f0;
  z-index: 2;
  position: absolute;
  margin: 0 auto;
  left:0;
  right:0;
  top:0;
}

#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;
}

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

.button-green:hover {
  background: #219d55;
}

.button-red {
  background: #dc3a37;
}

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

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

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

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

a:hover {
  border: 0;
}

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

#messages {
  position: relative;
  z-index: 0;
  width: 100%;
  overflow-y: scroll;
  height: auto;
  padding-bottom: 1em;
  max-height: calc(100% - 50px);
}

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

}

#message {
  flex: 1;
  margin-right: 10px;
  border: 0;
  overflow-y: scroll;
  color: black;
  max-height: 150px;
  padding-left: 8px;
  resize: none;
}

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

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

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

#sendMessage svg {
  fill: #666;
  padding: 5px;
  width: 100%;
  height: 100%;
  transition: all 0.3s ease;
}

/* General messages */

.wc {
  will-change: transform;
}

.message_wrapper {
    transform: scale(0);
    max-width: 70%;
    margin: 8px 0 0 0;
    display: inline-block;
    padding: 1em;
    border-radius: 10px;
    position: relative;
    -webkit-animation: talk;
    -webkit-animation-duration: 0.3s;
    -webkit-animation-delay: 0.1s;
    -webkit-animation-fill-mode: forwards;
    -webkit-animation-timing-function: ease-in-out;
}

.message {
    font: 0.875em "Open sans",Helvetica,"Segoe UI",sans-serif;
    margin: 0;
    display: flex;
    justify-content: flex-start;
    align-items: top;
    overflow: hidden;
}

.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_in > .message_wrapper:before {
    content: "";
    width: 10px;
    height: 10px;
    position: absolute;
    left: -10px;
    top: 0;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E %3Cpath d= 'M10,0 L0,0 C10,0 10,10 10,10' fill='%23fdfdfd'/%3E %3C/svg%3E");
    transform-origin: top left;
}

.message_in + .message_in > .message_wrapper:before {
    display: none;
}

.message_out + .message_out > .message_wrapper:after {
    display: none;
}

.message_out > .message_wrapper:after {
    content: "";
    width: 10px;
    height: 10px;
    position: absolute;
    right: -10px;
    top: 0;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E %3Cpath d= 'M0,0 L10,0 C0,0 0,10 0,10' fill='%23cfd8dc'/%3E %3C/svg%3E");
    transform-origin: top right;
}

.message_delivery_status {
    margin: 10px 10px;
    color: #A0A0A0;
    opacity: 0;
    -webkit-animation-name: fade-in;
    -webkit-animation-duration: 0.2s;
    -webkit-animation-timing-function: ease-in-out;
    -webkit-animation-delay: 0.4s;
    -webkit-animation-fill-mode: forwards;
    transition: opacity 0.5s ease-in-out;
}

.message_sender {
    display: none;
}

.sender_image {
    border-radius: 50%;
    transition: transform 0.2s ease-in-out;
    margin: 10px;
}

.message_in .sender_image {
    -webkit-animation-name: enter-stage-left;
    -webkit-animation-duration: 0.2s;
    -webkit-animation-timing-function: ease-in-out;
}

.message_out .sender_image {
    -webkit-animation-name: enter-stage-right;
    -webkit-animation-duration: 0.2s;
    -webkit-animation-timing-function: ease-in-out;
}

@-webkit-keyframes enter-stage-left {
    from {
      transform: translateX(-100%);
    }
    to {
      transform: translateX(0);
    }
}

@-webkit-keyframes enter-stage-right {
    from {
      transform: translateX(100%);
    }
    to {
      transform: translateX(0);
    }
}

.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;
    }
}

@-webkit-keyframes talk {
    from {
      transform: scale(0);
    }
    to {
      transform: scale(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;
}

.msg-button {
  border-radius: 50%;
  border: 0;
  width: 40px;
  height: 40px;
  align-self: center;
  transition: all 0.3s ease;
  cursor: pointer;
}

.msg-button.hover,
.msg-button:hover {
  background: #bae5f0;
}


/* 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;
  stroke-dashoffset: 12;
  -webkit-animation: dash-x;
  -webkit-animation-duration: 0.2s;
  -webkit-animation-fill-mode: forwards;
  -webkit-animation-timing-function: ease-in-out;
}

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

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

@-webkit-keyframes dash-x{
  from {
    stroke-dashoffset: 12;
  }
  to {
    stroke-dashoffset: 0;
  }
}

/* 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_call .message_wrapper:after,
.message_type_contact .message_wrapper:after {
    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;
}

.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;
  opacity: 0;
  -webkit-animation-name: fade-in;
  -webkit-animation-duration: 0.2s;
  -webkit-animation-timing-function: ease-in-out;
  -webkit-animation-delay: 0.4s;
  -webkit-animation-fill-mode: forwards;
  transition: opacity 0.5s ease-in-out;
}

/* 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;
  }
}

/* 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_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 {
  display: flex;
  align-items: center;
  justify-content: center;
  opacity:0;
  transition:visibility 0.3s linear,opacity 0.3s linear;
}
