thelounge/client/css/style.css
creesch 27393bb804 Offer optional syncing of client settings
Write synced settings to localstorage.

move settings and webpush init to init.js

stub for server sending clientsettings

get very basic setting sync working

Also update client.config.clientSettings on settings:set

Full setting sync with mandatory and excluded sync options

Actually check client preferences.

Further settings restructuring.

Refactor options.js make storage act in a sane manner.

Add new parameter to applySetting

Do not sync if the setting is stored as a result of syncing

General clean up, commenting and restructing.

sync from server on checking "sync"

offer initial sync

Better deal with DOM being ready and instances of inital sync showing

Don't try to disable autocompletion when not enabled.

Restructure option.js to seperate functions from settings.

More consistency in naming options vs settings

Switch processSetting and applySetting names reflecting their functionality better.

move options init back to configuration.

simplify how settings are synced around.

move options init after template building.

Remove unneeded hasOwnProperty

Use global for #theme and only apply theme in applySetting

Return when no server side clientsettings excist.

Autocompletion options to options.settings

Make nocss param in url work again.

Actually filter out empty highlight values.

Clarify alwaysSync comment.

Remove manual step for initial sync

change attr to prop in options.js

replace unbind with off in autocompletion.js

Do not sync settings when the lounge is set to public.

fix eslint error

Fix merge error

Do not show sync warning after page refresh when sync is enabled

Move setting sync label in actual label.

Improve server setting sync handling performance and failure potential.

Don't give impression that the desktop notificiation is off when the browser permission is denied.

Refine showing and hiding of notification warnings.

rename all setting socket events to singular setting.

add experimental note and icon to settingsync.

fix css linting error
2018-03-09 10:36:29 +01:00

