").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/data/core.telegram.org/mtproto/auth_key.html b/data/core.telegram.org/mtproto/auth_key.html
new file mode 100644
index 0000000000..f4f309847c
--- /dev/null
+++ b/data/core.telegram.org/mtproto/auth_key.html
@@ -0,0 +1,202 @@
+
+
+
+
+
Creating an Authorization Key
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Creating an Authorization Key
+
+
The query format is described using Binary Data Serialization and the TL Language . All large numbers are transmitted as strings containing the required sequence of bytes in big endian order. Hash functions, such as SHA1, return strings (of 20 bytes) which can also be interpreted as big endian numbers. Small numbers (int
, long
, int128
, int256
) are normally little endian; however, if they are part of SHA1, the bytes are not rearranged. This way, if long
x
is the 64 lower-order bits of SHA1 of string s
, then the final 8 bytes of 20-byte string SHA1(s)
are taken and interpreted as a 64-bit integer.
+
Prior to sending off unencrypted messages (required in this instance to generate an authorization key), the client must undergo (p,q) authorization as follows.
+
DH exchange initiation
+
1) Client sends query to server
+
req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
+
or (deprecated)
+
req_pq#60469778 nonce:int128 = ResPQ;
+
The value of nonce is selected randomly by the client (random number) and identifies the client within this communication. Following this step, it is known to all.
+
2) Server sends response of the form
+
resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector long = ResPQ;
+
Here, string pq is a representation of a natural number (in binary big endian format). This number is the product of two different odd prime numbers. Normally, pq is less than or equal to 2^63-1. The value of server_nonce is selected randomly by the server; following this step, it is known to all.
+
server_public_key_fingerprints
is a list of public RSA key fingerprints (64 lower-order bits of SHA1 (server_public_key); the public key is represented as a bare type rsa_public_key n:string e:string = RSAPublicKey
, where, as usual, n and е are numbers in big endian format serialized as strings of bytes, following which SHA1 is computed) received by the server. Because of compatibility issues with older clients, only one public key fingerprint is returned as a result to deprecated req_pq
query; an answer to req_pq_multi
may contain more than one fingerprint.
+
All subsequent messages contain the pair (nonce, server_nonce) both in the plain-text, and the encrypted portions which makes it possible to identify a “temporary session” — one run of the key generation protocol described on this page that uses the same (nonce, server_nonce) pair. An intruder could not create a parallel session with the server with the same parameters and reuse parts of server- or client-encrypted messages for its own purposes in such a parallel session, because a different server_nonce would be selected by the server for any new “temporary session”.
+
Proof of work
+
3) Client decomposes pq into prime factors such that p < q.
+
This starts a round of Diffie-Hellman key exchanges.
+
Presenting proof of work; Server authentication
+
4) Client sends query to server
+
req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params
+
Here, encrypted_data is obtained as follows:
+
+new_nonce := another (good) random number generated by the client; after this query, it is known to both client and server;
+data := a serialization of
+p_q_inner_data#83c95aec pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 = P_Q_inner_data
+or of
+p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 expires_in:int = P_Q_inner_data;
+
+
+
+data_with_hash := SHA1(data) + data + (any random bytes); such that the length equals 255 bytes;
+encrypted_data := RSA (data_with_hash, server_public_key); a 255-byte long number (big endian) is raised to the requisite power over the requisite modulus, and the result is stored as a 256-byte number.
+
+
Someone might intercept the query and replace it with their own, independently decomposing pq into factors instead of the client. The only field that it makes sense to modify is new_nonce which would be the one an intruder would have to re-generate (because an intruder cannot decrypt the encrypted data sent by the client). Since all subsequent messages are encrypted using new_nonce or contain new_nonce_hash, they will not be processed by the client (an intruder would not be able to make it look as though they had been generated by the server because they would not contain new_nonce). Therefore, this intercept will only result in the intruder’s completing the authorization key generation protocol in place of the client and creating a new key (that has nothing to do with the client); however, the same effect could be achieved simply by creating a new key in one's own name.
+
An alternative form of inner data (p_q_inner_data_temp
) is used to create temporary keys, that are only stored in the server RAM and are discarded after at most expires_in
seconds. The server is free to discard its copy earlier. In all other respects the temporary key generation protocol is the same. After a temporary key is created, the client usually binds it to its principal authorisation key by means of the auth.bindTempAuthKey method, and uses it for all client-server communication until it expires; then a new temporary key is generated. Thus Perfect Forward Secrecy (PFS) in client-server communication is achieved. Read more about PFS »
+
5) Server responds with:
+
server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
+
+If the query is incorrect, the server returns a -404
error and the handshake must be restarted (any subsequent request also returns -404
, even if it is correct).
+
+
Here, encrypted_answer is obtained as follows:
+
+new_nonce_hash := 128 lower-order bits of SHA1 (new_nonce);
+answer := serialization
+ server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;
+
+answer_with_hash := SHA1(answer) + answer + (0-15 random bytes); such that the length be divisible by 16;
+
+tmp_aes_key := SHA1(new_nonce + server_nonce) + substr (SHA1(server_nonce + new_nonce), 0, 12);
+tmp_aes_iv := substr (SHA1(server_nonce + new_nonce), 12, 8) + SHA1(new_nonce + new_nonce) + substr (new_nonce, 0, 4);
+encrypted_answer := AES256_ige_encrypt (answer_with_hash, tmp_aes_key, tmp_aes_iv); here, tmp_aes_key is a 256-bit key, and tmp_aes_iv is a 256-bit initialization vector. The same as in all the other instances that use AES encryption, the encrypted data is padded with random bytes to a length divisible by 16 immediately prior to encryption.
+
+
Following this step, new_nonce is still known to client and server only. The client is certain that it is the server that responded and that the response was generated specifically in response to client query req_DH_params, since the response data are encrypted using new_nonce.
+
Client is expected to check whether p = dh_prime is a safe 2048-bit prime (meaning that both p and (p-1)/2 are prime, and that 22047 < p < 2 2048), and that g generates a cyclic subgroup of prime order (p-1)/2 , i.e. is a quadratic residue mod p . Since g is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on p mod 4g — namely, p mod 8 = 7 for g = 2 ; p mod 3 = 2 for g = 3 ; no extra condition for g = 4 ; p mod 5 = 1 or 4 for g = 5 ; p mod 24 = 19 or 23 for g = 6 ; and p mod 7 = 3, 5 or 6 for g = 7 . After g and p have been checked by the client, it makes sense to cache the result, so as not to repeat lengthy computations in future.
+
If the verification takes too long time (which is the case for older mobile devices), one might initially run only 15 Miller—Rabin iterations for verifying primeness of p and (p - 1)/2 with error probability not exceeding one billionth, and do more iterations later in the background.
+
Another optimization is to embed into the client application code a small table with some known “good” couples (g,p) (or just known safe primes p , since the condition on g is easily verified during execution), checked during code generation phase, so as to avoid doing such verification during runtime altogether. Server changes these values rarely, thus one usually has to put the current value of server's dh_prime into such a table. For example, current value of dh_prime equals (in big-endian byte order)
+
C7 1C AE B9 C6 B1 C9 04 8E 6C 52 2F 70 F1 3F 73 98 0D 40 23 8E 3E 21 C1 49 34 D0 37 56 3D 93 0F 48 19 8A 0A A7 C1 40 58 22 94 93 D2 25 30 F4 DB FA 33 6F 6E 0A C9 25 13 95 43 AE D4 4C CE 7C 37 20 FD 51 F6 94 58 70 5A C6 8C D4 FE 6B 6B 13 AB DC 97 46 51 29 69 32 84 54 F1 8F AF 8C 59 5F 64 24 77 FE 96 BB 2A 94 1D 5B CD 1D 4A C8 CC 49 88 07 08 FA 9B 37 8E 3C 4F 3A 90 60 BE E6 7C F9 A4 A4 A6 95 81 10 51 90 7E 16 27 53 B5 6B 0F 6B 41 0D BA 74 D8 A8 4B 2A 14 B3 14 4E 0E F1 28 47 54 FD 17 ED 95 0D 59 65 B4 B9 DD 46 58 2D B1 17 8D 16 9C 6B C4 65 B0 D6 FF 9C A3 92 8F EF 5B 9A E4 E4 18 FC 15 E8 3E BE A0 F8 7F A9 FF 5E ED 70 05 0D ED 28 49 F4 7B F9 59 D9 56 85 0C E9 29 85 1F 0D 81 15 F6 35 B1 05 EE 2E 4E 15 D0 4B 24 54 BF 6F 4F AD F0 34 B1 04 03 11 9C D8 E3 B9 2F CC 5B
+
6) Client computes random 2048-bit number b (using a sufficient amount of entropy) and sends the server a message
+
set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
+
Here, encrypted_data is obtained thus:
+
+g_b := pow(g, b) mod dh_prime;
+data := serialization
+ client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data
+
+data_with_hash := SHA1(data) + data + (0-15 random bytes); such that length be divisible by 16;
+
+encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);
+
+
The retry_id field is equal to zero at the time of the first attempt; otherwise, it is equal to auth_key_aux_hash from the previous failed attempt (see Item 9).
+
7) Thereafter, auth_key equals pow(g, {ab}) mod dh_prime
; on the server, it is computed as pow(g_b, a) mod dh_prime
, and on the client as (g_a)^b mod dh_prime
.
+
8) auth_key_hash is computed := 64 lower-order bits of SHA1 (auth_key). The server checks whether there already is another key with the same auth_key_hash and responds in one of the following ways.
+
DH key exchange complete
+
9) Server responds in one of three ways:
+
dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
+dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer;
+dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer;
+
+new_nonce_hash1, new_nonce_hash2, and new_nonce_hash3 are obtained as the 128 lower-order bits of SHA1 of the byte string derived from the new_nonce string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with auth_key_aux_hash. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.
+auth_key_aux_hash is the 64 higher-order bits of SHA1(auth_key). It must not be confused with auth_key_hash.
+
+
In the other case, the client goes to Item 6) generating a new b . In the first case, the client and the server have negotiated auth_key, following which they forget all other temporary data, and the client creates another encrypted session using auth_key. At the same time, server_salt is initially set to substr(new_nonce, 0, 8) XOR substr(server_nonce, 0, 8)
. If required, the client stores the difference between server_time received in 5) and its local time, to be able always to have a good approximation of server time which is required to generate correct message identifiers.
+
IMPORTANT : Apart from the conditions on the Diffie-Hellman prime dh_prime and generator g , both sides are to check that g , g_a and g_b are greater than 1 and less than dh_prime - 1 . We recommend checking that g_a and g_b are between 2^{2048-64} and dh_prime - 2^{2048-64} as well.
+
Error Handling (Lost Queries and Responses)
+
If the client fails to receive any response to its query from the server within a certain time interval, it may simply re-send the query. If the server has already sent a response to this query (exactly the same request and not just similar: all the parameters during the repeat request must take on the same values) but it did not get to the client, the server will simply re-send the same response. The server remembers the response for up to 10 minutes after having received the query in 1). If the server has already forgotten the response or the requisite temporary data, the client will have to start from the beginning.
+
The server may consider that if the client has already sent in the next query using the data from the previous server response to the specific client, the response is known to have been received by the client and may be forgotten by the server.
+
Usage Example
+
An example of a complete list of queries required to generate an authorization key is shown on a separate page .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/core.telegram.org/type/NearestDc.html b/data/core.telegram.org/type/NearestDc.html
new file mode 100644
index 0000000000..32b00a6c46
--- /dev/null
+++ b/data/core.telegram.org/type/NearestDc.html
@@ -0,0 +1,162 @@
+
+
+
+
+
NearestDc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
NearestDc
+
+
Object contains info on nearest data centre.
+
+
nearestDc #8e1a1775 country:string this_dc:int nearest_dc:int = NearestDc ;
+
+---functions---
+
+help.getNearestDc #1fb33026 = NearestDc ;
+
Constructors
+
+
+
+Constructor
+Description
+
+
+
+
+nearestDc
+Nearest data centre, according to geo-ip.
+
+
+
+
Methods
+
+
+
+Method
+Description
+
+
+
+
+help.getNearestDc
+Returns info on data centre nearest to the user.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/core.telegram.org/type/PollAnswerVoters.html b/data/core.telegram.org/type/PollAnswerVoters.html
new file mode 100644
index 0000000000..d223cf63e2
--- /dev/null
+++ b/data/core.telegram.org/type/PollAnswerVoters.html
@@ -0,0 +1,143 @@
+
+
+
+
+
PollAnswerVoters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PollAnswerVoters
+
+
How users voted on a certain poll answer
+
+
pollAnswerVoters #3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters ;
+
Constructors
+
+
+
+Constructor
+Description
+
+
+
+
+pollAnswerVoters
+A poll answer, and how users voted on it
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/tsf.telegram.org/css/health.css b/data/tsf.telegram.org/css/health.css
new file mode 100644
index 0000000000..cdcb3d3135
--- /dev/null
+++ b/data/tsf.telegram.org/css/health.css
@@ -0,0 +1,1375 @@
+body {
+ font-family: 'Roboto', sans-serif;
+ /*font-size: 14px;*/
+ color: #222;
+ margin: 0;
+ padding: 0;
+ overflow-x: hidden;
+}
+.dark body {
+ background-color: #242f3e;
+ color: #fff;
+}
+.dark a,
+.dark a:hover,
+.dark a:focus {
+ color: #4BBAFA;
+}
+
+.dark .nav .open > a,
+.dark .nav .open > a:hover,
+.dark .nav .open > a:focus,
+.dark .nav-pills > li.active > a,
+.dark .nav-pills > li.active > a:hover,
+.dark .nav-pills > li.active > a:focus {
+ background-color: #0f9ae4;
+}
+.dark .nav > li > a:hover,
+.dark .nav > li > a:focus {
+ background-color: #3C4756;
+}
+
+.dark .form-control {
+ background-color: #242f3e;
+ color: #fff;
+ border-color: #404C5C;
+}
+input.form-control::placeholder,
+textarea.form-control::placeholder {
+ color: #777;
+}
+.dark input.form-control::placeholder,
+.dark textarea.form-control::placeholder {
+ color: #969A9E;
+}
+
+.dropdown-filter-field {
+ background: transparent;
+ cursor: pointer;
+ padding: 8px 17px 8px 17px;
+ font-size: 14px;
+ margin: 0;
+ font-weight: 500;
+ position: relative;
+ color: #222;
+ border: none;
+}
+.dark .dropdown-filter-field {
+ background-color: transparent;
+}
+input.dropdown-filter-field:focus {
+ outline: none;
+ box-shadow: none;
+}
+
+.dark ::-webkit-scrollbar {
+ width: 12px;
+ background: #343F4C;
+}
+.dark ::-webkit-scrollbar-thumb {
+ background: #515A66;
+ border-radius: 5px;
+ border: 2px solid #343F4C;
+}
+
+
+
+/*!
+* Start Bootstrap - Simple Sidebar (http://startbootstrap.com/)
+* Copyright 2013-2016 Start Bootstrap
+* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE)
+*/
+
+/* Toggle Styles */
+
+#hl-wrapper {
+ padding-left: 0;
+}
+
+#hl-wrapper.transitions-ready {
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+}
+
+#hl-sidebar-wrapper {
+ position: fixed;
+ z-index: 100;
+ height: 100%;
+ width: 250px;
+ overflow: hidden;
+ margin-left: -250px;
+ overflow-y: scroll;
+ -webkit-overflow-scrolling: touch;
+ background: #fff;
+ border-right: 1px solid #e7e7e7;
+ scrollbar-width: none;
+ -ms-overflow-style: none; /* IE 11 */
+}
+.dark #hl-sidebar-wrapper {
+ background-color: #242f3e;
+ border-right-color: #404C5C;
+}
+#hl-wrapper.transitions-ready #hl-sidebar-wrapper {
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+}
+
+#hl-sidebar-wrapper::-webkit-scrollbar {
+ width: 0;
+}
+
+#hl-page-content-wrapper {
+ width: 100%;
+ position: absolute;
+ left: 0;
+}
+
+#hl-wrapper.toggled {
+ padding-left: 250px;
+}
+
+#hl-wrapper.toggled #hl-sidebar-wrapper {
+ box-shadow: 0px 0px 2px 1px rgba(0,0,0,0.1);
+}
+#hl-wrapper.toggled #hl-sidebar-shadow {
+ display: block;
+}
+
+
+
+
+.hl-menu-items,
+.hl-menu-items > li {
+ display: block;
+ padding: 0;
+ margin: 0;
+}
+.hl-menu-items {
+ position: relative;
+ overflow: hidden;
+ opacity: 1;
+ visibility: visible;
+ transition: all .2s ease;
+}
+.hl-menu-section .hl-menu-items {
+ margin-bottom: 10px;
+}
+.hl-menu-items .active {
+ transition: opacity .2s step-end;
+}
+.hl-menu-section-collapsed > .hl-menu-items .active {
+ transition: opacity .2s step-start;
+ opacity: 0;
+}
+.hl-menu-item {
+ display: block;
+ font-size: 13px;
+ font-weight: 500;
+ line-height: 18px;
+ color: #222;
+ padding: 9px 15px 9px 16px;
+ margin: 0;
+ transition: all .2s ease;
+ -webkit-font-smoothing: subpixel-antialiased;
+ cursor: pointer;
+}
+.active .hl-menu-item,
+a.hl-menu-item:hover,
+a.hl-menu-item:focus,
+.hl-menu-items .hl-badges:hover + a.hl-menu-item {
+ color: #222;
+ text-decoration: none;
+ background: #f2f2f2;
+}
+.dark .hl-menu-item {
+ color: #fff;
+}
+.dark .active .hl-menu-item,
+.dark a.hl-menu-item:hover,
+.dark a.hl-menu-item:focus,
+.dark .hl-menu-items .hl-badges:hover + a.hl-menu-item {
+ background: #3C4756;
+ color: #fff;
+}
+
+.hl-menu-header .hl-menu-item {
+ font-size: 16px;
+ line-height: 18px;
+ padding: 16px 15px 16px 16px;
+}
+
+.hl-topbar-wrap {
+ border-bottom: 1px solid #e7e7e7;
+ margin-bottom: 0;
+}
+.dark .hl-topbar-wrap {
+ border-color: #404C5C;
+}
+.hl-topbar {
+ padding: 12px 12px;
+ font-size: 18px;
+ line-height: 20px;
+}
+#hl-sidebar-shadow {
+ display: none;
+ background: rgba(0,0,0,0.01);
+ position: fixed;
+ left: 250px;
+ right: 0px;
+ top: 0;
+ bottom: 0;
+ z-index: 1000;
+}
+.hl-topbar-header {
+ font-size: 18px;
+ line-height: 34px;
+ font-weight: 500;
+}
+
+#hl-menu-toggle {
+ display: block;
+ float: left;
+ padding: 10px 10px;
+ line-height: 12px;
+ margin-right: 23px;
+ border: none;
+ background: none;
+ outline: none;
+}
+#hl-menu-toggle:focus {
+ outline: none;
+}
+.hl-menu-hamburger {
+ width: 18px;
+ height: 12px;
+ display: inline-block;
+}
+i.hl-menu-bar {
+ display: block;
+ height: 2px;
+ width: 18px;
+ background: #222;
+ margin-bottom: 3px;
+}
+.dark i.hl-menu-bar {
+ background: #fff;
+}
+i.hl-menu-bar:last-child {
+ margin-bottom: 0;
+}
+.hl-nav-pills {
+ padding: 7px 10px;
+}
+.hl-nav-pills > li,
+.hl-nav-pills > li+li {
+ margin: 3px;
+}
+.hl-nav-pills > li > a {
+ display: inline-block;
+ font-size: 14px;
+ line-height: 16px;
+ font-weight: 500;
+ padding: 8px 12px;
+ transition: all .2s ease;
+ border-radius: 16px;
+}
+.hl-nav-pills li.active > a {
+ background: #0f9ae4;
+ color: #fff;
+}
+.hl-top-filters {
+ padding: 0;
+ margin: 10px 0 0;
+}
+.h3-nav-pills {
+ position: relative;
+ margin-top: 24px;
+ margin-bottom: -16px;
+ padding: 0;
+ z-index: 1;
+}
+
+.hl-caret {
+ display: inline-block;
+ border-style: solid;
+ border-width: 0 0 2px 2px;
+ width: 9px;
+ height: 9px;
+ transform: rotateZ(-45deg) scale(.85) translate3d(2px, -1px, 0);
+ transform-origin: 50% 50%;
+ margin-left: 5px;
+ transition: all .2s ease;
+ border-color: #222;
+}
+.dark .hl-caret {
+ border-color: #fff;
+}
+.hl-dropdown.open .hl-caret {
+ border-color: #fff;
+}
+.dark .hl-dropdown.open .hl-caret {
+ border-color: #fff;
+}
+
+.hl-topbar-subtabs .dropdown-toggle,
+.hl-filters-dropdowns .dropdown-toggle {
+ color: #222;
+}
+.dark .hl-topbar-subtabs .dropdown-toggle,
+.dark .hl-filters-dropdowns .dropdown-toggle {
+ color: #fff;
+}
+.hl-topbar-subtabs .dropdown-toggle:hover,
+.hl-filters-dropdowns .dropdown-toggle:hover,
+.hl-topbar-subtabs .dropdown-toggle:active,
+.hl-filters-dropdowns .dropdown-toggle:active {
+ background-color: rgba(0,0,0,0.05);
+ color: #222;
+}
+.dark .hl-topbar-subtabs .dropdown-toggle:hover,
+.dark .hl-filters-dropdowns .dropdown-toggle:hover,
+.dark .hl-topbar-subtabs .dropdown-toggle:active,
+.dark .hl-filters-dropdowns .dropdown-toggle:active {
+ background-color: #3C4756;
+ color: #fff;
+}
+.hl-topbar-subtabs.hl-nav-pills > li.hl-dropdown > a,
+.hl-filters-dropdowns.hl-nav-pills > li.hl-dropdown > a {
+ border-radius: 3px;
+}
+.hl-nav-pills.hl-topbar-subtabs > li.hl-dropdown,
+.hl-nav-pills.hl-topbar-subtabs > li.hl-dropdown + li.hl-dropdown,
+.hl-nav-pills.hl-filters-dropdowns > li.hl-dropdown,
+.hl-nav-pills.hl-filters-dropdowns > li.hl-dropdown + li.hl-dropdown {
+ margin: 2px 3px;
+}
+.dark .dropdown-menu {
+ background-color: #3A4452;
+}
+
+
+.hl-dropdown-icon-except {
+ opacity: 0;
+ float: right;
+ width: 16px;
+ height: 16px;
+ border-radius: 8px;
+ overflow: hidden;
+ background: #ccc;
+ padding: 7px 4px;
+ transition: all .2s ease;
+ margin-right: -7px;
+ margin-top: 2px;
+}
+.dark .hl-dropdown-icon-except {
+ background: #88909B;
+}
+.hl-dropdown-icon-except:hover {
+ background: #aaa;
+}
+.hl-dropdown-icon-except:after {
+ display: block;
+ width: 8px;
+ height: 2px;
+ background: #fff;
+ content: '';
+}
+.dark .hl-dropdown-icon-except:after {
+ background-color: #3A4452;
+}
+.dropdown-menu a:hover > .hl-dropdown-icon-except {
+ opacity: 1;
+}
+.emoji-country-flag {
+ margin-right: 1px;
+ vertical-align: text-bottom;
+ line-height: 100%;
+}
+
+.scrollable-wide-wrap {
+ width: 100%;
+ overflow-x: scroll;
+}
+
+.hl-dropdown {
+ position: relative;
+ display: inline-block;
+}
+.hl-dropdown .dropdown-menu {
+ left: auto;
+ left: 0;
+ margin: 5px -4px 0;
+ border: 1px solid rgba(0, 0, 0, .06);
+ border-radius: 4px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ overflow: hidden;
+}
+.hl-dropdown span.dropdown-menu > ul.dropdown-menu {
+ position: static;
+ display: block;
+ float: none;
+ border: none;
+ box-shadow: none;
+ border-radius: 0;
+ min-width: 0;
+ margin: 0 -20px 0 0;
+ padding: 7px 20px 7px 0;
+ max-height: 500px;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ scrollbar-width: none;
+ -ms-overflow-style: none; /* IE 11 */
+}
+.hl-dropdown span.dropdown-menu > ul.dropdown-menu::-webkit-scrollbar {
+ width: 0;
+}
+.hl-dropdown .dropdown-menu {
+ margin-left: 0;
+ margin-top: 10px;
+}
+.hl-dropdown .dropdown-menu > li > a {
+ cursor: pointer;
+ padding: 8px 17px 8px 17px;
+ margin: 0;
+ font-weight: 500;
+ position: relative;
+ color: #222;
+}
+.dark .hl-dropdown .dropdown-menu > li > a {
+ color: #fff;
+}
+.dark .hl-dropdown > a.dropdown-toggle > small,
+.dark .hl-dropdown .dropdown-menu > li > a small {
+ font-size: inherit;
+ font-weight: normal;
+ /*font-style: italic;*/
+}
+.hl-dropdown .dropdown-menu > li > a:hover,
+.hl-dropdown .dropdown-menu > li > a:focus {
+ background-color: #f4f4f4;
+ color: #222;
+}
+.dark .hl-dropdown .dropdown-menu > li > a:hover,
+.dark .hl-dropdown .dropdown-menu > li > a:focus {
+ background-color: #4D5561;
+ color: #fff;
+}
+.hl-dropdown .dropdown-menu > li.selected > a:before,
+.hl-dropdown .dropdown-menu > li.selected > a:after {
+ position: absolute;
+ display: inline-block;
+ transform: rotateZ(-135deg);
+ transform-origin: 3px 3px;
+ right: 16px;
+ top: 14px;
+ content: '';
+ width: 8px;
+ height: 13px;
+ background-color: #9b9b9b;
+}
+.hl-dropdown .dropdown-menu > li.selected > a:after {
+ background-color: #fff;
+ transform: rotateZ(-135deg) translate3d(2.5px, 2.5px, 0);
+}
+.hl-dropdown .dropdown-menu > li.selected > a:hover:after,
+.hl-dropdown .dropdown-menu > li.selected > a:focus:after {
+ background-color: #f4f4f4;
+}
+
+.hl-select-dropdown {
+ position: relative;
+}
+.hl-select-dropdown .dropdown-toggle {
+ pointer-events: none;
+}
+select.hl-select {
+ display: inline-block;
+ font-size: 15px;
+ line-height: 160%;
+ padding: 0 6px;
+
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ appearance: none;
+ background-position: right center;
+ background-repeat: no-repeat;
+ background-size: 1ex;
+
+ background-origin: content-box;
+ position: absolute;
+ opacity: 0.01;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+
+@media(min-width:768px) {
+ #hl-menu-toggle {
+ display: none;
+ }
+ #hl-wrapper {
+ padding-left: 250px;
+ max-width: 1400px;
+ margin: 0 auto;
+ }
+ #hl-page-content-wrapper {
+ position: relative;
+ }
+ #hl-wrapper #hl-page-content-wrapper {
+ position: relative;
+ margin-right: 0;
+ }
+ .hl-topbar {
+ display: none;
+ }
+ .hl-topbar-no-subtabs {
+ display: none;
+ }
+ .hl-topbar-no-subtabs + .hl-top-filters {
+ margin-top: 0;
+ }
+ .hl-filters-periods {
+ float: right;
+ }
+ .hl-filters-dropdowns {
+ float: left;
+ }
+ .hl-menu-items {
+ padding-left: 19px;
+ padding-top: 10px;
+ }
+}
+@media(max-width: 768px) {
+ .hl-topbar-subtabs.hl-nav-pills {
+ padding-top: 0;
+ }
+ .hl-top-filters {
+ margin-top: 5px;
+ }
+ #hl-wrapper {
+ padding-left: 0;
+ }
+ .hl-filters-dropdowns {
+ padding-top: 2px;
+ }
+ .hl-filters-dropdowns .hl-dropdown:last-child span.dropdown-menu {
+ right: 0;
+ left: auto;
+ }
+ .hl-menu-item {
+ padding-top: 14px;
+ padding-bottom: 14px;
+ }
+}
+
+
+@media(max-width:640px) {
+ .scrollable-wide-wrap table.table-jobs {
+ width: 800px;
+ }
+ .scrollable-wide-wrap table.table {
+ min-width: 600px;
+ }
+}
+
+.hl-page h1,
+.hl-page h2,
+.hl-page h3,
+.hl-page h4,
+.hl-page h5 {
+ padding-left: 10px;
+}
+
+
+.chart_wrap_loading {
+ background-color: #fff;
+ color: #7A8A93;
+ font-size: 16px;
+ text-align: center;
+
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 40px 20px;
+ position: absolute;
+ width: 100%;
+ z-index: 300;
+ opacity: 1;
+ transition: all .2s ease;
+ pointer-events: none;
+}
+.dark .chart_wrap_loading {
+ background-color: #242f3e;
+ color: #546778;
+}
+.chart_wrap_rendered .chart_wrap_loading {
+ opacity: 0;
+}
+
+/* Long label */
+.chart_wrap_longlabel .tchart--switchers__side-legend:not(.tchart--switchers__no-space) {
+ width: 260px;
+}
+.chart_wrap_longlabel .tchart--switchers__side-legend .tchart--switcher span,
+.chart_wrap_longlabel .tchart--switchers__side-legend .tchart--switcher__active span {
+ max-width: 200px;
+}
+.chart_wrap_longlabel .tchart--tip-row span {
+ max-width: 160px;
+}
+
+.chart_wrap .tchart {
+ font-family: inherit;
+}
+
+.tchart--tip {
+ padding-bottom: 8px;
+}
+.chart_wrap .tchart--tip.tchart--tip__scroll .tchart--tip-scroller {
+ -webkit-overflow-scrolling: touch;
+ margin-right: -6px;
+}
+.chart_wrap__custom_scroll .tchart--tip.tchart--tip__scroll .tchart--tip-scroller {
+ -webkit-overflow-scrolling: touch;
+ padding-right: 4px;
+ margin-right: -6px;
+}
+.chart_wrap__custom_scroll .tchart--tip.tchart--tip__scroll .tchart--tip-scroller::-webkit-scrollbar {
+ margin: 0;
+ padding: 0;
+ width: 2px;
+ right: 0;
+ position: absolute;
+ opacity: 0;
+ transition: opacity .2s ease;
+}
+.chart_wrap__custom_scroll .tchart--tip.tchart--tip__scroll .tchart--tip-scroller::-webkit-scrollbar-track {
+ margin: 0;
+ padding: 0;
+}
+.chart_wrap__custom_scroll .tchart--tip.tchart--tip__scroll .tchart--tip-scroller::-webkit-scrollbar-thumb {
+ margin: 0;
+ padding: 0;
+ border-radius: 3px;
+ background: rgba(0,0,0,0.2);
+}
+
+.chart_wrap_tooltip_on_hover .tchart--tip-scroller {
+ max-height: 210px;
+ overflow: hidden;
+}
+.chart_wrap .tchart--tip-scroller-wrapper:before {
+ pointer-events: none;
+ top: -1px;
+}
+.chart_wrap .tchart--tip-scroller-wrapper:after {
+ pointer-events: none;
+ bottom: -1px;
+}
+.chart_wrap_tooltip_on_hover .tchart--tip-scroller-wrapper:before,
+.chart_wrap_tooltip_on_hover .tchart--tip-scroller-wrapper:after {
+ display: none;
+}
+
+
+.chart_wrap {
+ position: relative;
+ margin: 0 -10px;
+ transition: all .3s ease;
+}
+.chart_wrap.chart_wrap_rendered {
+ min-height: 0 !important;
+}
+.chart_wrap + .chart_wrap {
+ margin-top: 20px;
+}
+
+
+.rickshaw_legend {
+ width: 150px;
+ z-index: 10;
+
+ background-color: white;
+ margin-left: 0;
+ padding: 0;
+ left: 0;
+}
+.chart_bottom_legend {
+ position: static;
+ width: auto;
+ color: inherit;
+}
+.chart_legend ul {
+ padding: 0;
+}
+.chart_bottom_legend ul {
+ display: inline-block;
+}
+.chart_bottom_legend .line {
+ display: inline-block;
+}
+.chart_bottom_legend_x {
+ display: inline-block;
+ width: 17em;
+ /*float: right;*/
+}
+.chart_bottom_legend_value {
+ display: inline-block;
+ margin-left: 5px;
+}
+.rickshaw_legend .line {
+ line-height: 25px;
+}
+.rickshaw_legend .line.disabled {
+ opacity: 1;
+}
+
+.rickshaw_legend .line .swatch {
+ width: 15px;
+ height: 15px;
+ margin: 0 10px 0 3px;
+ border-radius: 0;
+ border: 0;
+ vertical-align: text-bottom;
+}
+.rickshaw_legend .line .action {
+ width: 25px;
+ height: 25px;
+ display: inline-block;
+ text-decoration: none !important;
+ opacity: 1;
+ vertical-align: top;
+}
+.rickshaw_legend .line.disabled .action {
+ opacity: 0;
+}
+.rickshaw_legend .line .action .icon-tick {
+ display: inline-block;
+ background: #FFF;
+ height: 9px;
+ width: 17px;
+ transform: rotate(-45deg);
+ -webkit-transform: rotate(-45deg);
+ border-width: 0 0 3px 3px;
+ border-style: solid;
+ margin: 3px 0 0;
+ vertical-align: text-top;
+}
+.rickshaw_legend .line .label {
+ color: #404040;
+ line-height: 25px;
+ font-size: 14px;
+}
+
+.rickshaw_graph path.line {
+ stroke-width: 1;
+}
+.rickshaw_graph .detail {
+ z-index: 11;
+}
+.rickshaw_graph .detail .x_label {
+ display: none;
+}
+.rickshaw_graph .detail .item {
+ font-size:14px;
+ line-height: 1.4;
+ padding: 0.5em;
+}
+.detail_swatch {
+ float: right;
+ display: inline-block;
+ width: 11px;
+ height: 11px;
+ margin: 3px 7px 0 0;
+}
+.rickshaw_graph .detail .date {
+ color: #a0a0a0;
+}
+
+
+
+
+
+.change_up {
+ color: #6a6;
+ padding-left: 5px;
+}
+.change_down {
+ color: #a66;
+ padding-left: 5px;
+}
+.change_none {
+ color: #888;
+ padding-left: 5px;
+}
+.change_up.slightly {
+ color: #9BB388;
+}
+.change_down.slightly {
+ color: #CC9483;
+}
+td .change_up,
+td .change_down,
+td .change_none {
+ float: right;
+}
+.dark .change_up {
+ color: #71BD71;
+}
+.dark .change_down {
+ color: #E86B6B;
+}
+.dark .change_none {
+ color: #969A9E;
+}
+.dark .change_up.slightly {
+ color: #869C75;
+}
+.dark .change_down.slightly {
+ color: #AD7D74;
+}
+
+.dark .table-bordered,
+.dark .table-bordered>thead>tr>th,
+.dark .table-bordered>tbody>tr>th,
+.dark .table-bordered>tfoot>tr>th,
+.dark .table-bordered>thead>tr>td,
+.dark .table-bordered>tbody>tr>td,
+.dark .table-bordered>tfoot>tr>td {
+ border-color: #404C5C;
+}
+
+.dark .table-hover>tbody>tr:hover>td,
+.dark .table-hover>tbody>tr:hover>th {
+ background-color: #3C4756;
+}
+
+.dark .table>thead>tr>td.warning,
+.dark .table>tbody>tr>td.warning,
+.dark .table>tfoot>tr>td.warning,
+.dark .table>thead>tr>th.warning,
+.dark .table>tbody>tr>th.warning,
+.dark .table>tfoot>tr>th.warning,
+.dark .table>thead>tr.warning>td,
+.dark .table>tbody>tr.warning>td,
+.dark .table>tfoot>tr.warning>td,
+.dark .table>thead>tr.warning>th,
+.dark .table>tbody>tr.warning>th,
+.dark .table>tfoot>tr.warning>th,
+.dark .table>thead>tr>td.bg-warning,
+.dark .table>tbody>tr>td.bg-warning,
+.dark .table>tfoot>tr>td.bg-warning,
+.dark .table>thead>tr>th.bg-warning,
+.dark .table>tbody>tr>th.bg-warning,
+.dark .table>tfoot>tr>th.bg-warning,
+.dark .table>thead>tr.bg-warning>td,
+.dark .table>tbody>tr.bg-warning>td,
+.dark .table>tfoot>tr.bg-warning>td,
+.dark .table>thead>tr.bg-warning>th,
+.dark .table>tbody>tr.bg-warning>th,
+.dark .table>tfoot>tr.bg-warning>th {
+ background-color: #474644;
+}
+.dark .table>thead>tr>td.warning:hover,
+.dark .table>tbody>tr>td.warning:hover,
+.dark .table>tfoot>tr>td.warning:hover,
+.dark .table>thead>tr>th.warning:hover,
+.dark .table>tbody>tr>th.warning:hover,
+.dark .table>tfoot>tr>th.warning:hover,
+.dark .table>thead>tr.warning>td:hover,
+.dark .table>tbody>tr.warning>td:hover,
+.dark .table>tfoot>tr.warning>td:hover,
+.dark .table>thead>tr.warning>th:hover,
+.dark .table>tbody>tr.warning>th:hover,
+.dark .table>tfoot>tr.warning>th:hover,
+.dark .table-hover>tbody>tr>td.warning:hover,
+.dark .table-hover>tbody>tr>th.warning:hover,
+.dark .table-hover>tbody>tr.warning:hover>td,
+.dark .table-hover>tbody>tr:hover>.warning,
+.dark .table-hover>tbody>tr.warning:hover>th,
+.dark .table>thead>tr>td.bg-warning:hover,
+.dark .table>tbody>tr>td.bg-warning:hover,
+.dark .table>tfoot>tr>td.bg-warning:hover,
+.dark .table>thead>tr>th.bg-warning:hover,
+.dark .table>tbody>tr>th.bg-warning:hover,
+.dark .table>tfoot>tr>th.bg-warning:hover,
+.dark .table>thead>tr.bg-warning>td:hover,
+.dark .table>tbody>tr.bg-warning>td:hover,
+.dark .table>tfoot>tr.bg-warning>td:hover,
+.dark .table>thead>tr.bg-warning>th:hover,
+.dark .table>tbody>tr.bg-warning>th:hover,
+.dark .table>tfoot>tr.bg-warning>th:hover,
+.dark .table-hover>tbody>tr>td.bg-warning:hover,
+.dark .table-hover>tbody>tr>th.bg-warning:hover,
+.dark .table-hover>tbody>tr.bg-warning:hover>td,
+.dark .table-hover>tbody>tr:hover>.bg-warning,
+.dark .table-hover>tbody>tr.bg-warning:hover>th {
+ background-color: #53514D;
+}
+.dark .table>thead>tr>td.success,
+.dark .table>tbody>tr>td.success,
+.dark .table>tfoot>tr>td.success,
+.dark .table>thead>tr>th.success,
+.dark .table>tbody>tr>th.success,
+.dark .table>tfoot>tr>th.success,
+.dark .table>thead>tr.success>td,
+.dark .table>tbody>tr.success>td,
+.dark .table>tfoot>tr.success>td,
+.dark .table>thead>tr.success>th,
+.dark .table>tbody>tr.success>th,
+.dark .table>tfoot>tr.success>th,
+.dark .table>thead>tr>td.bg-success,
+.dark .table>tbody>tr>td.bg-success,
+.dark .table>tfoot>tr>td.bg-success,
+.dark .table>thead>tr>th.bg-success,
+.dark .table>tbody>tr>th.bg-success,
+.dark .table>tfoot>tr>th.bg-success,
+.dark .table>thead>tr.bg-success>td,
+.dark .table>tbody>tr.bg-success>td,
+.dark .table>tfoot>tr.bg-success>td,
+.dark .table>thead>tr.bg-success>th,
+.dark .table>tbody>tr.bg-success>th,
+.dark .table>tfoot>tr.bg-success>th {
+ background-color: #456148;
+}
+.dark .table>thead>tr>td.success:hover,
+.dark .table>tbody>tr>td.success:hover,
+.dark .table>tfoot>tr>td.success:hover,
+.dark .table>thead>tr>th.success:hover,
+.dark .table>tbody>tr>th.success:hover,
+.dark .table>tfoot>tr>th.success:hover,
+.dark .table>thead>tr.success>td:hover,
+.dark .table>tbody>tr.success>td:hover,
+.dark .table>tfoot>tr.success>td:hover,
+.dark .table>thead>tr.success>th:hover,
+.dark .table>tbody>tr.success>th:hover,
+.dark .table>tfoot>tr.success>th:hover,
+.dark .table-hover>tbody>tr>td.success:hover,
+.dark .table-hover>tbody>tr>th.success:hover,
+.dark .table-hover>tbody>tr.success:hover>td,
+.dark .table-hover>tbody>tr:hover>.success,
+.dark .table-hover>tbody>tr.success:hover>th,
+.dark .table>thead>tr>td.bg-success:hover,
+.dark .table>tbody>tr>td.bg-success:hover,
+.dark .table>tfoot>tr>td.bg-success:hover,
+.dark .table>thead>tr>th.bg-success:hover,
+.dark .table>tbody>tr>th.bg-success:hover,
+.dark .table>tfoot>tr>th.bg-success:hover,
+.dark .table>thead>tr.bg-success>td:hover,
+.dark .table>tbody>tr.bg-success>td:hover,
+.dark .table>tfoot>tr.bg-success>td:hover,
+.dark .table>thead>tr.bg-success>th:hover,
+.dark .table>tbody>tr.bg-success>th:hover,
+.dark .table>tfoot>tr.bg-success>th:hover,
+.dark .table-hover>tbody>tr>td.bg-success:hover,
+.dark .table-hover>tbody>tr>th.bg-success:hover,
+.dark .table-hover>tbody>tr.bg-success:hover>td,
+.dark .table-hover>tbody>tr:hover>.bg-success,
+.dark .table-hover>tbody>tr.bg-success:hover>th {
+ background-color: #507053;
+}
+.dark .table>thead>tr>td.danger,
+.dark .table>tbody>tr>td.danger,
+.dark .table>tfoot>tr>td.danger,
+.dark .table>thead>tr>th.danger,
+.dark .table>tbody>tr>th.danger,
+.dark .table>tfoot>tr>th.danger,
+.dark .table>thead>tr.danger>td,
+.dark .table>tbody>tr.danger>td,
+.dark .table>tfoot>tr.danger>td,
+.dark .table>thead>tr.danger>th,
+.dark .table>tbody>tr.danger>th,
+.dark .table>tfoot>tr.danger>th,
+.dark .table>thead>tr>td.bg-danger,
+.dark .table>tbody>tr>td.bg-danger,
+.dark .table>tfoot>tr>td.bg-danger,
+.dark .table>thead>tr>th.bg-danger,
+.dark .table>tbody>tr>th.bg-danger,
+.dark .table>tfoot>tr>th.bg-danger,
+.dark .table>thead>tr.bg-danger>td,
+.dark .table>tbody>tr.bg-danger>td,
+.dark .table>tfoot>tr.bg-danger>td,
+.dark .table>thead>tr.bg-danger>th,
+.dark .table>tbody>tr.bg-danger>th,
+.dark .table>tfoot>tr.bg-danger>th {
+ background-color: #6E4146;
+}
+.dark .table>thead>tr>td.danger:hover,
+.dark .table>tbody>tr>td.danger:hover,
+.dark .table>tfoot>tr>td.danger:hover,
+.dark .table>thead>tr>th.danger:hover,
+.dark .table>tbody>tr>th.danger:hover,
+.dark .table>tfoot>tr>th.danger:hover,
+.dark .table>thead>tr.danger>td:hover,
+.dark .table>tbody>tr.danger>td:hover,
+.dark .table>tfoot>tr.danger>td:hover,
+.dark .table>thead>tr.danger>th:hover,
+.dark .table>tbody>tr.danger>th:hover,
+.dark .table>tfoot>tr.danger>th:hover,
+.dark .table-hover>tbody>tr>td.danger:hover,
+.dark .table-hover>tbody>tr>th.danger:hover,
+.dark .table-hover>tbody>tr.danger:hover>td,
+.dark .table-hover>tbody>tr:hover>.danger,
+.dark .table-hover>tbody>tr.danger:hover>th,
+.dark .table>thead>tr>td.bg-danger:hover,
+.dark .table>tbody>tr>td.bg-danger:hover,
+.dark .table>tfoot>tr>td.bg-danger:hover,
+.dark .table>thead>tr>th.bg-danger:hover,
+.dark .table>tbody>tr>th.bg-danger:hover,
+.dark .table>tfoot>tr>th.bg-danger:hover,
+.dark .table>thead>tr.bg-danger>td:hover,
+.dark .table>tbody>tr.bg-danger>td:hover,
+.dark .table>tfoot>tr.bg-danger>td:hover,
+.dark .table>thead>tr.bg-danger>th:hover,
+.dark .table>tbody>tr.bg-danger>th:hover,
+.dark .table>tfoot>tr.bg-danger>th:hover,
+.dark .table-hover>tbody>tr>td.bg-danger:hover,
+.dark .table-hover>tbody>tr>th.bg-danger:hover,
+.dark .table-hover>tbody>tr.bg-danger:hover>td,
+.dark .table-hover>tbody>tr:hover>.bg-danger,
+.dark .table-hover>tbody>tr.bg-danger:hover>th {
+ background-color: #7D4A50;
+}
+
+.hl-page {
+ padding: 0 15px;
+ margin: 0 auto;
+}
+
+.td-image {
+ width: 26px;
+ height: 26px;
+ background-color: #d9edf7;
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: 7px;
+ position: relative;
+ top: 0;
+ left: 0;
+ transition: .2s ease-out;
+ transition-property: width, height, top, left, margin;
+}
+.table > tbody > tr .cell-middle {
+ vertical-align: middle;
+}
+.table > tbody > tr .cell-muted-label {
+ vertical-align: middle;
+ font-weight: normal;
+ color: gray;
+}
+.dark .table > tbody > tr .cell-muted-label {
+ color: #969A9E;
+}
+.td-image:hover {
+ position: relative;
+ width: 50px;
+ height: 50px;
+ top: 12px;
+ left: 12px;
+ margin-left: -24px;
+ margin-top: -24px;
+ margin-right: 20px;
+}
+
+.chart_csv_export_wrap {
+ /*float: right;
+ clear: right;*/
+ /*position: absolute;
+ right: 200px;
+ top: -5px;
+ z-index: 1;*/
+}
+a.csv_link {
+ float: left;
+ clear: left;
+ display: block;
+ width: 70px;
+ margin: 10px 16px;
+ border: 0;
+ color: #0088cc;
+ font-size: 14px;
+ line-height: 16px;
+ font-weight: 500;
+ padding: 8px 12px;
+ transition: all .2s ease;
+ border-radius: 16px;
+}
+a.csv_link:hover {
+ background-color: #f0f6fa;
+ text-decoration: none;
+ color: #0088cc;
+}
+
+.phone_info_full {
+ font-size: 11px;
+}
+
+.phone_info_full ul {
+ padding-left: 30px;
+}
+
+/*Jobs candidates styles*/
+
+.jobs-header {
+ margin: 20px 0 10px;
+}
+.jobs-header .right-links {
+ font-size: 14px;
+ margin: 12px 0;
+ float: right;
+}
+.jobs-header .right-links .divider:before {
+ content: '·';
+ margin: 0 12px;
+ font-weight: 500;
+ color: #a8a8a8;
+}
+.sort-asc:after,
+.sort-desc:after {
+ content: '';
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 7px;
+ vertical-align: middle;
+ border-top: 6px solid;
+ border-right: 5px solid transparent;
+ border-left: 5px solid transparent
+}
+.sort-asc:after {
+ border-bottom: 6px solid;
+ border-top: 0 solid;
+}
+.td-search-wrap {
+ position: relative;
+ overflow: hidden;
+}
+.td-search-wrap:before {
+ content: '';
+ position: absolute;
+ left: 23px;
+ top: 10px;
+ display: inline-block;
+ vertical-align: top;
+ width: 20px;
+ height: 20px;
+ background-image: url('data:image/svg+xml,%3Csvg height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="none" fill-rule="evenodd" stroke="%23bbb" transform="translate(1 3)"%3E%3Ccircle cx="10.5" cy="5.5" r="5.5" stroke-width="2"/%3E%3Cpath d="m4 9.5c-.27614237 0-.5.22385763-.5.5v5c0 .2761424.22385763.5.5.5s.5-.2238576.5-.5v-5c0-.27614237-.22385763-.5-.5-.5z" fill="%23d8d8d8" transform="matrix(.70710678 .70710678 -.70710678 .70710678 10.010408 .832738)"/%3E%3C/g%3E%3C/svg%3E');
+}
+.td-search {
+ padding: 8px 17px 10px 64px;
+ font-size: 14px;
+ border: none;
+}
+.td-search:focus {
+ border: none;
+ box-shadow: none;
+}
+table.table-fixed tr {
+ border: 1px solid #e8e8e8;
+}
+.dark table.table-fixed tr {
+ border-color: #404C5C;
+}
+img.td-photo,
+span.photo-char {
+ width: 40px;
+ height: 40px;
+ border-radius: 20px;
+ background-color: #efefef;
+ float: left;
+ display: inline-block;
+ vertical-align: top;
+ text-align: center;
+ overflow: hidden;
+}
+img.td-photo[data-full-src] {
+ cursor: pointer;
+}
+span.photo-char {
+ font-size: 20px;
+ vertical-align: middle;
+ line-height: 40px;
+ color: #999;
+}
+.jobs-date {
+ position: absolute;
+ color: #a8a8a8;
+ bottom: 10px;
+}
+.dark .jobs-date {
+ color: #969A9E;
+}
+table.table-fixed tr th,
+table.table-fixed tr td {
+ position: relative;
+ padding: 12px 8px 32px;
+}
+table.table-fixed tr td big {
+ font-size: 1.1em;
+ font-weight: bold;
+ display: block;
+ padding-bottom: 2px;
+}
+table.table-fixed thead tr:first-child th:first-child,
+table.table-fixed tbody tr th:first-child,
+table.table-fixed tr td:first-child {
+ padding-left: 16px;
+ padding-right: 0;
+}
+table.table-fixed tr th:last-child,
+table.table-fixed tr td:last-child {
+ padding-right: 16px;
+}
+table.table-fixed tr th {
+ font-size: 1.1em;
+ text-transform: uppercase;
+ font-weight: bold;
+}
+table.table-fixed tr th,
+table.table-fixed tr td {
+ word-break: break-word;
+ border: none;
+}
+table.table-fixed td label {
+ font-weight: normal;
+ margin-bottom: 0;
+ position: relative;
+ overflow: hidden;
+ cursor: pointer;
+}
+table.table-fixed td label + label {
+ margin-right: 15px;
+}
+table.table-fixed td label input.hide-checkbox,
+table.table-fixed td label input.fave-checkbox {
+ position: absolute;
+ left: -100px;
+}
+table.table-fixed td label input.hide-checkbox + .icon {
+ display: inline-block;
+ vertical-align: top;
+ width: 20px;
+ height: 20px;
+ background-image: url('data:image/svg+xml,%3Csvg%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20width%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22%23aeb3b7%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22m15.5626454%204.23305534.2042993.2042993c.3905243.39052429.3905243%201.02368927%200%201.41421356l-9.9153765%209.9153765c-.39052429.3905243-1.02368927.3905243-1.41421356%200l-.2042993-.2042993c-.39052429-.3905243-.39052429-1.0236893%200-1.4142136l9.91537646-9.91537646c.3905243-.39052429%201.0236893-.39052429%201.4142136%200z%22%2F%3E%3Cpath%20d%3D%22m4.43735464%204.23305534-.2042993.2042993c-.39052429.39052429-.39052429%201.02368927%200%201.41421356l9.91537646%209.9153765c.3905243.3905243%201.0236893.3905243%201.4142136%200l.2042993-.2042993c.3905243-.3905243.3905243-1.0236893%200-1.4142136l-9.9153765-9.91537646c-.39052429-.39052429-1.02368927-.39052429-1.41421356%200z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E');
+}
+table.table-fixed td label input.hide-checkbox:checked + .icon {
+ background-image: url('data:image/svg+xml,%3Csvg%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20width%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%20transform%3D%22translate%281%20-1%29%22%3E%3Cpath%20d%3D%22m6.85723525%2015.8841139c1.03908268.7043927%202.292869%201.1158861%203.64276475%201.1158861%203.5898509%200%206.5-2.9101491%206.5-6.5%200-3.58985087-2.9101491-6.5-6.5-6.5-3.58985087%200-6.5%202.91014913-6.5%206.5%22%20stroke%3D%22%23aeb3b7%22%20stroke-linecap%3D%22round%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22m1.20710678%2010h5.82129088c.27614237%200%20.5.2238576.5.5%200%20.1388794-.05776237.2715021-.15944803.3660934l-3.01584949%202.8054414c-.19704162.1832945-.50381311.1777522-.69410536-.01254l-2.80544139-2.8054414c-.19526214-.1952622-.19526214-.5118446%200-.7071068.09376819-.0937682.22094515-.1464466.35355339-.1464466z%22%20fill%3D%22%23aeb3b7%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E');
+}
+table.table-fixed td label input.fave-checkbox + .icon {
+ display: inline-block;
+ vertical-align: top;
+ width: 20px;
+ height: 20px;
+ background-image: url('data:image/svg+xml,%3Csvg%20class%3D%22bq-rating-stars%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20width%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cpath%20d%3D%22m8.93887915%201.78386544c-.01182111.00489919-.02177324.01430797-.02705449.02706512l-1.87473767%204.52853179-4.8752243.39267602c-.01312131.00105686-.02529649.00724558-.03388337.01722312-.00900651.01046514-.01291855.02359016-.01196266.03635052.00095588.01276037.00677967.02515607.01724481.03416259l3.71473262%203.1969753-1.13360327%204.7745939c-.00305572.0128703-.00088675.0264271.00603194.0377016.00722154.011768.01852934.0194948.03097376.0224743.01244441.0029794.02602545.0012115.03779345-.0060101l4.16883242-2.558239%204.16883241%202.558239c.0112745.0069187.0248313.0090877.0377016.006032.0134337-.0031895.0243028-.0115221.0310162-.0224158.0067133-.0108936.0092708-.0243483.0060814-.037782l-1.1336033-4.7745939%203.7147326-3.1969753c.0099775-.00858688.0161663-.02076206.0172231-.03388337.0011085-.01376255-.0034663-.02667151-.0117589-.03641696-.0082925-.00974545-.0203029-.01632739-.0340654-.0174359l-4.8752243-.39267602-1.87473768-4.52853179c-.00507489-.01225869-.01481394-.02199773-.06534097-.02706512z%22%20stroke%3D%22%23aeb3b7%22%20stroke-width%3D%221.5%22%20fill%3D%22none%22%20transform%3D%22translate%28.2%20.5%29%20scale%281.1%201.1%29%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');
+}
+table.table-fixed td label input.fave-checkbox:checked + .icon {
+ background-image: url('data:image/svg+xml,%3Csvg%20class%3D%22bq-rating-stars%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20width%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cpath%20d%3D%22m8.93887915%201.78386544c-.01182111.00489919-.02177324.01430797-.02705449.02706512l-1.87473767%204.52853179-4.8752243.39267602c-.01312131.00105686-.02529649.00724558-.03388337.01722312-.00900651.01046514-.01291855.02359016-.01196266.03635052.00095588.01276037.00677967.02515607.01724481.03416259l3.71473262%203.1969753-1.13360327%204.7745939c-.00305572.0128703-.00088675.0264271.00603194.0377016.00722154.011768.01852934.0194948.03097376.0224743.01244441.0029794.02602545.0012115.03779345-.0060101l4.16883242-2.558239%204.16883241%202.558239c.0112745.0069187.0248313.0090877.0377016.006032.0134337-.0031895.0243028-.0115221.0310162-.0224158.0067133-.0108936.0092708-.0243483.0060814-.037782l-1.1336033-4.7745939%203.7147326-3.1969753c.0099775-.00858688.0161663-.02076206.0172231-.03388337.0011085-.01376255-.0034663-.02667151-.0117589-.03641696-.0082925-.00974545-.0203029-.01632739-.0340654-.0174359l-4.8752243-.39267602-1.87473768-4.52853179c-.00507489-.01225869-.01481394-.02199773-.06534097-.02706512z%22%20stroke%3D%22%23aeb3b7%22%20stroke-width%3D%221.5%22%20fill%3D%22%23aeb3b7%22%20transform%3D%22translate%28.2%20.5%29%20scale%281.1%201.1%29%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');
+}
+
+.popup-container {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: rgba(0,0,0,.6);
+ z-index: 101;
+ display: -webkit-flex;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+.media-popup-container {
+ padding: 30px 10px;
+}
+.media-popup-container .media-popup-cover {
+ background: #efefef no-repeat center;
+ background-size: cover;
+ transition: opacity .15s ease, visibility .15s ease;
+ border-radius: 2px;
+ overflow: hidden;
+}
+.media-popup-container .circle-progress-wrap {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ transition: all ease .1s;
+ transform: scale3d(1, 1, 1);
+ visibility: visible;
+ opacity: 1;
+}
+.media-popup-container .circle-progress-wrap.ohide,
+.media-popup-container.fullsize .circle-progress-wrap,
+.media-popup-container .media-popup-wrap.file-loaded .circle-progress-wrap {
+ visibility: hidden;
+ opacity: 0;
+}
+.media-popup-container .circle-progress.infinite {
+ transition: stroke-width ease .1s, r ease .1s;
+}
+.media-popup-container .media {
+ box-shadow: 0 0 12px rgba(0, 0, 0, .3);
+ transition: opacity .15s ease, visibility .15s ease;
+ border-radius: 2px;
+ overflow: hidden;
+}
+.media-popup-container .media-photo {
+ background: no-repeat center;
+ background-size: cover;
+}
+.media-popup-container .media-video {
+ vertical-align: top;
+}
+.media-popup-container .media-video:focus {
+ outline: none;
+}
+.media-popup-container.scroll-x {
+ justify-content: start;
+ padding-right: 0;
+}
+.media-popup-container.scroll-x .media-popup-wrap {
+ padding-right: 10px;
+}
+.media-popup-container.scroll-y {
+ align-items: start;
+ padding-bottom: 0;
+}
+.media-popup-container.scroll-y .media-popup-wrap {
+ padding-bottom: 30px;
+}
+.media-popup-container.can-zoom .media-popup-wrap {
+ cursor: zoom-in;
+}
+.media-popup-container.fullsize.can-zoom .media-popup-wrap {
+ cursor: zoom-out;
+}
+@media (min-width: 560px) {
+ .media-popup-container {
+ padding: 50px;
+ }
+ .media-popup-container.scroll-x {
+ justify-content: start;
+ padding-right: 0;
+ }
+ .media-popup-container.scroll-x .media-popup-wrap {
+ padding-right: 50px;
+ }
+ .media-popup-container.scroll-y {
+ align-items: start;
+ padding-bottom: 0;
+ }
+ .media-popup-container.scroll-y .media-popup-wrap {
+ padding-bottom: 50px;
+ }
+}