session-desktop/stylesheets/manifest.css
lilia 019a9d1fbc Unread counts
Update unreadCounts per-conversation on incoming messages. Render unread
conversations with font-weigh: bold in the inbox view.

To ensure that the inbox and conversation views remain in sync, the
background page now ensures that the same models objects are used for
both views.
2015-03-11 15:13:36 -07:00

528 lines
12 KiB
CSS

@font-face {
font-family: 'Roboto-Light';
src: url("/fonts/Roboto-Light.ttf") format("truetype"); }
@font-face {
font-family: 'Roboto';
src: url("/fonts/Roboto-Regular.ttf") format("truetype"); }
@font-face {
font-family: 'Roboto';
src: url("/fonts/Roboto-Italic.ttf") format("truetype");
font-style: italic; }
@font-face {
font-family: 'Roboto';
src: url("/fonts/Roboto-Bold.ttf") format("truetype");
font-weight: bold; }
* {
box-sizing: border-box; }
html {
height: 100%; }
body {
height: 100%;
width: 100%;
margin: 0;
font-family: Roboto, "Helvetica Neue", Arial, Helvetica, sans-serif;
font-size: 14px; }
.clearfix:before,
.clearfix:after {
display: table;
content: " "; }
.clearfix:after {
clear: both; }
.hide {
display: none; }
#header {
position: fixed;
top: 0;
width: 100%;
z-index: 1;
height: 36px;
line-height: 24px;
background: #f2f2f2;
box-shadow: 0 -4px 3px 4px rgba(165, 165, 165, 0.8);
color: #2a92e7; }
.title-text {
display: block;
text-align: center;
height: 36px;
line-height: 36px;
font-family: Roboto-Light, "Helvetica Neue", Arial, Helvetica, sans-serif; }
.title-bar button {
width: 36px;
height: 36px;
line-height: 36px;
margin-right: 8px;
padding: 0;
border: 0;
outline: 0; }
button {
cursor: pointer; }
button.back {
float: left;
background: #f2f2f2 url("/images/back.png") no-repeat center center; }
button.back + .title-text {
text-indent: -36px; }
.menu {
position: relative;
float: right;
height: 36px;
padding-left: 8px; }
.menu .hamburger {
width: 36px;
background: url("/images/menu.png") no-repeat center; }
.menu .menu-list {
display: none;
position: absolute;
top: 100%;
right: 0;
margin: 0;
padding: 0;
border: solid 1px #2a92e7;
background-color: white;
box-shadow: 0 4px 3px 0px rgba(12, 65, 108, 0.8); }
.menu .menu-list li {
display: block;
cursor: pointer;
white-space: nowrap;
padding: 5px 15px 5px 10px; }
.file-input {
position: relative;
width: 36px;
margin-right: 10px; }
.file-input .paperclip {
width: 100%;
height: 100%;
background: url("/images/paperclip.png") no-repeat;
background-size: 90%;
background-position: center 6px; }
.file-input input[type=file] {
display: none;
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
top: 0;
left: 0;
cursor: pointer;
z-index: 1; }
.file-input img.preview {
max-width: 100%; }
.file-input .close {
font-family: sans-serif;
color: white;
position: absolute;
top: -10px;
left: 20px;
text-align: center;
cursor: default;
border-radius: 50%;
width: 20px;
height: 20px;
padding: 0px;
background: #666;
color: #fff;
text-align: center; }
img.emoji {
height: 1em;
width: 1em;
margin: 0 .05em 0 .1em;
vertical-align: -0.1em; }
.gutter {
padding: 36px 0 0; }
.new-conversation, .inbox, .gutter {
height: 100%; }
.scrollable {
height: 100%;
overflow: auto; }
.socket-status {
float: left;
padding: 6px; }
.socket-status * {
cursor: pointer;
padding-left: 20px;
border-radius: 36px;
min-height: 20px; }
.socket-status *:hover {
background: #2a92e7 url("/images/refresh.png") center; }
.socket-status .connecting .icon {
background-color: #2a92e7; }
.socket-status .closing {
background-color: #a2d2f4; }
.socket-status .closed {
background: url("/images/error_red.png") no-repeat left center; }
.contact .number, .contact .checkbox {
display: none; }
input.new-message {
border: none;
padding: 0;
margin: 0;
outline: 0; }
.new-conversation .new-group-update-form {
display: none; }
.new-conversation .new-group-update-form button.create-group {
float: right; }
.new-conversation .new-group-update-form .group-avatar {
float: left;
height: 36px; }
.new-conversation .buttons {
display: none; }
.new-conversation .recipients-container {
background-color: white;
padding: 2px;
border-bottom: 1px solid #f2f2f2;
line-height: 24px; }
.new-conversation .recipient {
display: inline-block;
margin: 0 2px 2px 0;
padding: 0 5px;
border-radius: 10px;
background-color: #2a92e7;
color: white; }
.new-conversation .recipient.error {
background-color: #f00; }
.new-conversation .recipient .remove {
margin-left: 5px;
padding: 0 2px; }
.fab {
z-index: 1;
position: fixed;
right: 25px;
bottom: 22px;
height: 50px;
width: 50px;
border: 0;
border-radius: 30px;
outline: 0;
font: 300 36px Roboto, "Helvetica Neue", Arial, Helvetica, sans-serif;
color: white;
background: #2a92e7 url("/images/pencil.png") no-repeat center center;
box-shadow: 0 8px 8px -8px rgba(2, 10, 16, 0.8);
transition: box-shadow 0.33s, transform 0.33s, background 0.33s; }
.fab:hover {
background-color: #1c8be5;
box-shadow: 0 8px 18px -8px rgba(2, 10, 16, 0.9);
transform: translate3d(0, -1px, 0); }
.last-timestamp {
font-size: smaller; }
.new-conversation .last-message, .new-conversation .last-timestamp {
display: none; }
.new-conversation .contact .checkbox, .new-conversation .contact .number {
display: inline-block; }
.new-conversation .contact .number {
color: #616161;
font-size: small; }
.new-contact .contact-name {
display: none; }
.new-contact .contact-details::before {
content: 'Create new contact';
display: block;
font-style: italic;
opacity: 0.7;
padding-right: 8px; }
.index {
color: #454545;
background: #eee; }
.index .contact {
position: relative;
padding: 12px;
background: white;
cursor: pointer;
transition: background 0.2s;
white-space: nowrap;
overflow: hidden; }
.index .contact::after {
content: '';
position: absolute;
right: 16px;
bottom: 0;
height: 1px;
width: calc(100% - 12px - 54px - 2 * 8px - 16px);
background: #eee; }
.index .contact:hover {
background: #f8f8f8; }
.index .contact:last-child {
box-shadow: 0 1px 3px rgba(170, 170, 170, 0.8); }
.index .contact:last-child::after {
display: none; }
.index .contact-details {
vertical-align: top;
display: inline-block;
margin: 4px 0 0 8px; }
.index .contact-name {
margin: 0;
font-size: 1em;
font-weight: 400; }
.index .last-message {
margin: 6px 0;
font-size: small;
font-weight: 300; }
.index .timestamp {
position: absolute;
top: 14px;
right: 12px;
color: #888; }
.index .avatar img {
height: 44px;
width: 44px;
background: #f3f3f3;
border-radius: 22px; }
.settings {
height: 100%;
width: 100%;
background: red;
display: none; }
.settings-open .settings {
display: block; }
.conversations .unread .contact-details .contact-name,
.conversations .unread .contact-details .last-message,
.conversations .unread .contact-details .last-timestamp {
font-weight: bold; }
.conversation {
padding: 36px 0; }
.conversation, .discussion-container, .message-list, .message-detail, .key-verification {
height: 100%; }
.key-verification {
padding: 36px 0 0; }
.key-verification .container {
height: 100%;
overflow: auto; }
.key-verification p {
padding: 1em; }
.key-verification .key {
font-family: monospace;
padding: 0 1em; }
.message-detail {
padding: 36px 0 0;
background: #f3f3f3; }
.message-detail .message-container {
background: white;
padding: 1em 0; }
.message-detail .message-container .sender {
display: none; }
.message-detail .info {
padding: 1em; }
.message-detail .info .label {
text-align: right;
font-weight: bold;
padding-right: 1em; }
.group-update {
font-size: smaller; }
.private .sender,
.outgoing .sender {
display: none; }
.sender {
font-size: smaller;
opacity: 0.8; }
.timestamp {
font-size: smaller; }
.entry .delivered .checkmark {
display: inline; }
.message-list {
margin: 0;
padding: 1em 0;
overflow-y: auto; }
.message-list .timestamp {
cursor: pointer; }
.message-list .timestamp:hover {
text-decoration: underline; }
.message-detail,
.message-list {
list-style: none; }
.message-detail li,
.message-list li {
margin: 0 8px 16px; }
.message-detail li::after,
.message-list li::after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0; }
.message-detail p,
.message-list p {
margin: 0; }
.message-detail .bubble,
.message-list .bubble {
position: relative;
left: -2px;
display: inline-block;
vertical-align: top;
max-width: calc(100% - 20px - 2 * 12px);
padding: 9px 12px;
border-radius: 4px;
box-shadow: 0 3px 3px -4px black; }
.message-detail .bubble::before, .message-detail .bubble::after,
.message-list .bubble::before,
.message-list .bubble::after {
content: '';
position: absolute;
height: 0;
width: 0; }
.message-detail .bubble::before,
.message-list .bubble::before {
top: 9px;
border-top: 8px solid transparent;
border-bottom: 8px solid transparent; }
.message-detail .bubble::after,
.message-list .bubble::after {
top: 11px;
border-top: 6px solid transparent;
border-bottom: 6px solid transparent; }
.message-detail .incoming .bubble,
.message-list .incoming .bubble {
color: #454545;
background: #f3f3f3; }
.message-detail .incoming .bubble::before,
.message-list .incoming .bubble::before {
left: -10px;
border-right: 10px solid white; }
.message-detail .incoming .bubble::after,
.message-list .incoming .bubble::after {
left: -8px;
border-right: 8px solid #f3f3f3; }
.message-detail .outgoing .avatar, .message-detail .outgoing .bubble,
.message-list .outgoing .avatar,
.message-list .outgoing .bubble {
float: right; }
.message-detail .outgoing .bubble,
.message-list .outgoing .bubble {
clear: left;
color: white;
background: #2a92e7; }
.message-detail .outgoing .bubble .meta,
.message-list .outgoing .bubble .meta {
color: #a2d2f4; }
.message-detail .outgoing .bubble::before,
.message-list .outgoing .bubble::before {
right: -10px;
border-left: 10px solid white; }
.message-detail .outgoing .bubble::after,
.message-list .outgoing .bubble::after {
right: -8px;
border-left: 8px solid #2a92e7; }
.message-detail .attachments img, .message-detail .attachments audio, .message-detail .attachments video,
.message-list .attachments img,
.message-list .attachments audio,
.message-list .attachments video {
max-width: 100%; }
.message-detail .attachments video,
.message-list .attachments video {
background: black; }
.message-detail .outgoing img.avatar,
.message-list .outgoing img.avatar {
display: none; }
.message-detail img.avatar,
.message-list img.avatar {
height: 36px;
width: 36px;
background: #f3f3f3;
border-radius: 18px; }
.message-detail .meta,
.message-list .meta {
margin-top: 3px;
float: right; }
.message-detail .end-session,
.message-list .end-session {
font: small;
font-style: italic;
opacity: 0.8; }
.bottom-bar {
position: fixed;
bottom: 0;
height: 36px;
width: 100%;
border-top: 1px solid #f3f3f3;
background: white; }
.bottom-bar button, .bottom-bar input {
color: #454545; }
.bottom-bar button {
position: absolute;
top: 0;
height: 100%;
width: 36px;
padding: 0;
border: 0;
outline: 0;
font-size: 24px;
background: transparent; }
.bottom-bar .attachments {
float: left;
height: 100%; }
.bottom-bar .send-btn {
float: right;
height: 100%;
width: 36px;
border: none;
outline: none;
background: url("/images/send.png") no-repeat;
background-size: 75%;
background-position: center center;
cursor: pointer; }
.bottom-bar .send-btn::before {
content: '+'; }
.bottom-bar form, .bottom-bar input {
height: 100%; }
.bottom-bar input[type=textarea] {
display: block;
height: 100%;
border: 0;
outline: 0;
z-index: 5; }
.toast {
position: absolute;
bottom: 0;
margin: 0 2em 3em;
padding: 0.5em 1.5em;
background: rgba(0, 0, 0, 0.75);
color: white;
box-shadow: 0 0 5px 0 black;
border-radius: 20px;
font-size: small; }
.attachment-preview {
background: white;
width: 100%;
height: 100%; }
.attachment-preview img {
width: 100%; }