2498 lines
46 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@font-face {
font-family: "FontAwesome";
font-weight: normal;
font-style: normal;
src:
url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),
url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff");
}
html,
body {
height: 100%;
}
body {
background: #455164;
color: #222;
font: 16px -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
margin: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: default;
touch-action: none;
/**
* Disable pull-to-refresh on mobile that conflicts with scrolling the message list.
* See http://stackoverflow.com/a/29313685/1935861
*/
overflow-y: hidden;
}
a,
a:hover,
a:focus {
color: #50a656;
}
a {
transition: opacity 0.2s;
}
a:hover {
text-decoration: none;
opacity: 0.8;
}
/**
* From Normalize. See https://github.com/thelounge/lounge/pull/1217
* 1. Remove the bottom border in Chrome 57- and Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
h1,
h2,
h3 {
font: inherit;
line-height: inherit;
margin: 0;
}
input {
outline: 0;
}
button {
border: none;
background: none;
margin: 0;
outline: none;
padding: 0;
}
code,
kbd,
pre,
.irc-monospace,
textarea#user-specified-css-input {
font-family: Consolas, Menlo, Monaco, "Lucida Console", "DejaVu Sans Mono", "Courier New", monospace;
}
code,
.irc-monospace {
font-size: 12px;
padding: 2px 4px;
color: #e74c3c;
background-color: #f9f2f4;
border-radius: 2px;
}
pre {
display: block;
padding: 9.5px;
margin: 0 0 10px;
font-size: 13px;
line-height: 1.42857143;
color: #333;
word-break: break-all;
word-wrap: break-word;
background-color: #f5f5f5;
border-radius: 4px;
}
kbd {
display: inline-block;
font-size: 11px;
line-height: 10px;
padding: 3px 5px;
color: #555;
vertical-align: middle;
background-color: #fcfcfc;
border: solid 1px #ccc;
border-bottom-color: #bbb;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #bbb;
}
.btn {
border: 2px solid #84ce88;
border-radius: 3px;
color: #84ce88;
display: inline-block;
font-size: 12px;
font-weight: bold;
letter-spacing: 1px;
margin-bottom: 10px;
padding: 9px 17px;
text-transform: uppercase;
transition: background 0.2s, border-color 0.2s, color 0.2s;
word-spacing: 3px;
cursor: pointer; /* This is useful for `<button>` elements */
}
.btn-small {
padding: 5px 13px;
}
.btn:disabled,
.btn:hover,
.btn:focus {
background: #84ce88;
color: #fff;
opacity: 1;
}
.btn:active {
box-shadow: none;
opacity: 0.8;
}
.btn:disabled {
opacity: 0.6;
}
.btn-sm {
padding: 4px 8px;
border-width: 1px;
letter-spacing: 0;
word-spacing: 0;
text-transform: none;
}
.container {
margin: 80px auto;
max-width: 480px;
touch-action: pan-y;
}
#help .container,
#changelog .container {
max-width: 600px;
}
::-moz-placeholder {
color: rgba(0, 0, 0, 0.35);
opacity: 1;
}
::-webkit-input-placeholder {
color: rgba(0, 0, 0, 0.35);
}
:-ms-input-placeholder {
color: rgba(0, 0, 0, 0.35) !important;
}
#js-copy-hack,
#loading pre,
#help,
#windows .header .title,
#windows .header .topic,
#chat .messages {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
cursor: text;
}
#js-copy-hack {
position: absolute;
left: -999999px;
}
#chat #js-copy-hack .condensed:not(.closed) .msg,
#chat #js-copy-hack > .msg {
display: block;
}
/* Icons */
#viewport .lt::before,
#viewport .rt::before,
#chat button.menu::before,
#sidebar .chan::before,
#chat .title::before,
#footer .icon,
#chat .count::before,
#settings .extra-experimental,
#settings .extra-help,
#settings #play::before,
#form #submit::before,
#chat .away .from::before,
#chat .back .from::before,
#chat .invite .from::before,
#chat .join .from::before,
#chat .kick .from::before,
#chat .part .from::before,
#chat .quit .from::before,
#chat .topic .from::before,
#chat .mode .from::before,
#chat .ctcp .from::before,
#chat .whois .from::before,
#chat .nick .from::before,
#chat .action .from::before,
#chat .toggle-button::after,
#version-checker::before,
.context-menu-item::before,
#help .website-link::before,
#help .documentation-link::before,
#help .report-issue-link::before,
#nick button::before,
#image-viewer .previous-image-btn::before,
#image-viewer .next-image-btn::before {
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit; /* Can't have font-size inherit on line above, so need to override */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
#viewport .lt::before { content: "\f0c9"; /* http://fontawesome.io/icon/bars/ */ }
#viewport .rt::before { content: "\f0c0"; /* http://fontawesome.io/icon/users/ */ }
#chat button.menu::before { content: "\f142"; /* http://fontawesome.io/icon/ellipsis-v/ */ }
.context-menu-join::before { content: "\f067"; /* http://fontawesome.io/icon/plus/ */ }
.context-menu-user::before { content: "\f007"; /* http://fontawesome.io/icon/user/ */ }
.context-menu-close::before { content: "\f00d"; /* http://fontawesome.io/icon/times/ */ }
.context-menu-list::before { content: "\f03a"; /* http://fontawesome.io/icon/list/ */ }
.context-menu-action-whois::before { content: "\f05a"; /* http://fontawesome.io/icon/info-circle/ */ }
.context-menu-action-kick::before { content: "\f05e"; /* http://fontawesome.io/icon/ban/ */ }
.context-menu-network::before,
#sidebar .chan.lobby::before,
#chat .lobby .title::before { content: "\f0a0"; /* http://fontawesome.io/icon/hdd-o/ */ }
#sidebar .not-secure .chan.lobby::before {
content: "\f09c"; /* https://fontawesome.com/v4.7.0/icon/unlock/ */
}
#sidebar .not-connected .chan.lobby::before {
content: "\f127"; /* https://fontawesome.com/v4.7.0/icon/chain-broken/ TODO v5: unlink */
}
.context-menu-query::before,
.context-menu-action-query::before,
#sidebar .chan.query::before,
#chat .query .title::before { content: "\f0e5"; /* http://fontawesome.io/icon/comment-o/ */ }
.context-menu-chan::before,
#sidebar .chan.channel::before,
#chat .channel .title::before { content: "\f086"; /* http://fontawesome.io/icon/comments/ */ }
#sidebar .chan.special::before,
#chat .special .title::before { content: "\f03a"; /* http://fontawesome.io/icon/list/ */ }
#footer .sign-in::before { content: "\f023"; /* http://fontawesome.io/icon/lock/ */ }
#footer .connect::before { content: "\f067"; /* http://fontawesome.io/icon/plus/ */ }
#footer .settings::before { content: "\f013"; /* http://fontawesome.io/icon/cog/ */ }
#footer .help::before { content: "\f059"; /* http://fontawesome.io/icon/question/ */ }
#footer .sign-out::before { content: "\f011"; /* http://fontawesome.io/icon/power-off/ */ }
#form #submit::before { content: "\f1d8"; /* http://fontawesome.io/icon/paper-plane/ */ }
#chat .away .from::before,
#chat .back .from::before {
content: "\f017"; /* http://fontawesome.io/icon/clock-o/ */
color: #7f8c8d;
}
#help .website-link::before,
#help .documentation-link::before,
#help .report-issue-link::before,
#chat .toggle-button {
display: inline-block;
margin-right: 5px;
/* These 2 directives are loosely taken from .fa-fw */
width: 1.35em;
text-align: center;
}
#help .website-link::before { content: "\f0ac"; /* http://fontawesome.io/icon/globe/ */ }
#help .documentation-link::before { content: "\f19d"; /* http://fontawesome.io/icon/graduation-cap/ */ }
#help .report-issue-link::before { content: "\f188"; /* http://fontawesome.io/icon/bug/ */ }
.session-list strong {
display: block;
}
.session-list p {
margin-bottom: 10px;
}
#chat .invite .from::before {
content: "\f003"; /* http://fontawesome.io/icon/envelope-o/ */
color: #2ecc40;
}
#chat .part .from::before,
#chat .quit .from::before {
content: "\f08b"; /* http://fontawesome.io/icon/sign-out/ */
color: #ff4136;
display: inline-block;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
#chat .topic .from::before {
content: "\f0a1"; /* http://fontawesome.io/icon/bullhorn/ */
color: #2ecc40;
}
#chat .mode .from::before {
content: "\f05a"; /* http://fontawesome.io/icon/info-circle/ */
color: #2ecc40;
}
#chat .ctcp .from::before {
content: "\f0f6"; /* http://fontawesome.io/icon/file-text-o/ */
}
#chat .whois .from::before {
content: "\f007"; /* http://fontawesome.io/icon/user/ */
color: #2ecc40;
}
#chat .nick .from::before {
content: "\f007"; /* http://fontawesome.io/icon/user/ */
color: #2ecc40;
}
#chat .join .from::before {
content: "\f090"; /* http://fontawesome.io/icon/sign-in/ */
color: #2ecc40;
}
#chat .kick .from::before {
content: "\f05e"; /* http://fontawesome.io/icon/ban/ */
color: #ff4136;
}
#chat .action .from::before {
content: "\f005"; /* http://fontawesome.io/icon/star/ */
}
#chat .toggle-button {
display: inline-block;
transition: opacity 0.2s, transform 0.2s;
/* These 2 directives are loosely taken from .fa-fw */
width: 1.35em;
text-align: center;
}
#chat .toggle-button::after {
content: "\f0da"; /* http://fontawesome.io/icon/caret-right/ */
}
#chat .count::before {
color: #cfcfcf;
content: "\f002"; /* http://fontawesome.io/icon/search/ */
position: absolute;
right: 18px;
font-size: 14px;
line-height: 50px;
}
#settings .extra-experimental::before {
content: "\f0c3"; /* https://fontawesome.com/icons/flask?style=solid */
}
#settings .extra-help::before {
content: "\f059"; /* http://fontawesome.io/icon/question-circle/ */
}
#settings #play::before {
content: "\f028"; /* http://fontawesome.io/icon/volume-up/ */
margin-right: 9px;
}
#set-nick::before {
content: "\f040"; /* http://fontawesome.io/icon/pencil/ */
}
#submit-nick::before {
content: "\f00c"; /* http://fontawesome.io/icon/check/ */
}
#cancel-nick::before {
content: "\f00d"; /* http://fontawesome.io/icon/times/ */
}
#image-viewer .previous-image-btn::before {
content: "\f104"; /* http://fontawesome.io/icon/angle-left/ */
}
#image-viewer .next-image-btn::before {
content: "\f105"; /* http://fontawesome.io/icon/angle-right/ */
}
/* End icons */
#wrap {
height: 100%;
overflow: hidden;
}
#chat button,
#form button,
#chat .user {
transition: opacity 0.2s;
}
#chat button:hover,
#form button:hover {
opacity: 0.6;
}
#viewport .lt,
#viewport .rt,
#chat button.menu {
color: #ccc;
display: none;
float: left;
font-size: 14px;
line-height: 1;
height: 36px;
margin: 6px 12px 0 -12px;
width: 36px;
}
#viewport .lt {
position: relative;
}
/* Notification dot on the top right corner of the menu icon */
#viewport .lt::after {
content: "";
position: absolute;
top: 9px;
right: 7px;
background-color: #e74c3c;
width: 10px;
height: 10px;
border-radius: 50%;
border: 2px solid white;
opacity: 0;
transition: opacity 0.2s;
}
#viewport .lt.notified::after {
opacity: 1;
}
#viewport .rt-tooltip {
float: right;
}
#viewport .rt {
display: block;
margin: 6px -12px 0 0;
}
#chat button.menu {
display: block;
float: right;
margin: 6px -8px 0 12px;
}
#viewport.rt #chat .sidebar {
right: -180px;
}
#sidebar {
bottom: 45px;
left: 0;
overflow: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
position: absolute;
top: 0;
width: 220px;
}
#viewport.menu-open #sidebar {
will-change: transform;
}
#sidebar .chan,
#sidebar .sign-out,
#sidebar .empty {
color: #99a2b4;
font-size: 14px;
}
#sidebar button,
#sidebar .chan,
#sidebar .sign-out {
cursor: pointer;
}
#sidebar button:hover,
#sidebar .chan:hover,
#sidebar .active {
color: #fff;
}
#sidebar .networks {
padding-top: 20px;
touch-action: pan-y;
}
#sidebar .networks:empty {
padding: 0;
}
#sidebar .network,
#sidebar .network-placeholder {
margin-bottom: 30px;
touch-action: pan-y;
}
#sidebar .empty {
line-height: 1.6;
padding: 40px 20px;
text-align: center;
}
#sidebar .chan,
#sidebar .chan-placeholder {
display: block;
padding: 8px 25px;
transition: color 0.2s;
width: 100%;
}
#sidebar .chan.lobby {
color: #84ce88;
font-size: 15px;
font-weight: bold;
}
#sidebar .chan.lobby:hover,
#sidebar .chan.lobby.active {
color: #c0f8c3;
}
#sidebar .not-secure .chan.lobby {
color: #f39c12;
}
#sidebar .not-secure .chan.lobby:hover,
#sidebar .not-secure .chan.lobby.active {
color: #f8c572;
}
#sidebar .not-connected .chan.lobby {
color: #e74c3c;
}
#sidebar .not-connected .chan.lobby:hover,
#sidebar .not-connected .chan.lobby.active {
color: #f1978e;
}
#sidebar .chan::before,
#chat .title::before {
margin-right: 12px;
}
#sidebar .chan::before {
float: left;
line-height: 18px;
}
#chat .title::before {
margin-top: 17px;
}
#sidebar .chan .name {
position: relative;
z-index: 0;
display: block;
overflow: hidden;
white-space: nowrap;
margin-right: 5px;
}
#sidebar .chan .name::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
width: 20px;
background: linear-gradient(to right, rgba(69, 81, 100, 0) 0%, rgba(69, 81, 100, 1) 100%);
content: " ";
}
#sidebar .badge,
#sidebar .add-channel,
#sidebar .close {
float: right;
margin-left: 5px;
margin-right: -5px;
}
#sidebar .badge {
background: rgba(255, 255, 255, 0.06);
border-radius: 3px;
color: #afb6c0;
font-size: 10px;
margin-top: 1px;
padding: 3px 6px;
transition: background-color 0.2s, color 0.2s;
}
#sidebar .badge:empty {
display: none;
}
#sidebar .badge.highlight {
background: #fff;
color: #49505a;
}
#sidebar .close-tooltip {
float: right;
}
#sidebar .leave,
#sidebar .close {
width: 18px;
height: 18px;
display: none;
transition: opacity 0.2s, background-color 0.2s;
}
#sidebar .leave::before,
#sidebar .close::before {
font-size: 20px;
font-weight: normal;
display: inline-block;
line-height: 16px;
text-align: center;
content: "×";
color: #fff;
}
#sidebar .lobby .add-channel {
border-radius: 3px;
width: 18px;
height: 18px;
opacity: 0.4;
transition: opacity 0.2s, background-color 0.2s, transform 0.2s;
}
#sidebar .lobby .add-channel::before {
font-size: 20px;
font-weight: normal;
display: inline-block;
line-height: 16px;
text-align: center;
content: "+";
color: #fff;
}
#sidebar .lobby .add-channel:hover {
opacity: 1;
}
#sidebar .lobby .add-channel.opened {
/* translateZ(0) enables hardware acceleration, this is to avoid jittering when animating */
transform: rotate(45deg) translateZ(0);
}
#sidebar .chan.active .close {
opacity: 0.4;
display: unset;
}
#sidebar .chan.active .leave:hover,
#sidebar .chan.active .close:hover {
opacity: 1;
}
#sidebar .tse-scrollbar {
top: 2px;
right: 3px;
}
#footer {
background: rgba(0, 0, 0, 0.06);
bottom: 0;
height: 45px;
left: 0;
font-size: 14px;
line-height: 45px;
position: absolute;
text-align: center;
width: 220px;
}
#footer button.active {
color: #fff;
}
#footer .icon {
color: #9ca5b4;
display: inline-block;
line-height: 34px;
padding: 0 12px;
transition: color 0.2s;
}
#footer .icon:hover {
color: #fff;
}
.signed-out #footer .sign-in {
display: inline-block;
}
.signed-out #footer .connect,
.signed-out #footer .sign-out {
display: none;
}
.public #footer .sign-in,
.public #footer .sign-out {
display: none;
}
#footer .sign-in {
display: none;
}
#main {
bottom: 0;
left: 220px;
position: absolute;
right: 0;
top: 0;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
}
.signed-out #main {
left: 0; /* Hide the sidebar when user is signed out */
}
#header {
display: none;
height: 40px;
position: absolute;
top: 0;
width: 100%;
}
#windows li,
#windows p,
#windows label,
#settings .error {
font-size: 14px;
}
.input {
background-color: white;
border: 1px solid #cdd3da;
border-radius: 2px;
color: #222;
font-size: 14px;
margin: 2px 0;
margin-bottom: 10px;
outline: 0;
padding: 8px 10px;
transition: border-color 0.2s;
width: 100%;
}
.input:disabled {
background-color: #ddd;
}
.input:not(:disabled):hover,
.input:not(:disabled):focus {
border-color: #79838c;
}
#windows select.input {
height: 35px;
}
#user-specified-css-input {
resize: vertical;
}
#windows .window {
background: #fff;
bottom: 0;
display: none;
left: 0;
position: absolute;
right: 0;
top: 0;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
#windows .window h1 {
font-size: 36px;
}
#windows .window h2 {
border-bottom: 1px solid #7f8c8d;
color: #7f8c8d;
font-size: 22px;
margin: 30px 0 10px;
padding-bottom: 7px;
}
#windows .window h2 small {
color: inherit;
line-height: 30px;
}
#windows .window h3 {
color: #7f8c8d;
font-size: 18px;
margin: 20px 0 10px;
}
#windows .active {
display: block;
}
#windows .header {
border-bottom: 1px solid #e7e7e7;
line-height: 48px;
height: 48px;
padding: 0 20px;
overflow: hidden;
}
#windows .header .title {
font-size: 15px;
}
#windows .header .topic {
color: #777;
margin-left: 8px;
word-break: break-all;
}
#windows .window .header {
display: none;
}
#chat-container,
#chat .chan {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
#windows #chat-container.active {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
}
#chat {
position: relative;
overflow: hidden;
-webkit-flex: 1;
flex: 1;
}
#chat .chan {
display: none;
}
#chat .chan.active {
display: block;
}
#chat .condensed {
flex-wrap: wrap;
}
#chat .condensed .content {
flex: 1;
}
/* Ensures expanded status messages always take up the full width */
#chat .condensed .msg {
flex-basis: 100%;
}
#chat .condensed-summary .content {
display: block;
cursor: pointer;
transition: opacity 0.2s;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#chat .condensed-summary {
display: none;
}
#chat.condensed-status-messages .condensed-summary {
display: flex;
}
#chat .condensed-summary .content:hover {
opacity: 0.6;
}
#chat .condensed-summary .toggle-button:hover {
opacity: 1;
}
#chat.condensed-status-messages .condensed.closed .msg {
display: none;
}
#chat .condensed-summary .time {
visibility: hidden;
}
#windows #form .input,
#windows .header .topic,
.messages .msg,
.sidebar {
font-size: 14px;
line-height: 1.4;
}
#windows #chat .header {
display: block;
}
#chat .chat,
#chat .sidebar {
top: 48px;
}
#chat .chat {
bottom: 0;
left: 0;
right: 0;
overflow: auto;
will-change: transform, scroll-position;
-webkit-overflow-scrolling: touch;
position: absolute;
display: flex;
flex-direction: column;
}
#chat .channel .chat {
right: 180px;
}
#viewport.rt .chat {
right: 0;
}
#chat .sidebar {
background: #fff;
border-left: 1px solid #e7e7e7;
bottom: 0;
position: absolute;
right: 0;
width: 180px;
transition: right 0.4s;
touch-action: pan-y;
}
/**
* Toggled via JavaScript
*/
#sidebar .join-form {
display: none;
}
#sidebar .join-form .input {
display: block;
margin-left: auto;
margin-right: auto;
margin-top: 5px;
margin-bottom: 5px;
width: 80%;
}
#sidebar .join-form .btn {
display: block;
width: 80%;
margin: auto;
}
#sidebar .add-channel-tooltip {
float: right;
}
#chat .show-more {
display: none;
padding: 10px;
padding-bottom: 0;
width: 100%;
}
#chat .show-more-button {
background: #f4f4f4;
background-image: linear-gradient(#f4f4f4, #ececec);
border: 1px solid #d7d7d7;
border-bottom-color: #b7b7b7;
border-radius: 2px;
color: #555;
font-size: 12px;
height: 34px;
line-height: 0;
width: 100%;
}
#chat .show-more-button:hover {
opacity: 1;
}
#chat .messages {
padding: 10px 0;
touch-action: pan-y;
}
#chat .chan:not(.special) .messages {
margin-top: auto;
}
#chat .msg {
word-wrap: break-word;
word-break: break-word; /* Webkit-specific */
display: flex;
align-items: flex-start;
position: relative;
}
#chat .unread-marker {
position: relative;
text-align: center;
margin: 0 10px;
z-index: 0;
font-weight: bold;
font-size: 12px;
}
#chat .unread-marker::before {
position: absolute;
z-index: -1;
content: "";
left: 0;
right: 0;
top: 50%;
border-top: 1px solid rgba(231, 76, 60, 0.5);
}
#chat .unread-marker-text::before {
content: "New messages";
background-color: white;
color: rgba(231, 76, 60, 0.5);
padding: 0 10px;
}
#chat .unread-marker:last-child {
display: none;
}
#chat .date-marker {
position: relative;
text-align: center;
margin: 0 10px;
z-index: 0;
font-weight: bold;
font-size: 12px;
}
#chat .date-marker::before {
position: absolute;
z-index: -1;
content: "";
left: 0;
right: 0;
top: 50%;
border-top: 1px solid rgba(0, 107, 59, 0.5);
}
#chat .date-marker-text::before {
content: attr(data-label);
background-color: white;
color: rgba(0, 107, 59, 0.5);
padding: 0 10px;
}
.inline-channel {
cursor: pointer;
}
.inline-channel:hover {
opacity: 0.6;
}
#chat .time,
#chat .from,
#chat .content {
padding: 3px 0;
flex: 0 0 auto;
}
#chat .time {
color: #ddd;
padding-left: 10px;
width: 55px;
}
#chat.show-seconds .time {
width: 75px;
}
#chat .from {
color: #b1c3ce;
padding-right: 10px;
text-align: right;
width: 134px;
overflow: hidden;
white-space: nowrap;
position: relative;
}
#chat .content {
flex: 1 1 auto;
min-width: 0;
padding-left: 10px;
padding-right: 6px;
border-left: 1px solid #f6f6f6;
overflow: hidden; /* Prevents Zalgo text to expand beyond messages */
}
#loading a,
#chat .special .time,
#chat .special .from {
display: none;
}
#chat .special .date-marker-container,
#chat .special .unread-marker {
display: none;
}
#chat .special table th {
word-break: normal;
}
/* Nicknames */
#chat .user {
cursor: pointer;
color: #50a656;
}
#chat .user:hover {
opacity: 0.6;
}
#chat.colored-nicks .user.color-1 { color: #1396cf; }
#chat.colored-nicks .user.color-2 { color: #ffcf89; }
#chat.colored-nicks .user.color-3 { color: #00dc5f; }
#chat.colored-nicks .user.color-4 { color: #ff5bc8; }
#chat.colored-nicks .user.color-5 { color: #ff0e1b; }
#chat.colored-nicks .user.color-6 { color: #000094; }
#chat.colored-nicks .user.color-7 { color: #006441; }
#chat.colored-nicks .user.color-8 { color: #00566e; }
#chat.colored-nicks .user.color-9 { color: #ff0078; }
#chat.colored-nicks .user.color-10 { color: #15d5a3; }
#chat.colored-nicks .user.color-11 { color: #006b3b; }
#chat.colored-nicks .user.color-12 { color: #00c5ba; }
#chat.colored-nicks .user.color-13 { color: #00465b; }
#chat.colored-nicks .user.color-14 { color: #ffafce; }
#chat.colored-nicks .user.color-15 { color: #ff3b12; }
#chat.colored-nicks .user.color-16 { color: #16cc6a; }
#chat.colored-nicks .user.color-17 { color: #ff0072; }
#chat.colored-nicks .user.color-18 { color: #ff5877; }
#chat.colored-nicks .user.color-19 { color: #ff1753; }
#chat.colored-nicks .user.color-20 { color: #007a56; }
#chat.colored-nicks .user.color-21 { color: #095092; }
#chat.colored-nicks .user.color-22 { color: #000bde; }
#chat.colored-nicks .user.color-23 { color: #00bca9; }
#chat.colored-nicks .user.color-24 { color: #00367d; }
#chat.colored-nicks .user.color-25 { color: #009ec4; }
#chat.colored-nicks .user.color-26 { color: #006119; }
#chat.colored-nicks .user.color-27 { color: #008bb8; }
#chat.colored-nicks .user.color-28 { color: #469c00; }
#chat.colored-nicks .user.color-29 { color: #ff0f95; }
#chat.colored-nicks .user.color-30 { color: #ff7615; }
#chat.colored-nicks .user.color-31 { color: #ff4846; }
#chat.colored-nicks .user.color-32 { color: #ff199b; }
#chat .self .text {
color: #999;
}
#chat .msg.channel_list_loading .text {
color: #999;
font-style: italic;
padding-left: 20px;
}
#chat .msg.channel_list_truncated .text {
color: #f00;
padding-left: 20px;
}
#chat table.channel-list,
#chat table.ban-list {
margin: 5px 10px;
width: calc(100% - 30px);
}
#chat table.channel-list th,
#chat table.ban-list th,
#chat table.channel-list td,
#chat table.ban-list td {
padding: 5px;
vertical-align: top;
border-bottom: #eee 1px solid;
}
#chat table.channel-list .channel {
width: 80px;
}
#chat table.channel-list .channel,
#chat table.channel-list .topic,
#chat table.ban-list .hostmask,
#chat table.ban-list .banned_by,
#chat table.ban-list .banned_at {
text-align: left;
}
#chat table.channel-list .users {
text-align: center;
width: 50px;
}
#chat table.channel-list td.channel .inline-channel {
color: #428bca;
}
#chat table.channel-list td {
color: #555;
}
#chat.hide-status-messages .condensed,
#chat.hide-motd .motd {
display: none !important;
}
#chat .condensed .content,
#chat .away .content,
#chat .back .content,
#chat .join .content,
#chat .kick .content,
#chat .mode .content,
#chat .nick .content,
#chat .part .content,
#chat .quit .content,
#chat .topic .content,
#chat .topic_set_by .content {
color: #999;
}
#chat .action .from,
#chat .action .text,
#chat .action .user {
color: #f39c12;
}
#chat .notice .time,
#chat .notice .text,
#chat .chan .notice .user {
color: #0074d9 !important;
}
#chat .notice .user::before {
content: "Notice: ";
}
#chat .error,
#chat .error .from,
#chat .channel .highlight .from,
#chat .channel .highlight .text,
#chat .channel .highlight .user {
color: #f00;
}
#chat .toggle-button.opened, /* Thumbnail toggle */
#chat .msg.condensed:not(.closed) .toggle-button { /* Expanded status message toggle */
transform: rotate(90deg);
}
#chat .toggle-content {
background: #f5f5f5;
border-radius: 2px;
display: none;
color: #222;
max-width: 100%;
margin: 0;
margin-top: 6px;
overflow: hidden;
}
#chat .toggle-type-error {
background: transparent;
}
#chat .toggle-content img {
max-width: 100%;
max-height: 128px;
display: block;
}
#chat .toggle-content .thumb {
max-width: 48px;
max-height: 38px;
}
#chat .toggle-thumbnail {
padding: 6px;
}
#chat .toggle-text {
padding: 6px;
min-width: 0;
display: flex;
flex-direction: column;
white-space: nowrap;
color: inherit;
}
#chat .toggle-text:not(:first-child) {
padding-left: 0;
}
#chat .toggle-content .head,
#chat .toggle-content .body {
text-overflow: ellipsis;
overflow: hidden;
color: inherit;
}
#chat .toggle-content .head {
font-weight: bold;
}
#chat .toggle-content .body {
color: #999;
}
#chat .toggle-content.show {
display: inline-flex !important;
}
#chat audio {
width: 600px;
max-width: 100%;
}
/* Do not display an empty div when there are no previews. Useful for example in
part/quit messages where we don't load previews (adds a blank line otherwise) */
#chat .preview:empty {
display: none;
}
#chat .count {
background: #fafafa;
height: 48px;
left: 0;
position: absolute;
right: 0;
top: 0;
}
#chat .search {
color: #222;
border: 0;
background: none;
font: inherit;
outline: 0;
padding: 18px 16px;
position: relative;
width: 100%;
}
#chat .names {
bottom: 0;
overflow: auto;
overflow-x: hidden;
will-change: transform, scroll-position;
-webkit-overflow-scrolling: touch;
padding-bottom: 10px;
position: absolute;
top: 48px;
width: 100%;
touch-action: pan-y;
}
#chat .names-filtered {
display: none;
}
#chat .names .user {
display: block;
line-height: 1.6;
padding: 0 16px;
white-space: nowrap;
}
#chat .user-mode::before {
content: "";
border-bottom: 1px solid #eee;
display: block;
line-height: 1.6;
padding: 12px 16px 10px;
margin-bottom: 10px;
}
#chat .user-mode.owner::before {
content: "Owners";
}
#chat .user-mode.admin::before {
content: "Administrators";
}
#chat .user-mode.op::before {
content: "Operators";
}
#chat .user-mode.half-op::before {
content: "Half-Operators";
}
#chat .user-mode.voice::before {
content: "Voiced";
}
#chat .user-mode.normal::before {
content: "Users";
}
#chat .user-mode-search::before {
content: "Search Results";
}
#loading {
font-size: 14px;
z-index: 1;
}
#loading p {
margin-top: 10px;
}
#loading-slow,
#loading-reload {
display: none;
}
#loading-reload {
margin-top: 15px;
}
#loading summary {
outline: none;
cursor: pointer;
}
#loading pre {
white-space: normal;
}
#sign-in label {
display: block;
margin-top: 10px;
}
#sign-in .btn {
margin-top: 25px;
}
#sign-in .error {
color: #e74c3c;
margin-top: 1em;
}
#connect label {
display: block;
margin-top: 11px;
}
#connect .port::before {
content: ":";
margin: 9px 0 0 -17px;
position: absolute;
}
#connect .tls {
float: left;
margin-top: 6px;
}
#connect .tls input {
float: left;
margin: 3px 10px 0 0;
}
#connect .btn {
float: left;
margin-top: 30px;
}
#settings .sync-warning-base {
display: none;
}
#settings .opt {
display: block;
padding: 5px 0 5px 1px;
}
#settings .opt input {
margin-right: 6px;
}
#settings .extra-experimental {
color: #84ce88;
}
#settings .extra-help,
#settings #play {
color: #7f8c8d;
}
#settings .extra-experimental,
#settings .extra-help {
cursor: help;
}
#settings .extra-experimental,
#settings h2 .extra-help {
font-size: 0.8em;
}
#settings #play {
font-size: 14px;
transition: opacity 0.2s;
}
#settings #play:hover {
opacity: 0.8;
}
#settings #change-password .error,
#settings #change-password .success {
margin-bottom: 1em;
}
#settings #change-password .error {
color: #e74c3c;
}
#settings #change-password .success {
color: #2ecc40;
}
#settings .error {
color: #e74c3c;
margin-top: 0.2em;
}
#help .help-item {
display: table-row;
font-size: 14px;
}
#help .help-item .subject,
#help .help-item .description {
display: table-cell;
padding-bottom: 15px;
}
#help .help-item .subject {
white-space: nowrap;
padding-right: 15px;
}
#help .help-item .description p {
margin-bottom: 0;
}
.is-apple #help .key-all,
#help .key-apple {
display: none;
}
.is-apple #help .key-apple {
display: inline-block;
}
.whois {
display: -ms-grid; /* Edge 15- */
display: grid;
-ms-grid-template-columns: max-content auto;
grid-template-columns: max-content auto;
margin: 0;
}
.whois dt {
-ms-grid-column-start: 1;
grid-column-start: 1;
margin-right: 20px;
}
.whois dd {
-ms-grid-column-start: 2;
grid-column-start: 2;
}
.changelog-text {
line-height: 1.5;
}
.changelog-text p {
margin-bottom: 16px;
}
.window#changelog h3 {
font-size: 20px;
border-bottom: 1px solid #7f8c8d;
color: #7f8c8d;
margin: 30px 0 10px;
padding-bottom: 7px;
}
#version-checker {
display: flex;
align-items: center;
padding: 10px;
margin-bottom: 16px;
border-radius: 2px;
transition: color 0.2s, background-color 0.2s;
}
#version-checker p,
#version-checker button {
margin-bottom: 0;
}
#version-checker p {
flex: 1;
padding-top: 6px;
padding-bottom: 6px;
}
#version-checker::before {
margin-left: 6px;
margin-right: 12px;
font-size: 1.2em;
}
#version-checker.loading {
background-color: #d9edf7;
color: #31708f;
}
#version-checker.loading::before {
content: "\f250"; /* http://fontawesome.io/icon/hourglass-o/ */
}
#version-checker.new-version {
color: #8a6d3b;
background-color: #fcf8e3;
}
#version-checker.new-version::before {
content: "\f087"; /* http://fontawesome.io/icon/thumbs-o-up/ */
}
#version-checker.error {
color: #a94442;
background-color: #f2dede;
}
#version-checker.error::before {
content: "\f06a"; /* http://fontawesome.io/icon/exclamation-circle/ */
}
#version-checker.up-to-date {
background-color: #dff0d8;
color: #3c763d;
}
#version-checker.up-to-date #check-now {
/* "Check now" button is hidden until data expires */
display: none;
}
#version-checker.up-to-date::before {
content: "\f00c"; /* http://fontawesome.io/icon/check/ */
}
#form {
background: #eee;
border-top: 1px solid #ddd;
-webkit-flex: 0 0 auto;
flex: 0 0 auto;
padding: 5px;
}
#windows #form .input {
border: 1px solid #ddd;
border-radius: 2px;
margin: 0;
padding: 0;
background: white;
display: -webkit-flex;
display: flex;
-webkit-align-items: flex-end;
align-items: flex-end;
}
#connection-error {
font-size: 12px;
line-height: 36px;
font-weight: bold;
letter-spacing: 1px;
word-spacing: 3px;
text-transform: uppercase;
background: #e74c3c;
color: #fff;
text-align: center;
display: none;
}
#connection-error.shown {
display: block;
}
[contenteditable]:focus {
outline: none;
}
[contenteditable="true"] {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
cursor: text;
}
/* Nick editor */
#form #nick {
background: #f6f6f6;
color: #666;
font: inherit;
font-size: 13px;
margin: 4px;
line-height: 22px;
height: 24px;
padding-left: 9px;
padding-right: 5px;
border-radius: 2px;
-webkit-flex: 0 0 auto;
flex: 0 0 auto;
border: 1px solid transparent;
transition: border-color 0.2s;
}
#form #nick-value {
padding-right: 5px;
}
#form #nick.editable {
border-color: black;
}
#nick button#set-nick,
#nick button#submit-nick,
#nick button#cancel-nick {
color: #aaa;
width: 18px;
}
#nick.editable button#set-nick,
#nick.editable #set-nick-tooltip,
#nick button#submit-nick,
#nick:not(.editable) #save-nick-tooltip,
#nick button#cancel-nick,
#nick:not(.editable) #cancel-nick-tooltip {
display: none;
}
#nick.editable button#submit-nick,
#nick.editable button#cancel-nick {
display: inline-block;
}
/* End nick editor */
#form #input {
background: transparent;
border: none;
font: inherit;
min-height: 19px; /* Required when computing input height at char deletion */
height: 19px;
max-height: 95px; /* min-height/height x number of lines maximum */
line-height: 1.4;
outline: none;
margin: 5px;
padding: 0;
resize: none;
-webkit-flex: 1 0 auto;
flex: 1 0 auto;
align-self: center;
touch-action: pan-y;
}
#form #submit {
color: #9ca5b4;
font-size: 14px;
height: 32px;
transition: opacity 0.2s;
width: 32px;
-webkit-flex: 0 0 auto;
flex: 0 0 auto;
}
#context-menu-container {
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1000;
background: transparent;
}
#context-menu,
.textcomplete-menu {
position: absolute;
list-style: none;
margin: 0;
padding: 0;
min-width: 160px;
font-size: 14px;
background-color: #fff;
box-shadow: 0 3px 12px rgba(0, 0, 0, 0.15);
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 2px;
}
.context-menu-divider {
height: 1px;
margin: 6px 0;
background-color: rgba(0, 0, 0, 0.1);
}
.context-menu-item,
.textcomplete-item {
cursor: pointer;
display: block;
padding: 4px 8px;
color: #333;
margin-top: 6px;
margin-bottom: 6px;
line-height: 1.4;
transition: background-color 0.2s;
}
.context-menu-item:hover,
.textcomplete-item:hover,
.textcomplete-menu .active {
background-color: #f6f6f6;
transition: none;
}
.context-menu-item::before,
.textcomplete-item::before {
width: 20px;
display: inline-block;
}
.textcomplete-item a {
color: #333;
}
.textcomplete-item a:hover {
opacity: 1;
}
.emoji {
display: inline-block;
font-size: 1.4em;
vertical-align: bottom;
line-height: 1;
}
.topic .emoji {
vertical-align: middle;
}
.textcomplete-item .emoji {
width: 32px;
text-align: center;
}
.textcomplete-item .irc-bg {
display: block;
}
/**
* IRC Message Styling
* Colours are credit to http://clrs.cc/
*/
.irc-fg0 { color: #fff; }
.irc-fg1 { color: #000; }
.irc-fg2 { color: #001f3f; }
.irc-fg3 { color: #2ecc40; }
.irc-fg4 { color: #ff4136; }
.irc-fg5 { color: #85144b; }
.irc-fg6 { color: #b10dc9; }
.irc-fg7 { color: #ff851b; }
.irc-fg8 { color: #ffdc00; }
.irc-fg9 { color: #01ff70; }
.irc-fg10 { color: #39cccc; }
.irc-fg11 { color: #7fdbff; }
.irc-fg12 { color: #0074d9; }
.irc-fg13 { color: #f012be; }
.irc-fg14 { color: #aaa; }
.irc-fg15 { color: #ddd; }
.irc-bg0 { background: #fff; }
.irc-bg1 { background: #000; }
.irc-bg2 { background: #001f3f; }
.irc-bg3 { background: #2ecc40; }
.irc-bg4 { background: #ff4136; }
.irc-bg5 { background: #85144b; }
.irc-bg6 { background: #b10dc9; }
.irc-bg7 { background: #ff851b; }
.irc-bg8 { background: #ffdc00; }
.irc-bg9 { background: #01ff70; }
.irc-bg10 { background: #39cccc; }
.irc-bg11 { background: #7fdbff; }
.irc-bg12 { background: #0074d9; }
.irc-bg13 { background: #f012be; }
.irc-bg14 { background: #aaa; }
.irc-bg15 { background: #ddd; }
/* https://modern.ircdocs.horse/formatting.html#colors-16-98 */
.irc-fg16 { color: #470000; }
.irc-fg17 { color: #472100; }
.irc-fg18 { color: #474700; }
.irc-fg19 { color: #324700; }
.irc-fg20 { color: #004700; }
.irc-fg21 { color: #00472c; }
.irc-fg22 { color: #004747; }
.irc-fg23 { color: #002747; }
.irc-fg24 { color: #000047; }
.irc-fg25 { color: #2e0047; }
.irc-fg26 { color: #470047; }
.irc-fg27 { color: #47002a; }
.irc-fg28 { color: #740000; }
.irc-fg29 { color: #743a00; }
.irc-fg30 { color: #747400; }
.irc-fg31 { color: #517400; }
.irc-fg32 { color: #007400; }
.irc-fg33 { color: #007449; }
.irc-fg34 { color: #007474; }
.irc-fg35 { color: #004074; }
.irc-fg36 { color: #000074; }
.irc-fg37 { color: #4b0074; }
.irc-fg38 { color: #740074; }
.irc-fg39 { color: #740045; }
.irc-fg40 { color: #b50000; }
.irc-fg41 { color: #b56300; }
.irc-fg42 { color: #b5b500; }
.irc-fg43 { color: #7db500; }
.irc-fg44 { color: #00b500; }
.irc-fg45 { color: #00b571; }
.irc-fg46 { color: #00b5b5; }
.irc-fg47 { color: #0063b5; }
.irc-fg48 { color: #0000b5; }
.irc-fg49 { color: #7500b5; }
.irc-fg50 { color: #b500b5; }
.irc-fg51 { color: #b5006b; }
.irc-fg52 { color: #f00; }
.irc-fg53 { color: #ff8c00; }
.irc-fg54 { color: #ff0; }
.irc-fg55 { color: #b2ff00; }
.irc-fg56 { color: #0f0; }
.irc-fg57 { color: #00ffa0; }
.irc-fg58 { color: #0ff; }
.irc-fg59 { color: #008cff; }
.irc-fg60 { color: #00f; }
.irc-fg61 { color: #a500ff; }
.irc-fg62 { color: #f0f; }
.irc-fg63 { color: #ff0098; }
.irc-fg64 { color: #ff5959; }
.irc-fg65 { color: #ffb459; }
.irc-fg66 { color: #ffff71; }
.irc-fg67 { color: #cfff60; }
.irc-fg68 { color: #6fff6f; }
.irc-fg69 { color: #65ffc9; }
.irc-fg70 { color: #6dffff; }
.irc-fg71 { color: #59b4ff; }
.irc-fg72 { color: #5959ff; }
.irc-fg73 { color: #c459ff; }
.irc-fg74 { color: #f6f; }
.irc-fg75 { color: #ff59bc; }
.irc-fg76 { color: #ff9c9c; }
.irc-fg77 { color: #ffd39c; }
.irc-fg78 { color: #ffff9c; }
.irc-fg79 { color: #e2ff9c; }
.irc-fg80 { color: #9cff9c; }
.irc-fg81 { color: #9cffdb; }
.irc-fg82 { color: #9cffff; }
.irc-fg83 { color: #9cd3ff; }
.irc-fg84 { color: #9c9cff; }
.irc-fg85 { color: #dc9cff; }
.irc-fg86 { color: #ff9cff; }
.irc-fg87 { color: #ff94d3; }
.irc-fg88 { color: #000; }
.irc-fg89 { color: #131313; }
.irc-fg90 { color: #282828; }
.irc-fg91 { color: #363636; }
.irc-fg92 { color: #4d4d4d; }
.irc-fg93 { color: #656565; }
.irc-fg94 { color: #818181; }
.irc-fg95 { color: #9f9f9f; }
.irc-fg96 { color: #bcbcbc; }
.irc-fg97 { color: #e2e2e2; }
.irc-fg98 { color: #fff; }
.irc-bg16 { background-color: #470000; }
.irc-bg17 { background-color: #472100; }
.irc-bg18 { background-color: #474700; }
.irc-bg19 { background-color: #324700; }
.irc-bg20 { background-color: #004700; }
.irc-bg21 { background-color: #00472c; }
.irc-bg22 { background-color: #004747; }
.irc-bg23 { background-color: #002747; }
.irc-bg24 { background-color: #000047; }
.irc-bg25 { background-color: #2e0047; }
.irc-bg26 { background-color: #470047; }
.irc-bg27 { background-color: #47002a; }
.irc-bg28 { background-color: #740000; }
.irc-bg29 { background-color: #743a00; }
.irc-bg30 { background-color: #747400; }
.irc-bg31 { background-color: #517400; }
.irc-bg32 { background-color: #007400; }
.irc-bg33 { background-color: #007449; }
.irc-bg34 { background-color: #007474; }
.irc-bg35 { background-color: #004074; }
.irc-bg36 { background-color: #000074; }
.irc-bg37 { background-color: #4b0074; }
.irc-bg38 { background-color: #740074; }
.irc-bg39 { background-color: #740045; }
.irc-bg40 { background-color: #b50000; }
.irc-bg41 { background-color: #b56300; }
.irc-bg42 { background-color: #b5b500; }
.irc-bg43 { background-color: #7db500; }
.irc-bg44 { background-color: #00b500; }
.irc-bg45 { background-color: #00b571; }
.irc-bg46 { background-color: #00b5b5; }
.irc-bg47 { background-color: #0063b5; }
.irc-bg48 { background-color: #0000b5; }
.irc-bg49 { background-color: #7500b5; }
.irc-bg50 { background-color: #b500b5; }
.irc-bg51 { background-color: #b5006b; }
.irc-bg52 { background-color: #f00; }
.irc-bg53 { background-color: #ff8c00; }
.irc-bg54 { background-color: #ff0; }
.irc-bg55 { background-color: #b2ff00; }
.irc-bg56 { background-color: #0f0; }
.irc-bg57 { background-color: #00ffa0; }
.irc-bg58 { background-color: #0ff; }
.irc-bg59 { background-color: #008cff; }
.irc-bg60 { background-color: #00f; }
.irc-bg61 { background-color: #a500ff; }
.irc-bg62 { background-color: #f0f; }
.irc-bg63 { background-color: #ff0098; }
.irc-bg64 { background-color: #ff5959; }
.irc-bg65 { background-color: #ffb459; }
.irc-bg66 { background-color: #ffff71; }
.irc-bg67 { background-color: #cfff60; }
.irc-bg68 { background-color: #6fff6f; }
.irc-bg69 { background-color: #65ffc9; }
.irc-bg70 { background-color: #6dffff; }
.irc-bg71 { background-color: #59b4ff; }
.irc-bg72 { background-color: #5959ff; }
.irc-bg73 { background-color: #c459ff; }
.irc-bg74 { background-color: #f6f; }
.irc-bg75 { background-color: #ff59bc; }
.irc-bg76 { background-color: #ff9c9c; }
.irc-bg77 { background-color: #ffd39c; }
.irc-bg78 { background-color: #ffff9c; }
.irc-bg79 { background-color: #e2ff9c; }
.irc-bg80 { background-color: #9cff9c; }
.irc-bg81 { background-color: #9cffdb; }
.irc-bg82 { background-color: #9cffff; }
.irc-bg83 { background-color: #9cd3ff; }
.irc-bg84 { background-color: #9c9cff; }
.irc-bg85 { background-color: #dc9cff; }
.irc-bg86 { background-color: #ff9cff; }
.irc-bg87 { background-color: #ff94d3; }
.irc-bg88 { background-color: #000; }
.irc-bg89 { background-color: #131313; }
.irc-bg90 { background-color: #282828; }
.irc-bg91 { background-color: #363636; }
.irc-bg92 { background-color: #4d4d4d; }
.irc-bg93 { background-color: #656565; }
.irc-bg94 { background-color: #818181; }
.irc-bg95 { background-color: #9f9f9f; }
.irc-bg96 { background-color: #bcbcbc; }
.irc-bg97 { background-color: #e2e2e2; }
.irc-bg98 { background-color: #fff; }
.irc-bold {
font-weight: bold;
}
.irc-underline {
text-decoration: underline;
}
.irc-strikethrough {
text-decoration: line-through;
}
.irc-italic {
font-style: italic;
}
.tooltipped::after {
font-size: 12px;
}
@media (min-width: 480px) {
/* Fade out for long usernames */
#chat .from {
padding-left: 10px;
}
#chat .from::after {
position: absolute;
right: 0;
bottom: 0;
width: 10px;
height: 100%;
background: linear-gradient(to right, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 1) 100%);
content: " ";
}
/* End fade out for long usernames */
}
@media (max-width: 768px) {
/**
* TODO Replace this with `@media (hover: hover)` when Firefox supports it
* See:
* - http://stackoverflow.com/a/28058919/1935861
* - http://caniuse.com/#feat=css-media-interaction
* - https://www.w3.org/TR/mediaqueries-4/
* - https://developer.mozilla.org/en-US/docs/Web/CSS/@media/hover
*/
.tooltipped-no-touch:hover::before,
.tooltipped-no-touch:hover::after {
visibility: hidden;
opacity: 0;
}
.container {
margin-top: 60px !important;
}
#sidebar button,
#sidebar .chan,
#sidebar .sign-out,
#sidebar .empty,
#windows label,
#windows .header .topic,
#settings .error,
#help .help-item,
#loading,
#context-menu,
#form #input,
.textcomplete-menu,
.messages .msg {
font-size: 15px;
}
#viewport {
height: 100%;
transition: transform 160ms, -webkit-transform 160ms;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
#viewport.menu-open {
-webkit-transform: translate3d(220px, 0, 0);
transform: translate3d(220px, 0, 0);
}
#viewport.menu-dragging {
transition: none !important;
}
#viewport.menu-open .messages {
pointer-events: none;
}
#sidebar,
#footer {
left: -220px;
}
#sidebar .empty::before {
margin-top: 0;
}
#main {
left: 0;
}
#chat .chat {
right: 0;
}
#viewport .lt,
#viewport .channel .rt {
display: block;
}
#windows .window .header {
display: block;
}
#chat .channel .chat {
right: 0;
}
#chat .sidebar {
right: -180px;
}
#viewport.rt #chat .sidebar {
right: 0;
}
#chat .title::before {
display: none;
}
}
@media (max-width: 479px) {
.container {
margin: 10px 0 !important;
}
#connect .tls {
margin: 20px 0;
}
#windows .input {
margin-bottom: 2px;
}
#chat .messages {
display: block;
padding: 5px 10px;
}
#chat .msg {
display: block;
padding: 2px 0;
}
#chat .time,
#chat .from,
#chat .content {
border: 0;
display: inline;
padding: 0;
}
#chat .condensed-summary .time,
#chat .condensed-summary .from {
display: none;
}
#chat .date-marker,
#chat .unread-marker {
margin: 0;
}
#help .help-item .subject {
display: inline-block;
padding-bottom: 4px;
}
#help .help-item .description {
display: block;
}
}
::-webkit-scrollbar {
width: 8px;
background-color: rgba(0, 0, 0, 0);
}
::-webkit-scrollbar:hover {
background-color: rgba(0, 0, 0, 0.09);
}
::-webkit-scrollbar-thumb:vertical {
background: rgba(0, 0, 0, 0.5);
border-radius: 100px;
}
::-webkit-scrollbar-thumb:vertical:active {
background: rgba(0, 0, 0, 0.6);
}
/* Image viewer */
#image-viewer,
#image-viewer .close-btn {
/* Vertically and horizontally center stuff */
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
#image-viewer {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: black;
visibility: hidden;
opacity: 0;
transition: opacity 0.2s, visibility 0.2s;
z-index: 999;
}
#image-viewer.opened {
visibility: visible;
opacity: 1;
}
#image-viewer .close-btn,
#image-viewer .previous-image-btn,
#image-viewer .next-image-btn {
position: fixed;
top: 0;
width: 2em;
font-size: 36px;
color: white;
opacity: 0.6;
transition: 0.2s opacity;
}
#image-viewer .close-btn {
right: 0;
height: 2em;
z-index: 1002;
}
#image-viewer .close-btn::before {
content: "×";
}
#image-viewer .previous-image-btn,
#image-viewer .next-image-btn {
bottom: 0;
z-index: 1001;
}
#image-viewer .previous-image-btn {
left: 0;
}
#image-viewer .next-image-btn {
right: 0;
}
#image-viewer .close-btn:hover,
#image-viewer .previous-image-btn:hover,
#image-viewer .next-image-btn:hover {
opacity: 1;
}
#image-viewer .image-link {
margin: 10px;
}
#image-viewer .image-link:hover {
opacity: 1;
}
#image-viewer .image-link img {
max-width: 100%;
/* Top/Bottom margins + button height + image/button margin */
max-height: calc(100vh - 2 * 10px - 37px - 10px);
/* Checkered background for transparent images */
background-position: 0 0, 10px 10px;
background-size: 20px 20px;
background-image:
linear-gradient(45deg, #eee 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, #eee 75%, #eee 100%),
linear-gradient(45deg, #eee 25%, #fff 25%, #fff 75%, #eee 75%, #eee 100%);
}
#image-viewer .open-btn {
margin: 0 auto 10px;
}
/* Correctly handle multiple successive whitespace characters.
For example: user has quit ( ===> L O L <=== ) */
#windows .header .topic,
#chat .message .text,
#chat .motd .text,
#chat .notice .text,
#chat .ctcp-message,
#chat .part-reason,
#chat .quit-reason,
#chat .new-topic,
#chat .action .text,
#chat table.channel-list .topic {
white-space: pre-wrap;
}