From 457eabf23f6c1b329798d33a3bfb51c7f31119d1 Mon Sep 17 00:00:00 2001 From: Simon Eisenmann Date: Thu, 19 Feb 2015 19:12:15 +0100 Subject: [PATCH 1/2] Contacts can now be disabled on server module level (server.conf). --- server.conf.in | 1 + .../spreed-webrtc-server/channelling_api.go | 13 +++- src/app/spreed-webrtc-server/config.go | 64 ++++++++++++------- src/styles/global/_withs.scss | 38 +++++++++++ src/styles/main.scss | 1 + static/css/main.min.css | 2 +- static/js/directives/buddylist.js | 3 + static/js/directives/menu.js | 9 +-- static/js/services/contacts.js | 25 ++++++-- static/js/services/modules.js | 38 +++++++++++ static/js/services/services.js | 9 ++- static/partials/buddy.html | 2 +- static/partials/menu.html | 2 +- 13 files changed, 163 insertions(+), 44 deletions(-) create mode 100644 src/styles/global/_withs.scss create mode 100644 static/js/services/modules.js diff --git a/server.conf.in b/server.conf.in index 8c562913..e6b143d3 100644 --- a/server.conf.in +++ b/server.conf.in @@ -124,6 +124,7 @@ serverRealm = local ;screensharing = true ;youtube = true ;presentation = true +;contacts = true [log] ;logfile = /var/log/spreed-webrtc-server.log diff --git a/src/app/spreed-webrtc-server/channelling_api.go b/src/app/spreed-webrtc-server/channelling_api.go index e3cbce04..1248c867 100644 --- a/src/app/spreed-webrtc-server/channelling_api.go +++ b/src/app/spreed-webrtc-server/channelling_api.go @@ -139,6 +139,9 @@ func (api *channellingAPI) OnIncoming(c ResponseSender, session *Session, msg *D } } else { if msg.Chat.Chat.Status != nil && msg.Chat.Chat.Status.ContactRequest != nil { + if !api.Config.WithModule("contacts") { + return + } if err := api.contactrequestHandler(session, msg.Chat.To, msg.Chat.Chat.Status.ContactRequest); err != nil { log.Println("Ignoring invalid contact request.", err) return @@ -173,10 +176,14 @@ func (api *channellingAPI) OnIncoming(c ResponseSender, session *Session, msg *D var users []*DataSession switch msg.Sessions.Sessions.Type { case "contact": - if userID, err := api.getContactID(session, msg.Sessions.Sessions.Token); err == nil { - users = api.GetUserSessions(session, userID) + if api.Config.WithModule("contacts") { + if userID, err := api.getContactID(session, msg.Sessions.Sessions.Token); err == nil { + users = api.GetUserSessions(session, userID) + } else { + log.Printf(err.Error()) + } } else { - log.Printf(err.Error()) + log.Printf("Incoming contacts session request with contacts disabled") } case "session": id, err := session.attestation.Decode(msg.Sessions.Sessions.Token) diff --git a/src/app/spreed-webrtc-server/config.go b/src/app/spreed-webrtc-server/config.go index 1831579b..0e250c61 100644 --- a/src/app/spreed-webrtc-server/config.go +++ b/src/app/spreed-webrtc-server/config.go @@ -31,26 +31,27 @@ import ( ) type Config struct { - Title string // Title - ver string // Version (not exported to Javascript) - S string // Static URL prefix with version - B string // Base URL - Token string // Server token - StunURIs []string // STUN server URIs - TurnURIs []string // TURN server URIs - Tokens bool // True when we got a tokens file - Version string // Server version number - UsersEnabled bool // Flag if users are enabled - UsersAllowRegistration bool // Flag if users can register - UsersMode string // Users mode string - DefaultRoomEnabled bool // Flag if default room ("") is enabled - Plugin string // Plugin to load - AuthorizeRoomCreation bool // Whether a user account is required to create rooms - AuthorizeRoomJoin bool // Whether a user account is required to join rooms - Modules []string // List of enabled modules - globalRoomID string // Id of the global room (not exported to Javascript) - contentSecurityPolicy string // HTML content security policy - contentSecurityPolicyReportOnly string // HTML content security policy in report only mode + Title string // Title + ver string // Version (not exported to Javascript) + S string // Static URL prefix with version + B string // Base URL + Token string // Server token + StunURIs []string // STUN server URIs + TurnURIs []string // TURN server URIs + Tokens bool // True when we got a tokens file + Version string // Server version number + UsersEnabled bool // Flag if users are enabled + UsersAllowRegistration bool // Flag if users can register + UsersMode string // Users mode string + DefaultRoomEnabled bool // Flag if default room ("") is enabled + Plugin string // Plugin to load + AuthorizeRoomCreation bool // Whether a user account is required to create rooms + AuthorizeRoomJoin bool // Whether a user account is required to join rooms + Modules []string // List of enabled modules + modulesTable map[string]bool // Map of enabled modules + globalRoomID string // Id of the global room (not exported to Javascript) + contentSecurityPolicy string // HTML content security policy + contentSecurityPolicyReportOnly string // HTML content security policy in report only mode } func NewConfig(container phoenix.Container, tokens bool) *Config { @@ -88,11 +89,18 @@ func NewConfig(container phoenix.Container, tokens bool) *Config { trimAndRemoveDuplicates(&turnURIs) // Get enabled modules. - allModules := []string{"screensharing", "youtube", "presentation"} - modules := allModules[:0] - for _, module := range allModules { + modulesTable := map[string]bool{ + "screensharing": true, + "youtube": true, + "presentation": true, + "contacts": true, + } + modules := []string{} + for module, _ := range modulesTable { if container.GetBoolDefault("modules", module, true) { modules = append(modules, module) + } else { + modulesTable[module] = false } } log.Println("Enabled modules:", modules) @@ -115,6 +123,7 @@ func NewConfig(container phoenix.Container, tokens bool) *Config { AuthorizeRoomCreation: container.GetBoolDefault("app", "authorizeRoomCreation", false), AuthorizeRoomJoin: container.GetBoolDefault("app", "authorizeRoomJoin", false), Modules: modules, + modulesTable: modulesTable, globalRoomID: container.GetStringDefault("app", "globalRoom", ""), contentSecurityPolicy: container.GetStringDefault("app", "contentSecurityPolicy", ""), contentSecurityPolicyReportOnly: container.GetStringDefault("app", "contentSecurityPolicyReportOnly", ""), @@ -125,6 +134,15 @@ func (config *Config) Get(request *http.Request) (int, interface{}, http.Header) return 200, config, http.Header{"Content-Type": {"application/json; charset=utf-8"}} } +func (config *Config) WithModule(m string) bool { + + if val, ok := config.modulesTable[m]; ok && val { + return true + } + return false + +} + // Helper function to clean up string arrays. func trimAndRemoveDuplicates(data *[]string) { found := make(map[string]bool) diff --git a/src/styles/global/_withs.scss b/src/styles/global/_withs.scss new file mode 100644 index 00000000..5bcd2c9c --- /dev/null +++ b/src/styles/global/_withs.scss @@ -0,0 +1,38 @@ +/* + * Spreed WebRTC. + * Copyright (C) 2013-2014 struktur AG + * + * This file is part of Spreed WebRTC. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +.visible-with-contacts, .visible-with-contacts-inline { + display: none; +} +.hidden-with-contacts { +} + +.with-contacts { + .visible-with-contacts { + display: block; + } + .visible-with-contacts-inline { + display: inline-block; + } + .hidden-with-contacts { + display: none; + } +} \ No newline at end of file diff --git a/src/styles/main.scss b/src/styles/main.scss index 47705b1f..4ec5bbc4 100644 --- a/src/styles/main.scss +++ b/src/styles/main.scss @@ -33,6 +33,7 @@ @import "global/nicescroll"; @import "global/animations"; @import "global/overlaybar"; +@import "global/withs"; @import "components/rightslide"; @import "components/bar"; diff --git a/static/css/main.min.css b/static/css/main.min.css index fda27d75..c587dc1e 100644 --- a/static/css/main.min.css +++ b/static/css/main.min.css @@ -17,4 +17,4 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - *//*! HiDPI v2.0.1 | MIT License | git.io/hidpi */.toast-title{font-weight:bold}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#ffffff}.toast-message a:hover{color:#cccccc;text-decoration:none}.toast-close-button{position:relative;right:-0.3em;top:-0.3em;float:right;font-size:20px;font-weight:bold;color:#ffffff;-webkit-text-shadow:0 1px 0 #ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:hover,.toast-close-button:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-webkit-box-shadow:0 0 12px #999999;box-shadow:0 0 12px #999999;color:#ffffff;opacity:0.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>:hover{-webkit-box-shadow:0 0 12px #000000;box-shadow:0 0 12px #000000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important}#toast-container.toast-top-center>div,#toast-container.toast-bottom-center>div{width:300px;margin:auto}#toast-container.toast-top-full-width>div,#toast-container.toast-bottom-full-width>div{width:96%;margin:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000000;opacity:0.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width: 240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width: 241px) and (max-width: 480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width: 481px) and (max-width: 768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}.dialog-header-error{background-color:#d2322d}.dialog-header-wait{background-color:#428bca}.dialog-header-notify{background-color:#eee}.dialog-header-confirm{background-color:#eee}.dialog-header-error span,.dialog-header-error h4,.dialog-header-wait span,.dialog-header-wait h4{color:#fff}.modal-content{overflow:hidden}.modal-content .modal-body{min-height:160px}[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak{display:none !important}html,body{-webkit-background-clip:padding-box;background-clip:padding-box;background-color:#e5e5e5;height:100%}body{margin:0;max-height:100%;max-width:100%;overflow:hidden;padding:0}a{cursor:pointer}#background{background:url("../img/bg-tiles.jpg");bottom:0;left:0;position:fixed;right:0;top:0;z-index:0}@media (-webkit-min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx){#background{background-image:url("../img/bg-tiles_x2.jpg");-webkit-background-size:198px 200px;background-size:198px 200px}}.help-block{color:#737373}.dialog-header-notify,.dialog-header-confirm{background-color:#eee}.desktopnotify-icon{background-image:url("../img/logo-48x48.png")}#loader{background:url("../img/logo.svg") no-repeat center;-webkit-background-size:contain;background-size:contain;bottom:15%;left:15%;max-width:200px;max-height:150px;margin:auto;opacity:1;pointer-events:none;position:fixed;right:15%;top:15%;z-index:20000;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:.5s;transition-duration:.5s}#loader.done{opacity:0}#loader>div{color:#ddd;display:block;font-size:2em;left:0;margin:0 auto;right:0;position:absolute;bottom:0px;margin-bottom:-40px;text-align:center;text-shadow:0 0 5px black}#loader .loader-message{font-size:0.5em}.mainview{bottom:0;display:none;left:0px;position:absolute;right:0;top:51px}@media (max-width: 700px){.mainview{left:0px}}.videolayoutSmally .mainview{left:150px}.videolayoutClassroom .mainview{left:360px}.withChat .mainview,.withBuddylist .mainview{right:260px}.withBuddylist.withChat .mainview{right:520px}#page{bottom:0;left:0;position:absolute;right:0;top:51px}.welcome{color:#aaa;font-size:1.1em;margin-top:80px;text-shadow:0 0 5px black;max-width:600px;min-height:160px;padding-left:105px;padding-right:0px;position:relative}@media (max-width: 700px){.welcome{padding-left:10px;padding-right:20px;margin:0 auto}}.welcome h1{margin-top:0px;white-space:nowrap}@media (max-width: 700px){.welcome h1{white-space:normal}}.welcome .welcome-container{margin:0 auto}.welcome .welcome-logo{position:absolute;left:0px;top:1px;bottom:0px;width:90px;background:url("../img/logo.svg") no-repeat left top;-webkit-background-size:contain;background-size:contain}@media (max-width: 700px){.welcome .welcome-logo{position:relative;height:70px;width:70px;margin-top:30px;margin-bottom:20px}}.welcome .welcome-input{position:relative}.welcome .welcome-input input{padding-right:105px}.welcome .welcome-input-buttons{text-shadow:none;position:absolute;top:6px;right:8px}.welcome .welcome-input-buttons a{padding-right:.5em;color:black;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.welcome .room-link{margin-top:-10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.welcome .room-link a{color:#aaa}.welcome .rooms-history{margin-top:3em}.welcome .rooms-history a{margin-right:.5em;display:inline-block}.welcome .rooms-history a:hover{text-decoration:none}.nicescroll::-webkit-scrollbar{background-color:#e5e5e5;border:solid transparent;height:8px;width:8px}.nicescroll::-webkit-scrollbar:hover{background-color:#e5e5e5;border-left:1px solid rgba(0,0,0,0.12);border-right:1px solid rgba(0,0,0,0.12)}.nicescroll::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.2)}.nicescroll::-webkit-scrollbar-thumb:active{background:rgba(0,0,0,0.4)}.fadetogglecontainer>div{position:absolute;width:100%}.animate-show.ng-hide-add{opacity:1;display:block !important;-webkit-transition:all linear 0.5s;transition:all linear 0.5s}.animate-show.ng-hide-add.ng-hide-add-active{opacity:0}.animate-show.ng-hide-remove{opacity:0;display:block !important;-webkit-transition:all linear 0.5s;transition:all linear 0.5s}.animate-show.ng-hide-remove.ng-hide-remove-active{opacity:1}.overlaybar{background:rgba(0,0,0,0.2);color:#e7e7e7;min-height:36px;padding:3px 8px 0 30px;position:absolute;text-shadow:0 0 5px black;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;border-bottom:1px solid #222;border-top:1px solid #222}.overlaybar:hover{background:rgba(0,0,0,0.5)}.overlaybar .btn{text-shadow:none}.overlaybar .btn-link{text-shadow:0 0 5px black}.overlaybar .form-group>*{float:left;padding-top:0}.overlaybar input[type="radio"],.overlaybar input[type="checkbox"]{margin-top:2px}.overlaybar label{padding-top:6px !important}.overlaybar.notvisible{background:transparent;pointer-events:none;border-bottom:1px solid transparent;border-top:1px solid transparent}.overlaybar.notvisible:hover{background:transparent}.overlaybar.notvisible .overlaybar-content{display:none}.overlaybar.notvisible .overlaybar-overlay{display:block}.overlaybar .overlaybar-button{color:#e7e7e7;display:block;font-size:20px;top:0px;left:3px;opacity:.7;padding:4px 6px;position:absolute;pointer-events:auto;vertical-align:middle;z-index:15}.overlaybar .overlaybar-content{display:inline-block;margin-left:.5em;margin-bottom:0;max-width:60%}.overlaybar .overlaybar-content>*{padding-right:.5em}.overlaybar .overlaybar-content .input-group{max-width:160px}.overlaybar .overlaybar-overlay{display:none;margin-left:.5em;opacity:.7;padding-top:2px;text-align:left}#rightslide{bottom:0;left:0;pointer-events:none;position:absolute;right:-260px;top:51px;-webkit-transition:right 200ms ease-in-out;transition:right 200ms ease-in-out;z-index:5}.withBuddylist #rightslide{right:0}#rightslide .rightslidepane{height:100%;position:relative;width:100%}.bar{background:#f8f8f8;color:#262626;font:bold 1em/50px "Helvetica Neue",Helvetica,Arial,sans-serif;text-align:center;touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:60}.bar .left{padding:5px 5px 5px 15px}.bar .left .logo{background:url("../img/logo-small.png") no-repeat;-webkit-background-size:100%;background-size:100%;display:inline-block;color:black;height:32px;width:90px;font:normal 11px/11px "Helvetica Neue",Helvetica,Arial,sans-serif;text-align:left;vertical-align:middle}.bar .left .logo span{font-style:italic;left:38px;position:relative;top:26px}.bar .left .logo span a{color:#222}@media (max-width: 700px){.bar .left .logo{background:url("../img/logo.svg") no-repeat center;width:46px;height:46px}.bar .left .logo span{display:none}}@media (max-width: 700px){.bar .left{padding:2px 5px 0px 11px}}.bar .middle{position:absolute;left:0px;right:60px;top:0px;pointer-events:none;text-align:center}.bar .middle>span{display:inline-block;background:#f8f8f8;min-height:50px;pointer-events:auto}.bar .middle .userpicture{border-radius:2px;display:inline-block;width:46px;height:46px;margin:-1px .5em 0 .5em}@media (max-width: 700px){.bar .middle .userpicture{display:none}}@media (max-width: 700px){.bar .middle .status-connected,.bar .middle .status-conference,.bar .middle .status-connecting,.bar .middle .status-closed,.bar .middle .status-reconnecting,.bar .middle .status-error,.bar .middle .status-ringing{max-width:100%;left:0;position:absolute;right:0}}.bar .right{padding-right:4px;margin-top:-1px}.bar .right .badge{background-color:#84b819;border:1px solid white;font-size:.4em;position:absolute;right:0;top:2px}.bar .right .btn{background:#e9e9e9;border-color:#e2e2e2;color:#333;height:42px;font:24px/40px "Helvetica Neue",Helvetica,Arial,sans-serif;margin-left:-2px;padding:0;text-align:center;width:42px;position:relative}.bar .right .btn:focus{border:none;outline:none;-webkit-box-shadow:0;box-shadow:0}.bar .right .btn:hover{background-color:transparent;border-color:#e7e7e7;color:#666}.bar .right .btn.active{background-color:transparent;border-color:#e7e7e7;color:#666}.bar .right .btn.active.amutebtn{background-color:#db4f39;border-color:#db4f39;color:white}.bar .right .btn.active.aenablebtn{background-color:#84b819;border-color:#84b819;color:white}.bar .right .btn-mutemicrophone i:before{content:"\f130"}.bar .right .btn-mutemicrophone.active i:before{content:"\f131"}.bar .right .btn-mutecamera i:before{content:"\f06e"}.bar .right .btn-mutecamera.active i:before{content:"\f070"}@-webkit-keyframes shakeityeah{0%{-webkit-transform:translate(2px, 1px) rotate(0deg);transform:translate(2px, 1px) rotate(0deg)}2%{-webkit-transform:translate(-1px, -2px) rotate(-1deg);transform:translate(-1px, -2px) rotate(-1deg)}4%{-webkit-transform:translate(-3px, 0px) rotate(1deg);transform:translate(-3px, 0px) rotate(1deg)}8%{-webkit-transform:translate(0px, 2px) rotate(0deg);transform:translate(0px, 2px) rotate(0deg)}10%{-webkit-transform:translate(1px, -1px) rotate(1deg);transform:translate(1px, -1px) rotate(1deg)}12%{-webkit-transform:translate(-1px, 2px) rotate(-1deg);transform:translate(-1px, 2px) rotate(-1deg)}14%{-webkit-transform:translate(-3px, 1px) rotate(0deg);transform:translate(-3px, 1px) rotate(0deg)}16%{-webkit-transform:translate(2px, 1px) rotate(-1deg);transform:translate(2px, 1px) rotate(-1deg)}18%{-webkit-transform:translate(-1px, -1px) rotate(1deg);transform:translate(-1px, -1px) rotate(1deg)}20%{-webkit-transform:translate(2px, 2px) rotate(0deg);transform:translate(2px, 2px) rotate(0deg)}22%{-webkit-transform:translate(1px, -2px) rotate(-1deg);transform:translate(1px, -2px) rotate(-1deg)}24%{-webkit-transform:translate(0px, 0px) rotate(0deg);transform:translate(0px, 0px) rotate(0deg)}}@keyframes shakeityeah{0%{-webkit-transform:translate(2px, 1px) rotate(0deg);transform:translate(2px, 1px) rotate(0deg)}2%{-webkit-transform:translate(-1px, -2px) rotate(-1deg);transform:translate(-1px, -2px) rotate(-1deg)}4%{-webkit-transform:translate(-3px, 0px) rotate(1deg);transform:translate(-3px, 0px) rotate(1deg)}8%{-webkit-transform:translate(0px, 2px) rotate(0deg);transform:translate(0px, 2px) rotate(0deg)}10%{-webkit-transform:translate(1px, -1px) rotate(1deg);transform:translate(1px, -1px) rotate(1deg)}12%{-webkit-transform:translate(-1px, 2px) rotate(-1deg);transform:translate(-1px, 2px) rotate(-1deg)}14%{-webkit-transform:translate(-3px, 1px) rotate(0deg);transform:translate(-3px, 1px) rotate(0deg)}16%{-webkit-transform:translate(2px, 1px) rotate(-1deg);transform:translate(2px, 1px) rotate(-1deg)}18%{-webkit-transform:translate(-1px, -1px) rotate(1deg);transform:translate(-1px, -1px) rotate(1deg)}20%{-webkit-transform:translate(2px, 2px) rotate(0deg);transform:translate(2px, 2px) rotate(0deg)}22%{-webkit-transform:translate(1px, -2px) rotate(-1deg);transform:translate(1px, -2px) rotate(-1deg)}24%{-webkit-transform:translate(0px, 0px) rotate(0deg);transform:translate(0px, 0px) rotate(0deg)}}.btn-shakeityeah{-webkit-animation-name:shakeityeah;animation-name:shakeityeah;-webkit-animation-duration:4.0s;animation-duration:4.0s;-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#buddylist{bottom:0;position:absolute;right:0;top:0;width:285px;z-index:50}#buddylist:before{background:#f8f8f8;border-left:1px solid #e7e7e7;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;border-top-left-radius:6px;border-bottom-left-radius:6px;bottom:0;color:rgba(0,0,0,0.3);content:"\f100";cursor:pointer;display:none;font-family:FontAwesome;font-size:1.8em;height:55px;left:0;line-height:55px;margin:auto;pointer-events:auto;position:absolute;text-align:center;top:0;width:26px;z-index:1;padding-right:4px}.withBuddylist #buddylist:before{content:"\f101";padding-right:0px}.withBuddylistAutoHide #buddylist:before{display:block}.buddylist{background:#f8f8f8;border-left:1px solid #e7e7e7;bottom:0;left:25px;overflow-x:hidden;overflow-y:auto;pointer-events:auto;position:absolute;right:0;top:0}.buddylist.loading .buddylistloading{display:block}.buddylist.empty .buddylistempty{display:block}.buddylist .buddycontainer{pointer-events:auto;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.buddylist .buddylistempty{bottom:0;color:#b3b3b3;display:none;font-size:1.4em;height:2em;left:0;margin:auto;padding:.4em;position:absolute;right:0;text-align:center;top:0}.buddylist .buddylistloading{bottom:0;color:#b3b3b3;display:none;font-size:1.4em;height:2em;margin:auto;padding:.4em;position:absolute;right:0;text-align:center}.buddy{background:#fff;border-bottom:1px solid #e7e7e7;cursor:pointer;display:block;font-size:13px;min-height:66px;overflow:hidden;position:relative;text-align:left;width:100%;-webkit-tap-highlight-color:transparent}.buddy:hover{background:rgba(255,255,255,0.5)}.buddy.withSubline .buddy1,.buddy.contact .buddy1{top:15px}.buddy.withSubline .buddy2,.buddy.contact .buddy2{display:block}.buddy.hovered .buddyactions{right:0}.buddy .fa.contact:before{content:"\f006"}.buddy.contact .fa.contact:before{content:"\f005"}.buddy.isself .fa.contact:before{content:"\f192"}.buddy .buddyPicture{background:#84b819;border-radius:2px;float:left;height:46px;margin:10px;overflow:hidden;position:relative;text-align:center;width:46px}.buddy .buddyPicture .fa{color:#009534;line-height:46px;font-size:3em}.buddy .buddyPicture img{bottom:0;display:block;left:0;position:absolute;right:0;top:0;max-height:100%;max-width:100%}.buddy .buddyPictureSmall{margin:0px;margin-left:0px;height:30px;width:30px;margin-right:0px}.buddy .buddyPictureSmall .fa{line-height:30px;font-size:2em}.buddy .buddy1{color:#262626;font-weight:bold;font-size:14px;height:28px;left:65px;position:absolute;overflow:hidden;right:4px;text-overflow:ellipsis;top:24px;white-space:nowrap}.buddy .buddy2{color:rgba(0,0,0,0.5);left:65px;overflow:hidden;position:absolute;right:0px;top:33px;white-space:nowrap;display:none}.buddy .buddy3{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left;vertical-align:middle;display:inline-block;width:120px;padding:0px 6px}.buddy .buddyactions{background:rgba(255,255,255,0.5);height:66px;line-height:66px;position:absolute;right:-125px;padding:0 10px;text-align:right;top:0px;-webkit-transition-property:right;transition-property:right;-webkit-transition-duration:.3s;transition-duration:.3s;white-space:nowrap;z-index:5}.buddy .buddyactions .btn{width:42px;height:40px;padding:0px;text-align:center;vertical-align:middle;line-height:40px;font-size:1.6em}.buddy .buddysessions{margin-top:56px;max-height:0px;margin-bottom:10px;-webkit-transition-property:max-height;transition-property:max-height;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-delay:.1s;transition-delay:.1s}.buddy .buddysessions ul{padding-top:10px;margin:0 14px;padding-left:0px;border-left:1px dotted #e7e7e7;border-right:1px dotted #e7e7e7}.buddy .buddysessions ul li{margin-bottom:2px;margin-left:0px;list-style-type:none}.buddy .buddysessions ul li .btn-group{visibility:hidden}.buddy .buddysessions ul li:hover .btn-group{visibility:visible}.buddy .buddysessions .currentsession .buddy3{font-weight:bold}.buddy.hovered .buddysessions{max-height:999px}.buddyPictureCapture .picture{display:block;margin-bottom:5px}.buddyPictureCapture .videoPicture{margin-bottom:4px}.buddyPictureCapture .videoPicture .videoPictureVideo{background-color:black;overflow:hidden;position:relative}.buddyPictureCapture .videoPicture video{object-fit:cover}.buddyPictureCapture .videoPictureVideo{width:200px;height:200px}.buddyPictureCapture .videoPictureVideo .videoPrev,.buddyPictureCapture .videoPictureVideo video,.buddyPictureCapture .videoPictureVideo .preview{width:100%;height:100%}.buddyPictureCapture .videoFlash{position:absolute;left:0px;right:0px;top:0px;bottom:0px;background-color:white;border:1px dotted #e7e7e7;visibility:hidden;z-index:5}.buddyPictureCapture .videoFlash.flash{visibility:visible}.buddyPictureCapture .preview{left:0;position:absolute;top:0}.buddyPictureCapture .preview.previewPicture{position:relative}.buddyPictureCapture .btn-takePicture,.buddyPictureCapture .btn-retakePicture{left:0px;right:0px;position:absolute;top:50%;margin:0 auto;max-width:40%}.buddyPictureCapture .btn-retakePicture{visibility:hidden}.buddyPictureCapture .videoPictureVideo:hover .btn-retakePicture{visibility:visible}.buddyPictureCapture .countdownPicture{color:#f8f8f8;font-size:45px;left:0px;right:0px;position:absolute;top:75px;margin:0 auto;text-align:center;text-shadow:0 0 5px black;opacity:0.8}.buddyPictureUpload{position:relative}.buddyPictureUpload .loader{position:absolute;z-index:1;left:90px}.buddyPictureUpload .loader .fa-spin{color:#737373}.buddyPictureUpload>p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.buddyPictureUpload .showUploadPicture{position:relative;border:1px solid #e7e7e7;height:200px;line-height:200px;margin-bottom:10px;overflow:hidden;text-align:center;width:200px;background-color:#f8f8f8;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.buddyPictureUpload .showUploadPicture.imgData{background-color:black}.buddyPictureUpload .showUploadPicture.imgData .chooseUploadPicture{display:none}.buddyPictureUpload .showUploadPicture .chooseUploadPicture{color:#737373;position:absolute;z-index:1;left:0px;right:0px;margin:0 auto}.buddyPictureUpload .showUploadPicture .fa{color:#f8f8f8;text-shadow:0 0 5px black;opacity:0.8}.buddyPictureUpload .preview{position:relative;top:0px;left:0px}.buddyPictureUpload .imageUtilites{line-height:30px;position:absolute;visibility:hidden;width:200px;z-index:1}.buddyPictureUpload .imageUtilites .fa{cursor:pointer;font-size:40px;width:50px;height:50px}.buddyPictureUpload .showUploadPicture.imgData:hover .imageUtilites{visibility:visible}.buddyPictureUpload .moveHorizontal{top:-4px;position:relative}.buddyPictureUpload .moveVertical{position:absolute;left:158px}.buddyPictureUpload .resize{position:relative;top:108px}#settings{border-left:1px solid #e7e7e7;background:#fff;bottom:0;padding-right:20px;position:fixed;right:-520px;top:51px;-webkit-transition:right 200ms ease-in-out;transition:right 200ms ease-in-out;width:520px;z-index:50}#settings.show{right:0}@media only screen and (max-width: 630px){#settings.show{background:#fff;left:0;width:auto}}@media only screen and (max-width: 630px){#settings.show .form-actions{bottom:0;height:60px;left:0;margin-bottom:0;padding:6px 0 6px 120px;position:fixed;right:0}}.settings{background:#fff;bottom:0;left:0;overflow-x:hidden;overflow-y:auto;padding:10px;position:absolute;right:0;top:0}.settings .version{color:#ccc;font-size:10px;position:absolute;right:10px;top:10px}@media only screen and (max-width: 630px){.settings .form-horizontal .controls{margin-left:110px}}@media only screen and (max-width: 630px){.settings .form-horizontal .control-label{width:100px;word-wrap:break-word}}@media only screen and (max-width: 630px){.settings{padding-bottom:10px}}settings-advanced{padding-top:15px;display:block}#chat{pointer-events:none;position:absolute;bottom:0px;right:260px;top:0px;width:260px;min-width:260px;z-index:45;opacity:0}.withChat #chat{opacity:1}.withChat.withChatMaximized #chat{left:0;width:auto}.withChat .chat{pointer-events:auto}.chatcontainer{background:#f8f8f8;bottom:0px;left:0px;right:0px;top:0px;overflow:hidden;position:absolute}.showchatlist .chatpane{right:100%}.showchatlist .chatlist{left:0}.chatlist{background:#f8f8f8;bottom:0;left:100%;position:absolute;top:0;width:100%}.chatlist .list-group{margin-top:-1px;margin-bottom:-1px;max-height:100%;overflow-x:hidden;overflow-y:auto}.chatlist .list-group-item{border-right:none;border-left:none;border-radius:0;padding-right:70px;position:relative;min-height:51px;line-height:26px}.chatlist .list-group-item.newmessage{-webkit-animation:newmessage 1s ease -0.3s infinite;animation:newmessage 1s ease -0.3s infinite}.chatlist .list-group-item.disabled{color:#aaa}.chatlist .list-group-item:hover button{display:inline}.chatlist .list-group-item .fa-lg{display:inline-block;text-align:center;width:18px}.chatlist .list-group-item .badge{background:#84b819;border:1px solid white;position:absolute;right:50px;top:14px}.chatlist .list-group-item button{display:none;position:absolute;right:10px}.chatpane{-webkit-backface-visibility:hidden;backface-visibility:hidden;bottom:0;position:absolute;right:0;top:0;width:100%}.chat{background:#f8f8f8;display:none;bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0}.chat.active.visible{display:block}.chatmenu{position:absolute;top:36px;left:0px;right:0px;height:36px;padding:2px 4px}@media (max-height: 210px){.chatmenu{display:none}}.chatbody{border-left:1px solid #e7e7e7;bottom:-1px;left:0;position:absolute;right:0;top:74px}@media (max-height: 210px){.chatbody{border-top:1px solid #e7e7e7;top:0px}}.chatheader{background:rgba(255,255,255,0.9);border-bottom:1px solid #e7e7e7;border-left:1px solid #e7e7e7;height:36px;left:0;line-height:34px;padding:0 4px 0 8px;position:absolute;right:0;top:0}.chatheader .chatstatusicon{cursor:pointer;display:block;font-size:1.4em;height:36px;left:0;position:absolute;text-align:center;top:0;width:36px}.chatheader .chatheadertitle{display:inline;padding-left:28px}.chatheader .ctrl{color:rgba(0,0,0,0.3);position:absolute;right:1px;top:0}.chatheader .ctrl .fa{cursor:pointer;padding:6px}.chatheader span{display:inline-block;max-width:60%;overflow:hidden;pointer-events:none;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}@media (max-height: 210px){.chatheader{display:none}}.chat .outputbox{bottom:75px;left:0;position:absolute;right:0;top:0}@media (max-height: 210px){.chat .outputbox{bottom:45px}}.chat .output{height:100%;overflow-x:hidden;overflow-y:auto;padding:0.4em 0}.chat .output>i{clear:both;color:#aaa;display:block;font-size:.8em;padding:6px 0;text-align:center}.chat .output>i.p2p{font-weight:bold;padding:6px 0}.chat.with_pictures .message.is_self{padding-right:54px}.chat.with_pictures .message.is_self .timestamp{right:58px}.chat.with_pictures .message.is_remote{padding-left:58px}.chat .message{background:#fff;border:1px solid transparent;border-radius:6px;clear:both;display:block;margin:0 4px 2px 18px;padding:8px;position:relative;word-wrap:break-word;-webkit-box-shadow:0px 0px 2px 0px rgba(0,0,0,0.03);box-shadow:0px 0px 2px 0px rgba(0,0,0,0.03)}.chat .message ul{list-style-type:none;margin:0;padding-left:0}.chat .message li{line-height:1.1em;margin:4px 0;padding-left:1.2em;position:relative}.chat .message li:before{color:#ccc;content:'\f075';font-family:FontAwesome;left:0;position:absolute;text-align:center;width:12px}.chat .message .timestamp{color:#aaa;font-size:.8em;position:absolute;right:8px;text-align:right;top:8px}.chat .message .timestamp-space{width:40px;height:10px;float:right}.chat .message strong{display:block;padding-bottom:2px;margin-right:40px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat .message.is_self li:before{color:#ccc;-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.chat .message li.unread:before{content:"";color:#FE9A2E}.chat .message li.sending:before{content:"";color:#ccc}.chat .message li.sent:before{content:"";color:#5882FA}.chat .message li.delivered:before{content:"";color:#5882FA}.chat .message li.received:before{content:"";color:#84b819}.chat .message li.read:before{content:"";color:#ccc}.chat .message.is_self .buddyPicture{left:auto;right:4px}.chat .message .buddyPicture{background:#84b819;border-radius:2px;height:46px;left:4px;overflow:hidden;position:absolute;text-align:center;top:4px;width:46px;z-index:0}.chat .message .buddyPicture .fa{color:#009534;line-height:46px}.chat .message .buddyPicture img{display:block;bottom:0;left:0;right:0;position:absolute;top:0;max-height:100%;max-width:100%}.chat .message:before,.chat .message:after{border-style:solid;content:"";display:block;position:absolute;width:0}.chat .message.is_remote{background:#fff}.chat .message.is_remote:before{border-width:7px 11px 7px 0;border-color:transparent #eee;bottom:auto;left:-12px;top:4px}.chat .message.is_remote:after{border-width:6px 10px 6px 0;border-color:transparent #fff;bottom:auto;left:-11px;top:5px}.chat .message.is_self{background:#fff;margin-right:18px;margin-left:4px;padding-right:0}.chat .message.is_self:before{border-width:7px 0 7px 11px;border-color:transparent #eee;bottom:auto;right:-12px;bottom:4px}.chat .message.is_self:after{border-width:6px 0 6px 10px;border-color:transparent #fff;bottom:auto;right:-11px;bottom:5px}.chat .chatbodybottom{background:#f8f8f8;bottom:1px;left:0;margin:0 auto;position:absolute;right:0}@media (max-height: 210px){.chat .chatbodybottom{height:auto}}.chat .typinghint{padding:0 6px 0 6px;white-space:nowrap;overflow:hidden;font-size:.8em;color:#aaa;height:14px}@media (max-height: 210px){.chat .typinghint{display:none}}.chat .inputbox{position:relative}.chat .inputbox .btn{position:absolute;right:6px;top:1px;padding:.5em 1em;display:none}.chat .inputbox>div{border-top:1px solid #e7e7e7}@media (max-height: 210px){.chat .inputbox{height:auto}}.chat .input{border-radius:0;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;display:block;height:54px;max-height:54px;margin:0;resize:none;width:100%}.chat .input:active,.chat .input:focus{border-color:#66afe9}@media (max-height: 210px){.chat .input{max-height:2.5em}}@-webkit-keyframes newmessage{0%{background-color:#84b819}50%{background-color:#f8f8f8}100%{background-color:#84b819}}@keyframes newmessage{0%{background-color:#84b819}50%{background-color:#f8f8f8}100%{background-color:#84b819}}.chat.newmessage .chatheadertitle:after{content:"***";position:absolute;right:32px;top:2px}.chat.newmessage .chatheader{-webkit-animation:newmessage 1s ease -0.3s infinite;animation:newmessage 1s ease -0.3s infinite}#help{bottom:10px;color:#aaa;font-size:1.1em;left:0;margin:0 auto;position:absolute;right:0;text-shadow:0 0 5px black;-webkit-transition:right 200ms ease-in-out;transition:right 200ms ease-in-out;top:80px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:350px}.withChat #help,.withBuddylist #help{right:260px}.withChat.withBuddylist #help,.withSettings #help{right:520px}#help>div{margin:0 10px}#help .help-subline{color:#888;padding:20px 0}@media only screen and (max-width: 400px){#help{display:none}}@media only screen and (min-width: 400px) and (max-width: 1020px){#help{font-size:1em;width:250px}}#help .btn{text-shadow:none}#audiolevel{left:0;margin:0 auto;position:fixed;right:0;top:43px;width:400px;z-index:60}#audiolevel .audio-level{background:#84b819;background:gradient(linear, left top, left bottom, color-stop(0%, #84b819), color-stop(50%, #a1d54f), color-stop(51%, #80c217), color-stop(100%, #7cbc0a));background:-webkit-gradient(linear, left top, left bottom, from(#84b819), color-stop(50%, #a1d54f), color-stop(51%, #80c217), to(#7cbc0a));background:-webkit-linear-gradient(top, #84b819 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%);background:linear-gradient(to bottom, #84b819 0%,#a1d54f 50%,#80c217 51%,#7cbc0a 100%);border-radius:0 0 2px 2px;height:4px;left:0;margin:0 auto;position:absolute;right:0;-webkit-transition:width .05s ease-in-out;transition:width .05s ease-in-out;width:0}.file-info{background:#fff;border:1px solid #ddd;border-radius:4px;padding:1em;position:relative;text-align:center;max-width:170px}.file-info>div{position:relative;z-index:3}.file-info .file-info-bg{bottom:0;left:41px;right:0;overflow:hidden;position:absolute;top:-17px;z-index:2}.file-info .file-info-bg .fa{color:#eee;font-size:20em}.file-info .actions{left:50%;margin-left:10px;position:absolute;text-align:left;top:14px}.is_remote .file-info{background:#fff;border:1px solid #ddd}.is_remote .file-info .file-info-bg .fa{color:#eee;font-size:20em}.file-info-name{font-size:1.1em;margin:.2em 0;min-width:140px;padding:0 .2em}.file-info-size{font-size:.8em;height:20px;position:relative}.file-info-size>span{display:block;left:0;margin:0 auto;padding:3px;position:absolute;text-shadow:1px 1px 1px white;top:0px;right:0;z-index:5}.file-info-size>div{bottom:0;-webkit-box-shadow:none !important;box-shadow:none !important;left:0;position:absolute;top:0;width:0;z-index:0}.file-info-size>div.progress-bar{opacity:.5}.file-info-size>div.progress-bar.download{opacity:1;z-index:1}.file-info-speed{bottom:8px;font-size:.8em;left:0;position:absolute;right:0;text-align:center}.file-info.uploader .file-info-speed{bottom:6px}.file-info.uploader .actions{margin-left:30px;opacity:0}.file-info.uploader .anim{margin-left:0}.file-info.uploader .hovercontrol:hover .anim{margin-left:-50px}.file-info.uploader .hovercontrol:hover .actions{margin-left:0;opacity:1}.file-info.uploader .hovercontrol>div{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.file-info.downloader .anim{margin-left:-40px}.file-info.downloader .file-info-size{margin-bottom:10px}.file-info.downloading .file-info-size{border-color:#ddd}#audiovideo{bottom:0;left:0;position:absolute;right:0;top:51px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#audiovideo.fullscreen{background:black !important;bottom:0 !important;left:0 !important;top:0 !important;right:0 !important}#audiovideo.fullscreen .remoteVideo .peerActions{display:none}@media only screen and (max-width: 590px){#audiovideo{right:0}}@media only screen and (max-width: 630px){.mainScreenshare #audiovideo,.mainPresentation #audiovideo{display:none}}.withChat #audiovideo,.withBuddylist #audiovideo{right:260px}.withBuddylist.withChat #audiovideo{right:520px}.audiovideo{bottom:0;left:0;position:absolute;top:0;right:0}.audiovideo.active{-webkit-perspective:1000;perspective:1000}.audiovideo.active:hover .overlayActions{opacity:.3}.audiovideo.active .overlayActions:hover{opacity:.6}.audiovideo.active .audiovideoBase{-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg)}.audiovideo .audiovideoBase{position:relative;width:100%;height:100%;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:2s;transition-duration:2s;-webkit-transform:rotateY(0deg);-ms-transform:rotateY(0deg);transform:rotateY(0deg);z-index:2}.audiovideo .localContainer{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0;-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1);z-index:2}.audiovideo video{object-fit:cover}.audiovideo .remoteContainer{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0;-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg);z-index:2}.audiovideo .miniContainer{bottom:2px;max-height:18%;height:100%;opacity:0;position:absolute;right:2px;-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1);-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:.5s;transition-duration:.5s;z-index:25;background:black}.audiovideo .miniContainer.visible{opacity:1}.audiovideo .miniVideo{display:block;max-height:100%;max-width:100%;height:100%;width:100%}.audiovideo .localVideo{background:rgba(0,0,0,0.4);display:block;max-height:100%;opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:2s;transition-duration:2s;width:100%}.audiovideo .remoteVideos{bottom:0;left:0;opacity:0;position:absolute;right:0;top:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:2s;transition-duration:2s}.audiovideo .remoteVideos video{display:block;height:100%;width:100%}.audiovideo .remoteVideo{background:rgba(0,0,0,0.4);display:inline-block;max-height:100%;max-width:100%;overflow:hidden;position:relative;vertical-align:bottom;width:100%}.audiovideo .remoteVideo.onlyaudio{background:#666}.audiovideo .remoteVideo .onlyaudio{color:rgba(255,255,255,0.3);display:none;font-size:80px;left:0;margin-top:-40px;pointer-events:auto;position:absolute;right:0;text-align:center;top:45%}.audiovideo .remoteVideo.onlyaudio video,.audiovideo .remoteVideo.dummy video{visibility:hidden}.audiovideo .remoteVideo.onlyaudio .onlyaudio{display:block}.audiovideo .remoteVideo.dummy .onlyaudio{display:block}.audiovideo .remoteVideo .peerActions{bottom:5%;left:40px;opacity:0;pointer-events:auto;position:absolute;right:40px;text-align:center;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:.2s;transition-duration:.2s;z-index:10}.audiovideo .remoteVideo .peerActions:hover{opacity:.5}.audiovideo .remoteVideo .peerActions i{font-size:3vw}.audiovideo .remoteVideo .peerLabel{bottom:4%;color:white;left:4%;font-size:2.5vw;max-width:30%;opacity:.7;overflow:hidden;padding:4px;position:absolute;text-overflow:ellipsis;text-shadow:0 0 4px black;white-space:nowrap;z-index:8}.audiovideo .overlayActions{background:rgba(0,0,0,0.9);bottom:0;height:140px;left:0;margin:auto 0;opacity:0;padding:3px 0;position:absolute;top:0;width:40px;z-index:5}.audiovideo .overlayActions button{color:#ccc;cursor:pointer;display:block;outline:0;text-shadow:0 0 5px black;width:40px}.audiovideo .overlayActions button.renderer-auditorium{position:relative}.audiovideo .overlayActions button.renderer-auditorium span:before{position:absolute;left:50%;top:50%;margin-left:-0.8em;margin-top:-0.5em;content:"\f183"}.audiovideo .overlayActions button.renderer-auditorium span:after{position:absolute;top:50%;right:50%;margin-right:-0.9em;margin-top:-0.5em;content:"\f183"}.remoteVideo.talking .peerLabel{color:#84b819}.remoteVideo .peerLabel{-webkit-transition:color 500ms ease-out;transition:color 500ms ease-out}.remoteVideo .overlayLogo{background:url(../img/logo-overlay.png) no-repeat center;-webkit-background-size:100%;background-size:100%;height:20%;max-height:40px;max-width:111px;opacity:.5;pointer-events:none;position:absolute;right:2.5%;top:4%;width:20%;z-index:2}.miniContainer.talking:after{content:"";position:absolute;top:2px;left:2px;right:2px;bottom:2px;-webkit-box-shadow:0px 0px 20px #84b819 inset;box-shadow:0px 0px 20px #84b819 inset}.renderer-smally{width:150px;background:black;border-right:none;border-top:none}.renderer-smally .remoteVideos{padding-bottom:85px}.renderer-smally .remoteVideo .peerLabel{font-size:.9em;font-weight:bold}.renderer-smally .remoteVideo .peerActions i{font-size:1em}.renderer-smally .miniContainer{bottom:0;height:85px;left:0;max-height:none;right:0}.renderer-democrazy .remoteVideos .miniContainer{position:relative;max-height:100%;max-width:100%;display:inline-block;vertical-align:bottom;bottom:auto;right:auto}.renderer-democrazy .active .miniContainer{opacity:1}.renderer-conferencekiosk .remoteVideos{background:rgba(0,0,0,0.4);bottom:2px;min-height:108px;pointer-events:auto;text-align:center;top:auto;white-space:nowrap}.renderer-conferencekiosk .remoteVideos>div{cursor:pointer;height:108px;width:192px}.renderer-conferencekiosk .remoteVideos .overlayLogo{display:none}.renderer-conferencekiosk .remoteVideos .peerLabel,.renderer-conferencekiosk .remoteVideos .peerActions i{font-size:1.1em}.renderer-conferencekiosk .remoteVideos .peerLabel{background:rgba(0,0,0,0.9)}.renderer-conferencekiosk .miniContainer{height:108px;max-height:none;width:192px}.renderer-conferencekiosk .bigVideo{bottom:112px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:2px;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:2s;transition-duration:2s}.renderer-conferencekiosk .bigVideo video{width:100%;height:100%}.renderer-auditorium .remoteContainer{border-left:40px solid black}.renderer-auditorium .remoteVideos{top:180px;width:320px;pointer-events:auto;background:rgba(0,0,0,0.4)}.renderer-auditorium .remoteVideos .overlayLogo{display:none}.renderer-auditorium .remoteVideos video{height:100%;width:100%;object-fit:cover;margin-top:-9px}.renderer-auditorium .remoteVideos>div{cursor:pointer;width:80px;height:60px;display:inline-block}.renderer-auditorium .remoteVideos .overlayLogo{display:none}.renderer-auditorium .remoteVideos .peerLabel{font-size:0.6em;background:rgba(0,0,0,0.9);max-width:100%;bottom:0px;left:0px;right:0px;padding:0 4px;line-height:9px}.renderer-auditorium .remoteVideos .peerActions{display:none}.renderer-auditorium .remoteVideos .miniContainer{right:auto;max-height:auto}.renderer-auditorium .bigVideo{width:320px;height:180px}.renderer-auditorium .bigVideo video{height:100%;width:100%}.renderer-auditorium .bigVideo .peerLabel{font-size:1vw;max-width:40%;bottom:8%}.screenshare{bottom:0;left:0;position:absolute;right:0;top:0}.mainScreenshare #screenshare{display:block}.screensharepane{background:black;bottom:0;left:0;overflow:auto;position:absolute;right:0;top:0}.screensharepane .remotescreen{position:relative}.screensharepane video{max-height:99%;width:100%}.remotesize .screensharepane video{max-height:none;width:auto}.screenshare .overlaybar{bottom:0;left:0;right:0}#roombar{left:0;min-width:260px;position:absolute;right:0;top:51px;z-index:4}#roombar .roombar{left:0;position:absolute;right:0;top:0}.fa.link{color:#aaa}.fa.email{color:#aaa}.fa.facebook{color:#45619d}.fa.google{color:#dd4b39}.fa.twitter{color:#00aced}.fa.xing{color:#fff}.contactsmanager .desc{font-size:20px;font-weight:normal;text-align:baseline}.contactsmanager .addbtn{font-size:14px}.contactsmanager .addbtn .fa-users{font-size:22px}.contactsmanager .addbtn .fa-plus{font-size:15px}.contactsmanager .editpicture{vertical-align:middle;float:left;margin-right:20px}.contactsmanager .uploadbtn{margin-top:7px}.contactsmanager .editlist{max-height:250px;overflow-y:auto}.contactsmanager .picture{display:table-cell;border-bottom:0;cursor:auto;min-height:46px;position:static;width:auto}.contactsmanager .picture .buddyPicture{margin:0 0 0 10px}.contactsmanager .table{margin-bottom:0px}.contactsmanager .table tr:first-child td{border-top:none}.contactsmanager .table .name{width:40%;text-align:left;vertical-align:middle}.contactsmanager .table .action{text-align:right;vertical-align:middle;padding-right:15px}.contactsmanageredit .buddy .buddyPicture{margin:0}.search:before{position:absolute;font-family:"fontAwesome";content:"\f002";font-size:14px;opacity:.4;top:6px;left:22px}.search ~ input{padding-left:25px}.presentation{bottom:0;left:0;position:absolute;right:0;top:0}.presentationpane .welcome{padding:0}.presentationpane .welcome h1{white-space:normal}.presentationpane .welcome button{margin-top:30px}.presentationpane .welcome .progress span{text-shadow:none}.presentationpane .welcome .progress .download-info{position:absolute;left:0;width:100%;color:#333;text-shadow:1px 1px 1px white}.mainPresentation #presentation{display:block}.presentationpane{bottom:0;left:0;overflow:auto;position:absolute;right:0;top:0}.presentationpane .canvasContainer{width:100%;height:100%}.presentationpane canvas{position:relative;display:block;margin:0 auto}.presentationpane .odfcanvas{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.presentationpane .odfcanvas body{background-color:transparent}.presentationpane .odfcanvas document{display:block}.presentationpane .odfcontainer{display:none;padding:0;margin:0}.presentationpane .odfcontainer.showonepage{overflow:hidden;text-align:center}.presentation .overlaybar{bottom:0;left:0;right:0;text-align:center}.presentation .overlaybar .overlaybar-content{max-width:100%}.presentation .overlaybar a.overlaybar-button{position:absolute;font-size:20px;padding:4px 6px;top:0px;line-height:28px}.overlaybar-content .pagecontrol{height:30px}.presentation .overlaybar a.btn-prev{left:40px}.presentation .overlaybar a.btn-next{right:0px;left:auto}.pageinfo input{display:inline;width:70px}.presentation .thumbnail{text-shadow:none;color:#333;margin-top:20px;width:160px;height:122px;display:inline-block;margin-left:20px;position:relative;vertical-align:middle}.presentation .thumbnail.presentable{cursor:pointer}.presentation .thumbnail:first-child{margin-left:0}.presentation .thumbnail .caption{padding-bottom:0;text-overflow:ellipsis;overflow:hidden}.presentation .thumbnail .caption .size{font-size:10px}.presentation .thumbnail .caption .progress{position:relative}.presentation .thumbnail .caption .download-info{position:absolute;left:0;right:0;top:0;bottom:0;line-height:20px;text-shadow:1px 1px 1px white;color:#333}.presentation .thumbnail .active{font-size:10em;color:#84b819;opacity:0.7;position:absolute;left:0;right:0;top:0;bottom:0;text-align:center}.presentation .thumbnail .notavailable{display:none;font-size:10em;color:#d2322d;opacity:0.25;position:absolute;left:0;right:0;top:0;bottom:0;text-align:center}.presentation .thumbnail:hover .notavailable{display:block}.presentation .thumbnail .presentation-action{position:absolute;top:1px;display:none}.presentation .thumbnail .download{left:1px}.presentation .thumbnail .delete{right:1px}.presentation .thumbnail:hover .presentation-action{display:block}.presentation .thumbnail .filetype{font-size:5em}.presentations{height:156px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;margin-right:10px;margin-left:-25px}.youtubevideo{position:absolute;left:0;right:0;bottom:0;top:0}.youtubevideopane{bottom:0;left:0;overflow:auto;position:absolute;right:0;top:0}#youtubecontainer{position:relative}#youtubeplayerinfo{position:absolute;left:0;right:0;bottom:10%;opacity:0;pointer-events:auto;text-align:center;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:.2s;transition-duration:.2s;z-index:10}#youtubeplayerinfo:hover{opacity:.8}#youtubeplayerinfo div{background-color:#f9f2f4;border-radius:10px;padding:20px 40px;display:inline-block;font-size:2em}.youtubevideo .click-container{position:absolute;left:0;top:0;bottom:0;right:0;z-index:5}.youtubevideo .welcome{max-width:700px}.youtubevideo .welcome h1{margin-top:10px}.youtubevideo .welcome .welcome-container{max-width:700px}.youtubevideo .welcome .welcome-logo{font-size:10em;background:transparent}.mainYoutubevideo #youtubevideo{display:block}.youtubevideo .overlaybar{bottom:0;left:0;right:0}.youtubevideo .overlaybar-content{width:100%;max-width:100%}.youtubevideo .overlaybar-input{position:relative;width:100%;padding-right:15px}.youtubevideo .overlaybar-content form .overlaybar-buttons{position:absolute;right:23px;top:6px}.volumecontrol{position:absolute;left:0;right:0;bottom:0;opacity:0;pointer-events:auto;z-index:10;background:rgba(0,0,0,0.6);padding:4px}.volumecontrol:hover{opacity:1}.volume-button{display:inline;min-width:38px}.volumebar{display:inline-block;vertical-align:middle;padding:6px 8px}.volumebar input[type="range"]{-webkit-appearance:none;background-color:#aaa;border:1px solid #aaa;width:100px;height:3px;outline:0}.volumebar input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;background-color:#fff;width:6px;height:20px}.volumebar input[type="range"]::-moz-range-track{background:#aaa;border:none}.volumebar input[type="range"]::-moz-range-thumb{background-color:#fff;width:6px;height:20px;border-radius:0}.volumebar input[type="range"]::-moz-focusring{outline:1px solid #aaa;outline-offset:-1px}.modal{overflow-y:auto}#toast-container>.toast{background-image:none !important}#toast-container>.toast:before{position:fixed;font-family:FontAwesome;font-size:20px;line-height:20px;float:left;color:#fff;padding-right:0.5em;margin:auto 0.5em auto -1.5em}#toast-container>.toast-warning:before{content:"\f05a"}#toast-container>.toast-error:before{content:"\f05a"}#toast-container>.toast-info:before{content:"\f05a"}#toast-container>.toast-success:before{content:"\f05a"}#toast-container>:hover,#toast-container>div{-webkit-box-shadow:none !important;box-shadow:none !important}.toast-info{background-color:#5bc0de}.toast-close-button{top:-0.6em;font-size:1em}#toast-container>div{opacity:1;filter:alpha(opacity=100)} + *//*! HiDPI v2.0.1 | MIT License | git.io/hidpi */.toast-title{font-weight:bold}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#ffffff}.toast-message a:hover{color:#cccccc;text-decoration:none}.toast-close-button{position:relative;right:-0.3em;top:-0.3em;float:right;font-size:20px;font-weight:bold;color:#ffffff;-webkit-text-shadow:0 1px 0 #ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:hover,.toast-close-button:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-webkit-box-shadow:0 0 12px #999999;box-shadow:0 0 12px #999999;color:#ffffff;opacity:0.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>:hover{-webkit-box-shadow:0 0 12px #000000;box-shadow:0 0 12px #000000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important}#toast-container.toast-top-center>div,#toast-container.toast-bottom-center>div{width:300px;margin:auto}#toast-container.toast-top-full-width>div,#toast-container.toast-bottom-full-width>div{width:96%;margin:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000000;opacity:0.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width: 240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width: 241px) and (max-width: 480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width: 481px) and (max-width: 768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}.dialog-header-error{background-color:#d2322d}.dialog-header-wait{background-color:#428bca}.dialog-header-notify{background-color:#eee}.dialog-header-confirm{background-color:#eee}.dialog-header-error span,.dialog-header-error h4,.dialog-header-wait span,.dialog-header-wait h4{color:#fff}.modal-content{overflow:hidden}.modal-content .modal-body{min-height:160px}[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak{display:none !important}html,body{-webkit-background-clip:padding-box;background-clip:padding-box;background-color:#e5e5e5;height:100%}body{margin:0;max-height:100%;max-width:100%;overflow:hidden;padding:0}a{cursor:pointer}#background{background:url("../img/bg-tiles.jpg");bottom:0;left:0;position:fixed;right:0;top:0;z-index:0}@media (-webkit-min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx){#background{background-image:url("../img/bg-tiles_x2.jpg");-webkit-background-size:198px 200px;background-size:198px 200px}}.help-block{color:#737373}.dialog-header-notify,.dialog-header-confirm{background-color:#eee}.desktopnotify-icon{background-image:url("../img/logo-48x48.png")}#loader{background:url("../img/logo.svg") no-repeat center;-webkit-background-size:contain;background-size:contain;bottom:15%;left:15%;max-width:200px;max-height:150px;margin:auto;opacity:1;pointer-events:none;position:fixed;right:15%;top:15%;z-index:20000;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:.5s;transition-duration:.5s}#loader.done{opacity:0}#loader>div{color:#ddd;display:block;font-size:2em;left:0;margin:0 auto;right:0;position:absolute;bottom:0px;margin-bottom:-40px;text-align:center;text-shadow:0 0 5px black}#loader .loader-message{font-size:0.5em}.mainview{bottom:0;display:none;left:0px;position:absolute;right:0;top:51px}@media (max-width: 700px){.mainview{left:0px}}.videolayoutSmally .mainview{left:150px}.videolayoutClassroom .mainview{left:360px}.withChat .mainview,.withBuddylist .mainview{right:260px}.withBuddylist.withChat .mainview{right:520px}#page{bottom:0;left:0;position:absolute;right:0;top:51px}.welcome{color:#aaa;font-size:1.1em;margin-top:80px;text-shadow:0 0 5px black;max-width:600px;min-height:160px;padding-left:105px;padding-right:0px;position:relative}@media (max-width: 700px){.welcome{padding-left:10px;padding-right:20px;margin:0 auto}}.welcome h1{margin-top:0px;white-space:nowrap}@media (max-width: 700px){.welcome h1{white-space:normal}}.welcome .welcome-container{margin:0 auto}.welcome .welcome-logo{position:absolute;left:0px;top:1px;bottom:0px;width:90px;background:url("../img/logo.svg") no-repeat left top;-webkit-background-size:contain;background-size:contain}@media (max-width: 700px){.welcome .welcome-logo{position:relative;height:70px;width:70px;margin-top:30px;margin-bottom:20px}}.welcome .welcome-input{position:relative}.welcome .welcome-input input{padding-right:105px}.welcome .welcome-input-buttons{text-shadow:none;position:absolute;top:6px;right:8px}.welcome .welcome-input-buttons a{padding-right:.5em;color:black;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.welcome .room-link{margin-top:-10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.welcome .room-link a{color:#aaa}.welcome .rooms-history{margin-top:3em}.welcome .rooms-history a{margin-right:.5em;display:inline-block}.welcome .rooms-history a:hover{text-decoration:none}.nicescroll::-webkit-scrollbar{background-color:#e5e5e5;border:solid transparent;height:8px;width:8px}.nicescroll::-webkit-scrollbar:hover{background-color:#e5e5e5;border-left:1px solid rgba(0,0,0,0.12);border-right:1px solid rgba(0,0,0,0.12)}.nicescroll::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.2)}.nicescroll::-webkit-scrollbar-thumb:active{background:rgba(0,0,0,0.4)}.fadetogglecontainer>div{position:absolute;width:100%}.animate-show.ng-hide-add{opacity:1;display:block !important;-webkit-transition:all linear 0.5s;transition:all linear 0.5s}.animate-show.ng-hide-add.ng-hide-add-active{opacity:0}.animate-show.ng-hide-remove{opacity:0;display:block !important;-webkit-transition:all linear 0.5s;transition:all linear 0.5s}.animate-show.ng-hide-remove.ng-hide-remove-active{opacity:1}.overlaybar{background:rgba(0,0,0,0.2);color:#e7e7e7;min-height:36px;padding:3px 8px 0 30px;position:absolute;text-shadow:0 0 5px black;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;border-bottom:1px solid #222;border-top:1px solid #222}.overlaybar:hover{background:rgba(0,0,0,0.5)}.overlaybar .btn{text-shadow:none}.overlaybar .btn-link{text-shadow:0 0 5px black}.overlaybar .form-group>*{float:left;padding-top:0}.overlaybar input[type="radio"],.overlaybar input[type="checkbox"]{margin-top:2px}.overlaybar label{padding-top:6px !important}.overlaybar.notvisible{background:transparent;pointer-events:none;border-bottom:1px solid transparent;border-top:1px solid transparent}.overlaybar.notvisible:hover{background:transparent}.overlaybar.notvisible .overlaybar-content{display:none}.overlaybar.notvisible .overlaybar-overlay{display:block}.overlaybar .overlaybar-button{color:#e7e7e7;display:block;font-size:20px;top:0px;left:3px;opacity:.7;padding:4px 6px;position:absolute;pointer-events:auto;vertical-align:middle;z-index:15}.overlaybar .overlaybar-content{display:inline-block;margin-left:.5em;margin-bottom:0;max-width:60%}.overlaybar .overlaybar-content>*{padding-right:.5em}.overlaybar .overlaybar-content .input-group{max-width:160px}.overlaybar .overlaybar-overlay{display:none;margin-left:.5em;opacity:.7;padding-top:2px;text-align:left}.visible-with-contacts,.visible-with-contacts-inline{display:none}.with-contacts .visible-with-contacts{display:block}.with-contacts .visible-with-contacts-inline{display:inline-block}.with-contacts .hidden-with-contacts{display:none}#rightslide{bottom:0;left:0;pointer-events:none;position:absolute;right:-260px;top:51px;-webkit-transition:right 200ms ease-in-out;transition:right 200ms ease-in-out;z-index:5}.withBuddylist #rightslide{right:0}#rightslide .rightslidepane{height:100%;position:relative;width:100%}.bar{background:#f8f8f8;color:#262626;font:bold 1em/50px "Helvetica Neue",Helvetica,Arial,sans-serif;text-align:center;touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:60}.bar .left{padding:5px 5px 5px 15px}.bar .left .logo{background:url("../img/logo-small.png") no-repeat;-webkit-background-size:100%;background-size:100%;display:inline-block;color:black;height:32px;width:90px;font:normal 11px/11px "Helvetica Neue",Helvetica,Arial,sans-serif;text-align:left;vertical-align:middle}.bar .left .logo span{font-style:italic;left:38px;position:relative;top:26px}.bar .left .logo span a{color:#222}@media (max-width: 700px){.bar .left .logo{background:url("../img/logo.svg") no-repeat center;width:46px;height:46px}.bar .left .logo span{display:none}}@media (max-width: 700px){.bar .left{padding:2px 5px 0px 11px}}.bar .middle{position:absolute;left:0px;right:60px;top:0px;pointer-events:none;text-align:center}.bar .middle>span{display:inline-block;background:#f8f8f8;min-height:50px;pointer-events:auto}.bar .middle .userpicture{border-radius:2px;display:inline-block;width:46px;height:46px;margin:-1px .5em 0 .5em}@media (max-width: 700px){.bar .middle .userpicture{display:none}}@media (max-width: 700px){.bar .middle .status-connected,.bar .middle .status-conference,.bar .middle .status-connecting,.bar .middle .status-closed,.bar .middle .status-reconnecting,.bar .middle .status-error,.bar .middle .status-ringing{max-width:100%;left:0;position:absolute;right:0}}.bar .right{padding-right:4px;margin-top:-1px}.bar .right .badge{background-color:#84b819;border:1px solid white;font-size:.4em;position:absolute;right:0;top:2px}.bar .right .btn{background:#e9e9e9;border-color:#e2e2e2;color:#333;height:42px;font:24px/40px "Helvetica Neue",Helvetica,Arial,sans-serif;margin-left:-2px;padding:0;text-align:center;width:42px;position:relative}.bar .right .btn:focus{border:none;outline:none;-webkit-box-shadow:0;box-shadow:0}.bar .right .btn:hover{background-color:transparent;border-color:#e7e7e7;color:#666}.bar .right .btn.active{background-color:transparent;border-color:#e7e7e7;color:#666}.bar .right .btn.active.amutebtn{background-color:#db4f39;border-color:#db4f39;color:white}.bar .right .btn.active.aenablebtn{background-color:#84b819;border-color:#84b819;color:white}.bar .right .btn-mutemicrophone i:before{content:"\f130"}.bar .right .btn-mutemicrophone.active i:before{content:"\f131"}.bar .right .btn-mutecamera i:before{content:"\f06e"}.bar .right .btn-mutecamera.active i:before{content:"\f070"}@-webkit-keyframes shakeityeah{0%{-webkit-transform:translate(2px, 1px) rotate(0deg);transform:translate(2px, 1px) rotate(0deg)}2%{-webkit-transform:translate(-1px, -2px) rotate(-1deg);transform:translate(-1px, -2px) rotate(-1deg)}4%{-webkit-transform:translate(-3px, 0px) rotate(1deg);transform:translate(-3px, 0px) rotate(1deg)}8%{-webkit-transform:translate(0px, 2px) rotate(0deg);transform:translate(0px, 2px) rotate(0deg)}10%{-webkit-transform:translate(1px, -1px) rotate(1deg);transform:translate(1px, -1px) rotate(1deg)}12%{-webkit-transform:translate(-1px, 2px) rotate(-1deg);transform:translate(-1px, 2px) rotate(-1deg)}14%{-webkit-transform:translate(-3px, 1px) rotate(0deg);transform:translate(-3px, 1px) rotate(0deg)}16%{-webkit-transform:translate(2px, 1px) rotate(-1deg);transform:translate(2px, 1px) rotate(-1deg)}18%{-webkit-transform:translate(-1px, -1px) rotate(1deg);transform:translate(-1px, -1px) rotate(1deg)}20%{-webkit-transform:translate(2px, 2px) rotate(0deg);transform:translate(2px, 2px) rotate(0deg)}22%{-webkit-transform:translate(1px, -2px) rotate(-1deg);transform:translate(1px, -2px) rotate(-1deg)}24%{-webkit-transform:translate(0px, 0px) rotate(0deg);transform:translate(0px, 0px) rotate(0deg)}}@keyframes shakeityeah{0%{-webkit-transform:translate(2px, 1px) rotate(0deg);transform:translate(2px, 1px) rotate(0deg)}2%{-webkit-transform:translate(-1px, -2px) rotate(-1deg);transform:translate(-1px, -2px) rotate(-1deg)}4%{-webkit-transform:translate(-3px, 0px) rotate(1deg);transform:translate(-3px, 0px) rotate(1deg)}8%{-webkit-transform:translate(0px, 2px) rotate(0deg);transform:translate(0px, 2px) rotate(0deg)}10%{-webkit-transform:translate(1px, -1px) rotate(1deg);transform:translate(1px, -1px) rotate(1deg)}12%{-webkit-transform:translate(-1px, 2px) rotate(-1deg);transform:translate(-1px, 2px) rotate(-1deg)}14%{-webkit-transform:translate(-3px, 1px) rotate(0deg);transform:translate(-3px, 1px) rotate(0deg)}16%{-webkit-transform:translate(2px, 1px) rotate(-1deg);transform:translate(2px, 1px) rotate(-1deg)}18%{-webkit-transform:translate(-1px, -1px) rotate(1deg);transform:translate(-1px, -1px) rotate(1deg)}20%{-webkit-transform:translate(2px, 2px) rotate(0deg);transform:translate(2px, 2px) rotate(0deg)}22%{-webkit-transform:translate(1px, -2px) rotate(-1deg);transform:translate(1px, -2px) rotate(-1deg)}24%{-webkit-transform:translate(0px, 0px) rotate(0deg);transform:translate(0px, 0px) rotate(0deg)}}.btn-shakeityeah{-webkit-animation-name:shakeityeah;animation-name:shakeityeah;-webkit-animation-duration:4.0s;animation-duration:4.0s;-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#buddylist{bottom:0;position:absolute;right:0;top:0;width:285px;z-index:50}#buddylist:before{background:#f8f8f8;border-left:1px solid #e7e7e7;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;border-top-left-radius:6px;border-bottom-left-radius:6px;bottom:0;color:rgba(0,0,0,0.3);content:"\f100";cursor:pointer;display:none;font-family:FontAwesome;font-size:1.8em;height:55px;left:0;line-height:55px;margin:auto;pointer-events:auto;position:absolute;text-align:center;top:0;width:26px;z-index:1;padding-right:4px}.withBuddylist #buddylist:before{content:"\f101";padding-right:0px}.withBuddylistAutoHide #buddylist:before{display:block}.buddylist{background:#f8f8f8;border-left:1px solid #e7e7e7;bottom:0;left:25px;overflow-x:hidden;overflow-y:auto;pointer-events:auto;position:absolute;right:0;top:0}.buddylist.loading .buddylistloading{display:block}.buddylist.empty .buddylistempty{display:block}.buddylist .buddycontainer{pointer-events:auto;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.buddylist .buddylistempty{bottom:0;color:#b3b3b3;display:none;font-size:1.4em;height:2em;left:0;margin:auto;padding:.4em;position:absolute;right:0;text-align:center;top:0}.buddylist .buddylistloading{bottom:0;color:#b3b3b3;display:none;font-size:1.4em;height:2em;margin:auto;padding:.4em;position:absolute;right:0;text-align:center}.buddy{background:#fff;border-bottom:1px solid #e7e7e7;cursor:pointer;display:block;font-size:13px;min-height:66px;overflow:hidden;position:relative;text-align:left;width:100%;-webkit-tap-highlight-color:transparent}.buddy:hover{background:rgba(255,255,255,0.5)}.buddy.withSubline .buddy1,.buddy.contact .buddy1{top:15px}.buddy.withSubline .buddy2,.buddy.contact .buddy2{display:block}.buddy.hovered .buddyactions{right:0}.buddy .fa.contact:before{content:"\f006"}.buddy.contact .fa.contact:before{content:"\f005"}.buddy.isself .fa.contact:before{content:"\f192"}.buddy .buddyPicture{background:#84b819;border-radius:2px;float:left;height:46px;margin:10px;overflow:hidden;position:relative;text-align:center;width:46px}.buddy .buddyPicture .fa{color:#009534;line-height:46px;font-size:3em}.buddy .buddyPicture img{bottom:0;display:block;left:0;position:absolute;right:0;top:0;max-height:100%;max-width:100%}.buddy .buddyPictureSmall{margin:0px;margin-left:0px;height:30px;width:30px;margin-right:0px}.buddy .buddyPictureSmall .fa{line-height:30px;font-size:2em}.buddy .buddy1{color:#262626;font-weight:bold;font-size:14px;height:28px;left:65px;position:absolute;overflow:hidden;right:4px;text-overflow:ellipsis;top:24px;white-space:nowrap}.buddy .buddy2{color:rgba(0,0,0,0.5);left:65px;overflow:hidden;position:absolute;right:0px;top:33px;white-space:nowrap;display:none}.buddy .buddy3{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left;vertical-align:middle;display:inline-block;width:120px;padding:0px 6px}.buddy .buddyactions{background:rgba(255,255,255,0.5);height:66px;line-height:66px;position:absolute;right:-125px;padding:0 10px;text-align:right;top:0px;-webkit-transition-property:right;transition-property:right;-webkit-transition-duration:.3s;transition-duration:.3s;white-space:nowrap;z-index:5}.buddy .buddyactions .btn{width:42px;height:40px;padding:0px;text-align:center;vertical-align:middle;line-height:40px;font-size:1.6em}.buddy .buddysessions{margin-top:56px;max-height:0px;margin-bottom:10px;-webkit-transition-property:max-height;transition-property:max-height;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-delay:.1s;transition-delay:.1s}.buddy .buddysessions ul{padding-top:10px;margin:0 14px;padding-left:0px;border-left:1px dotted #e7e7e7;border-right:1px dotted #e7e7e7}.buddy .buddysessions ul li{margin-bottom:2px;margin-left:0px;list-style-type:none}.buddy .buddysessions ul li .btn-group{visibility:hidden}.buddy .buddysessions ul li:hover .btn-group{visibility:visible}.buddy .buddysessions .currentsession .buddy3{font-weight:bold}.buddy.hovered .buddysessions{max-height:999px}.buddyPictureCapture .picture{display:block;margin-bottom:5px}.buddyPictureCapture .videoPicture{margin-bottom:4px}.buddyPictureCapture .videoPicture .videoPictureVideo{background-color:black;overflow:hidden;position:relative}.buddyPictureCapture .videoPicture video{object-fit:cover}.buddyPictureCapture .videoPictureVideo{width:200px;height:200px}.buddyPictureCapture .videoPictureVideo .videoPrev,.buddyPictureCapture .videoPictureVideo video,.buddyPictureCapture .videoPictureVideo .preview{width:100%;height:100%}.buddyPictureCapture .videoFlash{position:absolute;left:0px;right:0px;top:0px;bottom:0px;background-color:white;border:1px dotted #e7e7e7;visibility:hidden;z-index:5}.buddyPictureCapture .videoFlash.flash{visibility:visible}.buddyPictureCapture .preview{left:0;position:absolute;top:0}.buddyPictureCapture .preview.previewPicture{position:relative}.buddyPictureCapture .btn-takePicture,.buddyPictureCapture .btn-retakePicture{left:0px;right:0px;position:absolute;top:50%;margin:0 auto;max-width:40%}.buddyPictureCapture .btn-retakePicture{visibility:hidden}.buddyPictureCapture .videoPictureVideo:hover .btn-retakePicture{visibility:visible}.buddyPictureCapture .countdownPicture{color:#f8f8f8;font-size:45px;left:0px;right:0px;position:absolute;top:75px;margin:0 auto;text-align:center;text-shadow:0 0 5px black;opacity:0.8}.buddyPictureUpload{position:relative}.buddyPictureUpload .loader{position:absolute;z-index:1;left:90px}.buddyPictureUpload .loader .fa-spin{color:#737373}.buddyPictureUpload>p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.buddyPictureUpload .showUploadPicture{position:relative;border:1px solid #e7e7e7;height:200px;line-height:200px;margin-bottom:10px;overflow:hidden;text-align:center;width:200px;background-color:#f8f8f8;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.buddyPictureUpload .showUploadPicture.imgData{background-color:black}.buddyPictureUpload .showUploadPicture.imgData .chooseUploadPicture{display:none}.buddyPictureUpload .showUploadPicture .chooseUploadPicture{color:#737373;position:absolute;z-index:1;left:0px;right:0px;margin:0 auto}.buddyPictureUpload .showUploadPicture .fa{color:#f8f8f8;text-shadow:0 0 5px black;opacity:0.8}.buddyPictureUpload .preview{position:relative;top:0px;left:0px}.buddyPictureUpload .imageUtilites{line-height:30px;position:absolute;visibility:hidden;width:200px;z-index:1}.buddyPictureUpload .imageUtilites .fa{cursor:pointer;font-size:40px;width:50px;height:50px}.buddyPictureUpload .showUploadPicture.imgData:hover .imageUtilites{visibility:visible}.buddyPictureUpload .moveHorizontal{top:-4px;position:relative}.buddyPictureUpload .moveVertical{position:absolute;left:158px}.buddyPictureUpload .resize{position:relative;top:108px}#settings{border-left:1px solid #e7e7e7;background:#fff;bottom:0;padding-right:20px;position:fixed;right:-520px;top:51px;-webkit-transition:right 200ms ease-in-out;transition:right 200ms ease-in-out;width:520px;z-index:50}#settings.show{right:0}@media only screen and (max-width: 630px){#settings.show{background:#fff;left:0;width:auto}}@media only screen and (max-width: 630px){#settings.show .form-actions{bottom:0;height:60px;left:0;margin-bottom:0;padding:6px 0 6px 120px;position:fixed;right:0}}.settings{background:#fff;bottom:0;left:0;overflow-x:hidden;overflow-y:auto;padding:10px;position:absolute;right:0;top:0}.settings .version{color:#ccc;font-size:10px;position:absolute;right:10px;top:10px}@media only screen and (max-width: 630px){.settings .form-horizontal .controls{margin-left:110px}}@media only screen and (max-width: 630px){.settings .form-horizontal .control-label{width:100px;word-wrap:break-word}}@media only screen and (max-width: 630px){.settings{padding-bottom:10px}}settings-advanced{padding-top:15px;display:block}#chat{pointer-events:none;position:absolute;bottom:0px;right:260px;top:0px;width:260px;min-width:260px;z-index:45;opacity:0}.withChat #chat{opacity:1}.withChat.withChatMaximized #chat{left:0;width:auto}.withChat .chat{pointer-events:auto}.chatcontainer{background:#f8f8f8;bottom:0px;left:0px;right:0px;top:0px;overflow:hidden;position:absolute}.showchatlist .chatpane{right:100%}.showchatlist .chatlist{left:0}.chatlist{background:#f8f8f8;bottom:0;left:100%;position:absolute;top:0;width:100%}.chatlist .list-group{margin-top:-1px;margin-bottom:-1px;max-height:100%;overflow-x:hidden;overflow-y:auto}.chatlist .list-group-item{border-right:none;border-left:none;border-radius:0;padding-right:70px;position:relative;min-height:51px;line-height:26px}.chatlist .list-group-item.newmessage{-webkit-animation:newmessage 1s ease -0.3s infinite;animation:newmessage 1s ease -0.3s infinite}.chatlist .list-group-item.disabled{color:#aaa}.chatlist .list-group-item:hover button{display:inline}.chatlist .list-group-item .fa-lg{display:inline-block;text-align:center;width:18px}.chatlist .list-group-item .badge{background:#84b819;border:1px solid white;position:absolute;right:50px;top:14px}.chatlist .list-group-item button{display:none;position:absolute;right:10px}.chatpane{-webkit-backface-visibility:hidden;backface-visibility:hidden;bottom:0;position:absolute;right:0;top:0;width:100%}.chat{background:#f8f8f8;display:none;bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0}.chat.active.visible{display:block}.chatmenu{position:absolute;top:36px;left:0px;right:0px;height:36px;padding:2px 4px}@media (max-height: 210px){.chatmenu{display:none}}.chatbody{border-left:1px solid #e7e7e7;bottom:-1px;left:0;position:absolute;right:0;top:74px}@media (max-height: 210px){.chatbody{border-top:1px solid #e7e7e7;top:0px}}.chatheader{background:rgba(255,255,255,0.9);border-bottom:1px solid #e7e7e7;border-left:1px solid #e7e7e7;height:36px;left:0;line-height:34px;padding:0 4px 0 8px;position:absolute;right:0;top:0}.chatheader .chatstatusicon{cursor:pointer;display:block;font-size:1.4em;height:36px;left:0;position:absolute;text-align:center;top:0;width:36px}.chatheader .chatheadertitle{display:inline;padding-left:28px}.chatheader .ctrl{color:rgba(0,0,0,0.3);position:absolute;right:1px;top:0}.chatheader .ctrl .fa{cursor:pointer;padding:6px}.chatheader span{display:inline-block;max-width:60%;overflow:hidden;pointer-events:none;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}@media (max-height: 210px){.chatheader{display:none}}.chat .outputbox{bottom:75px;left:0;position:absolute;right:0;top:0}@media (max-height: 210px){.chat .outputbox{bottom:45px}}.chat .output{height:100%;overflow-x:hidden;overflow-y:auto;padding:0.4em 0}.chat .output>i{clear:both;color:#aaa;display:block;font-size:.8em;padding:6px 0;text-align:center}.chat .output>i.p2p{font-weight:bold;padding:6px 0}.chat.with_pictures .message.is_self{padding-right:54px}.chat.with_pictures .message.is_self .timestamp{right:58px}.chat.with_pictures .message.is_remote{padding-left:58px}.chat .message{background:#fff;border:1px solid transparent;border-radius:6px;clear:both;display:block;margin:0 4px 2px 18px;padding:8px;position:relative;word-wrap:break-word;-webkit-box-shadow:0px 0px 2px 0px rgba(0,0,0,0.03);box-shadow:0px 0px 2px 0px rgba(0,0,0,0.03)}.chat .message ul{list-style-type:none;margin:0;padding-left:0}.chat .message li{line-height:1.1em;margin:4px 0;padding-left:1.2em;position:relative}.chat .message li:before{color:#ccc;content:'\f075';font-family:FontAwesome;left:0;position:absolute;text-align:center;width:12px}.chat .message .timestamp{color:#aaa;font-size:.8em;position:absolute;right:8px;text-align:right;top:8px}.chat .message .timestamp-space{width:40px;height:10px;float:right}.chat .message strong{display:block;padding-bottom:2px;margin-right:40px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat .message.is_self li:before{color:#ccc;-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.chat .message li.unread:before{content:"";color:#FE9A2E}.chat .message li.sending:before{content:"";color:#ccc}.chat .message li.sent:before{content:"";color:#5882FA}.chat .message li.delivered:before{content:"";color:#5882FA}.chat .message li.received:before{content:"";color:#84b819}.chat .message li.read:before{content:"";color:#ccc}.chat .message.is_self .buddyPicture{left:auto;right:4px}.chat .message .buddyPicture{background:#84b819;border-radius:2px;height:46px;left:4px;overflow:hidden;position:absolute;text-align:center;top:4px;width:46px;z-index:0}.chat .message .buddyPicture .fa{color:#009534;line-height:46px}.chat .message .buddyPicture img{display:block;bottom:0;left:0;right:0;position:absolute;top:0;max-height:100%;max-width:100%}.chat .message:before,.chat .message:after{border-style:solid;content:"";display:block;position:absolute;width:0}.chat .message.is_remote{background:#fff}.chat .message.is_remote:before{border-width:7px 11px 7px 0;border-color:transparent #eee;bottom:auto;left:-12px;top:4px}.chat .message.is_remote:after{border-width:6px 10px 6px 0;border-color:transparent #fff;bottom:auto;left:-11px;top:5px}.chat .message.is_self{background:#fff;margin-right:18px;margin-left:4px;padding-right:0}.chat .message.is_self:before{border-width:7px 0 7px 11px;border-color:transparent #eee;bottom:auto;right:-12px;bottom:4px}.chat .message.is_self:after{border-width:6px 0 6px 10px;border-color:transparent #fff;bottom:auto;right:-11px;bottom:5px}.chat .chatbodybottom{background:#f8f8f8;bottom:1px;left:0;margin:0 auto;position:absolute;right:0}@media (max-height: 210px){.chat .chatbodybottom{height:auto}}.chat .typinghint{padding:0 6px 0 6px;white-space:nowrap;overflow:hidden;font-size:.8em;color:#aaa;height:14px}@media (max-height: 210px){.chat .typinghint{display:none}}.chat .inputbox{position:relative}.chat .inputbox .btn{position:absolute;right:6px;top:1px;padding:.5em 1em;display:none}.chat .inputbox>div{border-top:1px solid #e7e7e7}@media (max-height: 210px){.chat .inputbox{height:auto}}.chat .input{border-radius:0;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;display:block;height:54px;max-height:54px;margin:0;resize:none;width:100%}.chat .input:active,.chat .input:focus{border-color:#66afe9}@media (max-height: 210px){.chat .input{max-height:2.5em}}@-webkit-keyframes newmessage{0%{background-color:#84b819}50%{background-color:#f8f8f8}100%{background-color:#84b819}}@keyframes newmessage{0%{background-color:#84b819}50%{background-color:#f8f8f8}100%{background-color:#84b819}}.chat.newmessage .chatheadertitle:after{content:"***";position:absolute;right:32px;top:2px}.chat.newmessage .chatheader{-webkit-animation:newmessage 1s ease -0.3s infinite;animation:newmessage 1s ease -0.3s infinite}#help{bottom:10px;color:#aaa;font-size:1.1em;left:0;margin:0 auto;position:absolute;right:0;text-shadow:0 0 5px black;-webkit-transition:right 200ms ease-in-out;transition:right 200ms ease-in-out;top:80px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:350px}.withChat #help,.withBuddylist #help{right:260px}.withChat.withBuddylist #help,.withSettings #help{right:520px}#help>div{margin:0 10px}#help .help-subline{color:#888;padding:20px 0}@media only screen and (max-width: 400px){#help{display:none}}@media only screen and (min-width: 400px) and (max-width: 1020px){#help{font-size:1em;width:250px}}#help .btn{text-shadow:none}#audiolevel{left:0;margin:0 auto;position:fixed;right:0;top:43px;width:400px;z-index:60}#audiolevel .audio-level{background:#84b819;background:gradient(linear, left top, left bottom, color-stop(0%, #84b819), color-stop(50%, #a1d54f), color-stop(51%, #80c217), color-stop(100%, #7cbc0a));background:-webkit-gradient(linear, left top, left bottom, from(#84b819), color-stop(50%, #a1d54f), color-stop(51%, #80c217), to(#7cbc0a));background:-webkit-linear-gradient(top, #84b819 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%);background:linear-gradient(to bottom, #84b819 0%,#a1d54f 50%,#80c217 51%,#7cbc0a 100%);border-radius:0 0 2px 2px;height:4px;left:0;margin:0 auto;position:absolute;right:0;-webkit-transition:width .05s ease-in-out;transition:width .05s ease-in-out;width:0}.file-info{background:#fff;border:1px solid #ddd;border-radius:4px;padding:1em;position:relative;text-align:center;max-width:170px}.file-info>div{position:relative;z-index:3}.file-info .file-info-bg{bottom:0;left:41px;right:0;overflow:hidden;position:absolute;top:-17px;z-index:2}.file-info .file-info-bg .fa{color:#eee;font-size:20em}.file-info .actions{left:50%;margin-left:10px;position:absolute;text-align:left;top:14px}.is_remote .file-info{background:#fff;border:1px solid #ddd}.is_remote .file-info .file-info-bg .fa{color:#eee;font-size:20em}.file-info-name{font-size:1.1em;margin:.2em 0;min-width:140px;padding:0 .2em}.file-info-size{font-size:.8em;height:20px;position:relative}.file-info-size>span{display:block;left:0;margin:0 auto;padding:3px;position:absolute;text-shadow:1px 1px 1px white;top:0px;right:0;z-index:5}.file-info-size>div{bottom:0;-webkit-box-shadow:none !important;box-shadow:none !important;left:0;position:absolute;top:0;width:0;z-index:0}.file-info-size>div.progress-bar{opacity:.5}.file-info-size>div.progress-bar.download{opacity:1;z-index:1}.file-info-speed{bottom:8px;font-size:.8em;left:0;position:absolute;right:0;text-align:center}.file-info.uploader .file-info-speed{bottom:6px}.file-info.uploader .actions{margin-left:30px;opacity:0}.file-info.uploader .anim{margin-left:0}.file-info.uploader .hovercontrol:hover .anim{margin-left:-50px}.file-info.uploader .hovercontrol:hover .actions{margin-left:0;opacity:1}.file-info.uploader .hovercontrol>div{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.file-info.downloader .anim{margin-left:-40px}.file-info.downloader .file-info-size{margin-bottom:10px}.file-info.downloading .file-info-size{border-color:#ddd}#audiovideo{bottom:0;left:0;position:absolute;right:0;top:51px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#audiovideo.fullscreen{background:black !important;bottom:0 !important;left:0 !important;top:0 !important;right:0 !important}#audiovideo.fullscreen .remoteVideo .peerActions{display:none}@media only screen and (max-width: 590px){#audiovideo{right:0}}@media only screen and (max-width: 630px){.mainScreenshare #audiovideo,.mainPresentation #audiovideo{display:none}}.withChat #audiovideo,.withBuddylist #audiovideo{right:260px}.withBuddylist.withChat #audiovideo{right:520px}.audiovideo{bottom:0;left:0;position:absolute;top:0;right:0}.audiovideo.active{-webkit-perspective:1000;perspective:1000}.audiovideo.active:hover .overlayActions{opacity:.3}.audiovideo.active .overlayActions:hover{opacity:.6}.audiovideo.active .audiovideoBase{-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg)}.audiovideo .audiovideoBase{position:relative;width:100%;height:100%;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:2s;transition-duration:2s;-webkit-transform:rotateY(0deg);-ms-transform:rotateY(0deg);transform:rotateY(0deg);z-index:2}.audiovideo .localContainer{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0;-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1);z-index:2}.audiovideo video{object-fit:cover}.audiovideo .remoteContainer{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0;-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg);z-index:2}.audiovideo .miniContainer{bottom:2px;max-height:18%;height:100%;opacity:0;position:absolute;right:2px;-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1);-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:.5s;transition-duration:.5s;z-index:25;background:black}.audiovideo .miniContainer.visible{opacity:1}.audiovideo .miniVideo{display:block;max-height:100%;max-width:100%;height:100%;width:100%}.audiovideo .localVideo{background:rgba(0,0,0,0.4);display:block;max-height:100%;opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:2s;transition-duration:2s;width:100%}.audiovideo .remoteVideos{bottom:0;left:0;opacity:0;position:absolute;right:0;top:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:2s;transition-duration:2s}.audiovideo .remoteVideos video{display:block;height:100%;width:100%}.audiovideo .remoteVideo{background:rgba(0,0,0,0.4);display:inline-block;max-height:100%;max-width:100%;overflow:hidden;position:relative;vertical-align:bottom;width:100%}.audiovideo .remoteVideo.onlyaudio{background:#666}.audiovideo .remoteVideo .onlyaudio{color:rgba(255,255,255,0.3);display:none;font-size:80px;left:0;margin-top:-40px;pointer-events:auto;position:absolute;right:0;text-align:center;top:45%}.audiovideo .remoteVideo.onlyaudio video,.audiovideo .remoteVideo.dummy video{visibility:hidden}.audiovideo .remoteVideo.onlyaudio .onlyaudio{display:block}.audiovideo .remoteVideo.dummy .onlyaudio{display:block}.audiovideo .remoteVideo .peerActions{bottom:5%;left:40px;opacity:0;pointer-events:auto;position:absolute;right:40px;text-align:center;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:.2s;transition-duration:.2s;z-index:10}.audiovideo .remoteVideo .peerActions:hover{opacity:.5}.audiovideo .remoteVideo .peerActions i{font-size:3vw}.audiovideo .remoteVideo .peerLabel{bottom:4%;color:white;left:4%;font-size:2.5vw;max-width:30%;opacity:.7;overflow:hidden;padding:4px;position:absolute;text-overflow:ellipsis;text-shadow:0 0 4px black;white-space:nowrap;z-index:8}.audiovideo .overlayActions{background:rgba(0,0,0,0.9);bottom:0;height:140px;left:0;margin:auto 0;opacity:0;padding:3px 0;position:absolute;top:0;width:40px;z-index:5}.audiovideo .overlayActions button{color:#ccc;cursor:pointer;display:block;outline:0;text-shadow:0 0 5px black;width:40px}.audiovideo .overlayActions button.renderer-auditorium{position:relative}.audiovideo .overlayActions button.renderer-auditorium span:before{position:absolute;left:50%;top:50%;margin-left:-0.8em;margin-top:-0.5em;content:"\f183"}.audiovideo .overlayActions button.renderer-auditorium span:after{position:absolute;top:50%;right:50%;margin-right:-0.9em;margin-top:-0.5em;content:"\f183"}.remoteVideo.talking .peerLabel{color:#84b819}.remoteVideo .peerLabel{-webkit-transition:color 500ms ease-out;transition:color 500ms ease-out}.remoteVideo .overlayLogo{background:url(../img/logo-overlay.png) no-repeat center;-webkit-background-size:100%;background-size:100%;height:20%;max-height:40px;max-width:111px;opacity:.5;pointer-events:none;position:absolute;right:2.5%;top:4%;width:20%;z-index:2}.miniContainer.talking:after{content:"";position:absolute;top:2px;left:2px;right:2px;bottom:2px;-webkit-box-shadow:0px 0px 20px #84b819 inset;box-shadow:0px 0px 20px #84b819 inset}.renderer-smally{width:150px;background:black;border-right:none;border-top:none}.renderer-smally .remoteVideos{padding-bottom:85px}.renderer-smally .remoteVideo .peerLabel{font-size:.9em;font-weight:bold}.renderer-smally .remoteVideo .peerActions i{font-size:1em}.renderer-smally .miniContainer{bottom:0;height:85px;left:0;max-height:none;right:0}.renderer-democrazy .remoteVideos .miniContainer{position:relative;max-height:100%;max-width:100%;display:inline-block;vertical-align:bottom;bottom:auto;right:auto}.renderer-democrazy .active .miniContainer{opacity:1}.renderer-conferencekiosk .remoteVideos{background:rgba(0,0,0,0.4);bottom:2px;min-height:108px;pointer-events:auto;text-align:center;top:auto;white-space:nowrap}.renderer-conferencekiosk .remoteVideos>div{cursor:pointer;height:108px;width:192px}.renderer-conferencekiosk .remoteVideos .overlayLogo{display:none}.renderer-conferencekiosk .remoteVideos .peerLabel,.renderer-conferencekiosk .remoteVideos .peerActions i{font-size:1.1em}.renderer-conferencekiosk .remoteVideos .peerLabel{background:rgba(0,0,0,0.9)}.renderer-conferencekiosk .miniContainer{height:108px;max-height:none;width:192px}.renderer-conferencekiosk .bigVideo{bottom:112px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:2px;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:2s;transition-duration:2s}.renderer-conferencekiosk .bigVideo video{width:100%;height:100%}.renderer-auditorium .remoteContainer{border-left:40px solid black}.renderer-auditorium .remoteVideos{top:180px;width:320px;pointer-events:auto;background:rgba(0,0,0,0.4)}.renderer-auditorium .remoteVideos .overlayLogo{display:none}.renderer-auditorium .remoteVideos video{height:100%;width:100%;object-fit:cover;margin-top:-9px}.renderer-auditorium .remoteVideos>div{cursor:pointer;width:80px;height:60px;display:inline-block}.renderer-auditorium .remoteVideos .overlayLogo{display:none}.renderer-auditorium .remoteVideos .peerLabel{font-size:0.6em;background:rgba(0,0,0,0.9);max-width:100%;bottom:0px;left:0px;right:0px;padding:0 4px;line-height:9px}.renderer-auditorium .remoteVideos .peerActions{display:none}.renderer-auditorium .remoteVideos .miniContainer{right:auto;max-height:auto}.renderer-auditorium .bigVideo{width:320px;height:180px}.renderer-auditorium .bigVideo video{height:100%;width:100%}.renderer-auditorium .bigVideo .peerLabel{font-size:1vw;max-width:40%;bottom:8%}.screenshare{bottom:0;left:0;position:absolute;right:0;top:0}.mainScreenshare #screenshare{display:block}.screensharepane{background:black;bottom:0;left:0;overflow:auto;position:absolute;right:0;top:0}.screensharepane .remotescreen{position:relative}.screensharepane video{max-height:99%;width:100%}.remotesize .screensharepane video{max-height:none;width:auto}.screenshare .overlaybar{bottom:0;left:0;right:0}#roombar{left:0;min-width:260px;position:absolute;right:0;top:51px;z-index:4}#roombar .roombar{left:0;position:absolute;right:0;top:0}.fa.link{color:#aaa}.fa.email{color:#aaa}.fa.facebook{color:#45619d}.fa.google{color:#dd4b39}.fa.twitter{color:#00aced}.fa.xing{color:#fff}.contactsmanager .desc{font-size:20px;font-weight:normal;text-align:baseline}.contactsmanager .addbtn{font-size:14px}.contactsmanager .addbtn .fa-users{font-size:22px}.contactsmanager .addbtn .fa-plus{font-size:15px}.contactsmanager .editpicture{vertical-align:middle;float:left;margin-right:20px}.contactsmanager .uploadbtn{margin-top:7px}.contactsmanager .editlist{max-height:250px;overflow-y:auto}.contactsmanager .picture{display:table-cell;border-bottom:0;cursor:auto;min-height:46px;position:static;width:auto}.contactsmanager .picture .buddyPicture{margin:0 0 0 10px}.contactsmanager .table{margin-bottom:0px}.contactsmanager .table tr:first-child td{border-top:none}.contactsmanager .table .name{width:40%;text-align:left;vertical-align:middle}.contactsmanager .table .action{text-align:right;vertical-align:middle;padding-right:15px}.contactsmanageredit .buddy .buddyPicture{margin:0}.search:before{position:absolute;font-family:"fontAwesome";content:"\f002";font-size:14px;opacity:.4;top:6px;left:22px}.search ~ input{padding-left:25px}.presentation{bottom:0;left:0;position:absolute;right:0;top:0}.presentationpane .welcome{padding:0}.presentationpane .welcome h1{white-space:normal}.presentationpane .welcome button{margin-top:30px}.presentationpane .welcome .progress span{text-shadow:none}.presentationpane .welcome .progress .download-info{position:absolute;left:0;width:100%;color:#333;text-shadow:1px 1px 1px white}.mainPresentation #presentation{display:block}.presentationpane{bottom:0;left:0;overflow:auto;position:absolute;right:0;top:0}.presentationpane .canvasContainer{width:100%;height:100%}.presentationpane canvas{position:relative;display:block;margin:0 auto}.presentationpane .odfcanvas{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.presentationpane .odfcanvas body{background-color:transparent}.presentationpane .odfcanvas document{display:block}.presentationpane .odfcontainer{display:none;padding:0;margin:0}.presentationpane .odfcontainer.showonepage{overflow:hidden;text-align:center}.presentation .overlaybar{bottom:0;left:0;right:0;text-align:center}.presentation .overlaybar .overlaybar-content{max-width:100%}.presentation .overlaybar a.overlaybar-button{position:absolute;font-size:20px;padding:4px 6px;top:0px;line-height:28px}.overlaybar-content .pagecontrol{height:30px}.presentation .overlaybar a.btn-prev{left:40px}.presentation .overlaybar a.btn-next{right:0px;left:auto}.pageinfo input{display:inline;width:70px}.presentation .thumbnail{text-shadow:none;color:#333;margin-top:20px;width:160px;height:122px;display:inline-block;margin-left:20px;position:relative;vertical-align:middle}.presentation .thumbnail.presentable{cursor:pointer}.presentation .thumbnail:first-child{margin-left:0}.presentation .thumbnail .caption{padding-bottom:0;text-overflow:ellipsis;overflow:hidden}.presentation .thumbnail .caption .size{font-size:10px}.presentation .thumbnail .caption .progress{position:relative}.presentation .thumbnail .caption .download-info{position:absolute;left:0;right:0;top:0;bottom:0;line-height:20px;text-shadow:1px 1px 1px white;color:#333}.presentation .thumbnail .active{font-size:10em;color:#84b819;opacity:0.7;position:absolute;left:0;right:0;top:0;bottom:0;text-align:center}.presentation .thumbnail .notavailable{display:none;font-size:10em;color:#d2322d;opacity:0.25;position:absolute;left:0;right:0;top:0;bottom:0;text-align:center}.presentation .thumbnail:hover .notavailable{display:block}.presentation .thumbnail .presentation-action{position:absolute;top:1px;display:none}.presentation .thumbnail .download{left:1px}.presentation .thumbnail .delete{right:1px}.presentation .thumbnail:hover .presentation-action{display:block}.presentation .thumbnail .filetype{font-size:5em}.presentations{height:156px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;margin-right:10px;margin-left:-25px}.youtubevideo{position:absolute;left:0;right:0;bottom:0;top:0}.youtubevideopane{bottom:0;left:0;overflow:auto;position:absolute;right:0;top:0}#youtubecontainer{position:relative}#youtubeplayerinfo{position:absolute;left:0;right:0;bottom:10%;opacity:0;pointer-events:auto;text-align:center;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-duration:.2s;transition-duration:.2s;z-index:10}#youtubeplayerinfo:hover{opacity:.8}#youtubeplayerinfo div{background-color:#f9f2f4;border-radius:10px;padding:20px 40px;display:inline-block;font-size:2em}.youtubevideo .click-container{position:absolute;left:0;top:0;bottom:0;right:0;z-index:5}.youtubevideo .welcome{max-width:700px}.youtubevideo .welcome h1{margin-top:10px}.youtubevideo .welcome .welcome-container{max-width:700px}.youtubevideo .welcome .welcome-logo{font-size:10em;background:transparent}.mainYoutubevideo #youtubevideo{display:block}.youtubevideo .overlaybar{bottom:0;left:0;right:0}.youtubevideo .overlaybar-content{width:100%;max-width:100%}.youtubevideo .overlaybar-input{position:relative;width:100%;padding-right:15px}.youtubevideo .overlaybar-content form .overlaybar-buttons{position:absolute;right:23px;top:6px}.volumecontrol{position:absolute;left:0;right:0;bottom:0;opacity:0;pointer-events:auto;z-index:10;background:rgba(0,0,0,0.6);padding:4px}.volumecontrol:hover{opacity:1}.volume-button{display:inline;min-width:38px}.volumebar{display:inline-block;vertical-align:middle;padding:6px 8px}.volumebar input[type="range"]{-webkit-appearance:none;background-color:#aaa;border:1px solid #aaa;width:100px;height:3px;outline:0}.volumebar input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;background-color:#fff;width:6px;height:20px}.volumebar input[type="range"]::-moz-range-track{background:#aaa;border:none}.volumebar input[type="range"]::-moz-range-thumb{background-color:#fff;width:6px;height:20px;border-radius:0}.volumebar input[type="range"]::-moz-focusring{outline:1px solid #aaa;outline-offset:-1px}.modal{overflow-y:auto}#toast-container>.toast{background-image:none !important}#toast-container>.toast:before{position:fixed;font-family:FontAwesome;font-size:20px;line-height:20px;float:left;color:#fff;padding-right:0.5em;margin:auto 0.5em auto -1.5em}#toast-container>.toast-warning:before{content:"\f05a"}#toast-container>.toast-error:before{content:"\f05a"}#toast-container>.toast-info:before{content:"\f05a"}#toast-container>.toast-success:before{content:"\f05a"}#toast-container>:hover,#toast-container>div{-webkit-box-shadow:none !important;box-shadow:none !important}.toast-info{background-color:#5bc0de}.toast-close-button{top:-0.6em;font-size:1em}#toast-container>div{opacity:1;filter:alpha(opacity=100)} diff --git a/static/js/directives/buddylist.js b/static/js/directives/buddylist.js index 4f8bfd41..69c428dd 100644 --- a/static/js/directives/buddylist.js +++ b/static/js/directives/buddylist.js @@ -141,6 +141,9 @@ define(['underscore', 'text!partials/buddylist.html'], function(_, template) { } scope.$apply(); }); + if (contacts.enabled) { + iElement.addClass("with-contacts"); + } }; diff --git a/static/js/directives/menu.js b/static/js/directives/menu.js index bcf18613..3de2d510 100644 --- a/static/js/directives/menu.js +++ b/static/js/directives/menu.js @@ -23,15 +23,10 @@ define(['text!partials/menu.html'], function(template) { // menu - return ["mediaStream", function(mediaStream) { + return ["modules", function(modules) { var link = function($scope, $element) { - - $scope.modules = mediaStream.config.Modules || []; - $scope.withModule = function(m) { - return $scope.modules.indexOf(m) !== -1; - }; - + $scope.withModule = modules.withModule; }; return { diff --git a/static/js/services/contacts.js b/static/js/services/contacts.js index 8ba0dc82..7e7ddffa 100644 --- a/static/js/services/contacts.js +++ b/static/js/services/contacts.js @@ -123,11 +123,15 @@ define(['underscore', 'jquery', 'modernizr', 'sjcl', 'text!partials/contactsmana }; // contacts - return ["appData", "contactData", "mediaStream", "$templateCache", function(appData, contactData, mediaStream, $templateCache) { + return ["appData", "contactData", "mediaStream", "$templateCache", "modules", function(appData, contactData, mediaStream, $templateCache, modules) { - // Inject our templates. - $templateCache.put('/contactsmanager/main.html', templateContactsManager); - $templateCache.put('/contactsmanager/edit.html', templateContactsManagerEdit); + var withContacts = modules.withModule("contacts"); + + if (withContacts) { + // Inject our templates. + $templateCache.put('/contactsmanager/main.html', templateContactsManager); + $templateCache.put('/contactsmanager/edit.html', templateContactsManagerEdit); + } var Contacts = function() { @@ -135,6 +139,7 @@ define(['underscore', 'jquery', 'modernizr', 'sjcl', 'text!partials/contactsmana this.userid = null; this.key = null; this.database = null; + this.enabled = withContacts; appData.e.on("authenticationChanged", _.bind(function(event, userid, suserid) { // TODO(longsleep): Avoid creating empty databases. Create db on store only. @@ -160,14 +165,24 @@ define(['underscore', 'jquery', 'modernizr', 'sjcl', 'text!partials/contactsmana }; Contacts.prototype.put = function(contact) { + + if (!this.database) { + console.warn("Unable to put contact as no database is loaded."); + return; + } this.database.put("contacts", { id: this.id(contact.Userid), contact: this.encrypt(contact) }); - } + + }; Contacts.prototype.open = function(userid, suserid) { + if (!this.enabled) { + return null; + } + if (this.database && (!userid || this.userid !== userid)) { // Unload existing contacts. this.unload(); diff --git a/static/js/services/modules.js b/static/js/services/modules.js new file mode 100644 index 00000000..98d7ac51 --- /dev/null +++ b/static/js/services/modules.js @@ -0,0 +1,38 @@ +/* + * Spreed WebRTC. + * Copyright (C) 2013-2014 struktur AG + * + * This file is part of Spreed WebRTC. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +"use strict"; +define([], function() { + + // modules + return ["mediaStream", function(mediaStream) { + + var enabledModules = mediaStream.config.Modules || []; + + // Public api. + return { + withModule: function(m) { + return enabledModules.indexOf(m) !== -1; + } + } + + }]; +}); diff --git a/static/js/services/services.js b/static/js/services/services.js index 22569173..18c5eeec 100644 --- a/static/js/services/services.js +++ b/static/js/services/services.js @@ -65,7 +65,8 @@ define([ 'services/rooms', 'services/resturl', 'services/roompin', - 'services/constraints'], function(_, + 'services/constraints', + 'services/modules'], function(_, desktopNotify, playSound, safeApply, @@ -108,7 +109,8 @@ localStatus, rooms, restURL, roompin, -constraints) { +constraints, +modules) { var services = { desktopNotify: desktopNotify, @@ -153,7 +155,8 @@ constraints) { rooms: rooms, restURL: restURL, roompin: roompin, - constraints: constraints + constraints: constraints, + modules: modules }; var initialize = function(angModule) { diff --git a/static/partials/buddy.html b/static/partials/buddy.html index 0edd87e3..f2dcc289 100644 --- a/static/partials/buddy.html +++ b/static/partials/buddy.html @@ -1,5 +1,5 @@
{{session.Id|displayName}}
-
({{session.count}}) {{display.subline}}
+
({{session.count}}) {{display.subline}}
diff --git a/static/partials/menu.html b/static/partials/menu.html index ef3754a5..36dbef11 100644 --- a/static/partials/menu.html +++ b/static/partials/menu.html @@ -3,7 +3,7 @@ - + From 0e2f660d55cc9c104bce58d8be757101a8b4856a Mon Sep 17 00:00:00 2001 From: Simon Eisenmann Date: Fri, 20 Feb 2015 18:10:49 +0100 Subject: [PATCH 2/2] Fixed SCSS lint warnings. --- src/styles/global/_withs.scss | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/styles/global/_withs.scss b/src/styles/global/_withs.scss index 5bcd2c9c..dae95b83 100644 --- a/src/styles/global/_withs.scss +++ b/src/styles/global/_withs.scss @@ -19,20 +19,26 @@ * */ -.visible-with-contacts, .visible-with-contacts-inline { - display: none; +.visible-with-contacts, +.visible-with-contacts-inline { + display: none; } + .hidden-with-contacts { } .with-contacts { - .visible-with-contacts { - display: block; - } - .visible-with-contacts-inline { - display: inline-block; - } - .hidden-with-contacts { - display: none; - } -} \ No newline at end of file + + .visible-with-contacts { + display: block; + } + + .visible-with-contacts-inline { + display: inline-block; + } + + .hidden-with-contacts { + display: none; + } + +}