/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl,
dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody,
tfoot, thead, tr, th, td, button {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-family: "Arial", "Helvetica", sans-serif;
  color: #222;
  font-size: 13px;
  margin: 0;
  padding: 20px 20px 0 20px;
  direction: __MSG_@@bidi_dir__;
}

/*
* The "app-v2" class is added to the <html> node by remoting.init if it's
* running as a V2 app.
*/
html.apps-v2 .apps-v1-only {
  display: none !important;
}

html:not(.apps-v2) .apps-v2-only {
  display: none !important;
}

a {
  text-decoration: none;
  color: #15c;
  cursor: pointer;
}

a:active {
  color: #d14836;
}

strong, b {
  color: #000;
}

/*------------------------------------------------------------------
Component: Buttons
------------------------------------------------------------------*/
button {
  min-width: 72px;
  border:1px solid #DCDCDC;
  color: #444;
  font-size: 11px;
  font-weight: bold;
  height: 27px;
  padding: 0 8px;
  line-height: 27px;
  border-radius:2px;
  -webkit-transition: all 0.218s;
  background-image: -webkit-gradient(linear, left top, left bottom,
                                     from(#f5f5f5), to(#f1f1f1));
  box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
}

button:hover {
  border: 1px solid #C6C6C6;
  color: #222;
  transition: all 0.0s;
  background-image: -webkit-gradient(linear, left top, left bottom,
                                     from(#f8f8f8), to(#f1f1f1));
  box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);
}

button:active {
  background: #f6f6f6 -webkit-gradient(linear,left top,left bottom,
                                       from(#f6f6f6),to(#f1f1f1));
  box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.2);
}

button:focus {
  outline: none;
  border: 1px solid #4d90fe;
}

button[disabled], button[disabled]:hover, button[disabled]:active {
  background: linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5);
  border-color: #aaa;
  color: #888;
  box-shadow: none;
}

/* Colored Buttons */
.kd-button-share {
  border: 1px solid #29691d;
  color: #FFF;
  text-shadow: 0px 1px rgba(0,0,0,0.1);
  background-image: -webkit-gradient(linear,left top,left bottom,
                                     from(#3d9400),to(#398a00));
}

.kd-button-share:hover {
  border: 1px solid #404040;
  color: #FFF;
  text-shadow: 0px 1px rgba(0,0,0,0.3);
  background-image: -webkit-gradient(linear,left top,left bottom,
                                     from(#3d9400),to(#368200));
}

.kd-button-share:active, .kd-button-share:focus:active {
  box-shadow: inset 0px 1px 2px rgba(0,0,0,0.3);
  background-image: -webkit-gradient(linear,left top,left bottom,
                                     from(#3d9400),to(#368200));
}

.kd-button-share:focus {
  border-color:#29691d;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.5);
}

.kd-button-share:focus:hover {
  box-shadow:inset 0 0 0 1px #fff, 0px 1px 1px rgba(0,0,0,0.1);
}

.kd-button-share[disabled], .kd-button-share[disabled]:hover,
.kd-button-share[disabled]:active {
  border: 1px solid #505050;
  color: #FFF;
  opacity: 0.5;
  text-shadow: 0px 1px rgba(0,0,0,0.1);
  background-image: -webkit-gradient(linear,left top,left bottom,
                                     from(#3d9400),to(#398a00));
}

::-webkit-scrollbar {
    width: 16px;
    height: 16px;
}

::-webkit-scrollbar-button {
    height: 0px;
    width: 0px;
}

::-webkit-scrollbar-thumb {
    min-height: 28px;
    padding-top:100px;
    background-clip:padding-box;
    background-color: rgba(0,0,0,0.2);
    box-shadow: inset 1px 1px 0px rgba(0,0,0,0.10),
                inset 0px -1px 0px  rgba(0,0,0,0.07);
}

::-webkit-scrollbar-thumb:hover {
    background-color: rgba(0,0,0,0.4);
    box-shadow: inset 1px 1px 1px rgba(0,0,0,0.25);
}

::-webkit-scrollbar-thumb:active {
    box-shadow: inset 1px 1px 3px rgba(0,0,0,0.35);
    background-color: rgba(0,0,0,0.5);
}

::-webkit-scrollbar-track:hover {
  background-color:rgba(0,0,0,0.05);
   box-shadow: inset 1px 0px 0px  rgba(0,0,0,0.10);
}

::-webkit-scrollbar-track:active {
  background-color:rgba(0,0,0,0.05);
  box-shadow: inset 1px 0px 0px  rgba(0,0,0,0.14),
              inset -1px -1px 0px  rgba(0,0,0,0.07);
}

::-webkit-scrollbar-track-piece {
  background: white;
}

/*------------------------------------------------------------------
Component: Text Field
------------------------------------------------------------------*/
input[type=text],
input[type=password] {
    height: 29px;
    padding-__MSG_@@bidi_start_edge__: 8px;
    color: #333;
    border: 1px solid #d9d9d9;
    border-top: 1px solid #c0c0c0;
    vertical-align: top;
    -webkit-border-radius: 1px;
}
input[type=text]:hover,
input[type=password]:hover {
    border: 1px solid #b9b9b9;
    border-top: 1px solid #a0a0a0;
    box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
}
input[type=text]:focus,
input[type=password]:focus {
    box-shadow: inset 0px 1px 2px rgba(0,0,0,0.3);
    outline: none;
    border: 1px solid #4d90fe;
}

/*------------------------------------------------------------------
Component: Modal Dialog
------------------------------------------------------------------*/
.kd-modaldialog:not([hidden]) {
  opacity: 1.0;
  -webkit-transform: scale(1.0);
}

.kd-modaldialog {
  box-shadow: 0 4px 16px rgba(0,0,0,0.2);
  background: white;
  outline:1px solid rgba(0,0,0,0.2);
  padding:30px 42px;
  width: 500px;
  height: auto;
  overflow: hidden;
  z-index: 100;
  opacity: 0.0;
  -webkit-transform: scale(1.05);
  -webkit-transition: all 0.218s;
}

h1.icon-label {
  vertical-align: 14px;
  margin-bottom: 60px;
  font-size: 28px;
  font-weight: 300;
  color: #999;
  font-family: "Open sans", "Ariel", sans-serif;
  line-height: 24px;
  display: inline-block;
  margin-__MSG_@@bidi_start_edge__: 10px;
}

h2 {
  font-size: 16px;
  line-height:24px;
  font-weight: normal;
  color: #222;
  margin-bottom: 10px;
}

.h2-secondary {
  float: __MSG_@@bidi_end_edge__;
}

#host-list-loading-indicator:not(.loading) #host-list-loading,
#host-list-loading-indicator.loading #host-list-reload {
  display: none;
}

.icon-black > img {
  opacity: 0.3;
}

.icon-black:hover > img {
  opacity: 0.4;
}

section h2 {
  color: #666;
}

header {
  display: -webkit-flex;
  width: 100%;
}

html {
  -webkit-user-select: none;
  cursor: default;
  height: 100%; /* Remove phantom pixels at the bottom of the body. */
}

section {
  width: 690px;
  margin: 30px auto;
}

section {
  border: 1px solid #e5e5e5;
  background: #f9f9f9;
  padding: 20px 30px 20px 30px;
  border-radius: 3px;
  box-shadow: 0 2px 5px rgba(0,0,0,0.07);
  position: relative;
}

.access-code-digit-group {
  /*
    Used for each of the four-digit components of the access code as
    displayed by the host.
  */
  padding: 0px 6px;
}

.box-spacer {
  -webkit-flex: 1;
}

.centered {
  margin: auto;
}

.button-row {
  display: -webkit-flex;
  -webkit-flex-direction: row;
  -webkit-justify-content: flex-end;
  margin-top: 20px;
}

.button-row button {
  margin-left: 5px;
}

.button-row span:first-child {
  width: 100%;
}

.clickable {
  cursor: pointer;
}

.box {
  display: -webkit-flex;
}

.host-list-empty-instructions {
  padding-__MSG_@@bidi_start_edge__: 36px;
  color: #666;
  background-image: url('host_setup_instructions.webp');
  background-repeat: no-repeat;
  background-position: -3px -2px;
}

#host-list-empty-hosting-supported {
  margin-top: 14px;
  padding-top: 20px;
  border-top: 1px solid #E5E5E5;
  background-position-y: 18px;
}

.selectable {
  -webkit-user-select: text;
  cursor: text;
}

.section-row {
  display: -webkit-flex;
  -webkit-align-items: center;
  padding: 10px 0;
  border-top: 1px solid #EBEBEB;
}

.section-row button {
  margin-__MSG_@@bidi_start_edge__: 20px;
}

.section-row:first-child,
.section-row.no-non-local-hosts {
  border-top: none;
}

.editbox-label {
  line-height: 29px;
  font-weight: bold;
}

.error-state {
  background-image: url('icon_warning.webp');
  background-repeat: no-repeat;
  background-position: top __MSG_@@bidi_start_edge__;
  padding-__MSG_@@bidi_start_edge__: 30px;
  padding-top: 5px;
  color: #900;
}

.error-state.multi-line-error-state {
  padding-top: 0;
  min-height: 22px;
}

.expiring {
  color: #900 !important;
}

.infographic {
  position: absolute;
  __MSG_@@bidi_end_edge__: 22px;
  top: 24px;
}

.infographic-description {
  height: 80px;
  width: 400px;
  padding-top: 2em;
}

.information-box {
  background-color: #f9edbe;
  border: 1px solid #f0c36d;
  -webkit-border-radius: 2px;
  box-shadow: 0px 2px 4px rgba(0,0,0,0.2);
  color: #222;
  padding: 8px 16px;
  text-align: center;
  font-size: 12px;
  margin-top: 30px;
}

#butter-bar {
  position: absolute;
  top: 80px;
  left: 0;
  display: -webkit-box;
  width: 100%;
}

#butter-bar-dismiss img {
  vertical-align: top;
  opacity: 0.4;
  margin-__MSG_@@bidi_start_edge__: 2px;
  margin-__MSG_@@bidi_end_edge__: -12px;
}

#butter-bar-dimiss:hover {
  opacity: 0.7;
}

#butter-bar > p {
  background-color: #f9edbe;
  border: 1px solid #f0c36d;
  -webkit-border-radius: 2px;
  -webkit-box-shadow: 0px 2px 4px rgba(0,0,0,0.2);
  color: #222;
  font-size: 12px;
  padding: 4px 16px;
  margin: auto;
}

#butter-bar a {
  color: inherit;
  text-decoration: underline;
  padding-__MSG_@@bidi_start_edge__: 2px;
}

#paired-clients-list table {
  width: 100%;
}

.message {
  margin-bottom: 24px;
}

.mode-select-button-column {
  text-align: __MSG_@@bidi_end_edge__;
}

.mode-select-button-column button {
  min-width: 72px;
}

td {
  vertical-align: middle;
}

thead {
  font-weight: bold;
}

.host-online.clickable:hover,
.host-online.clickable.child-focused {
  background-color: #f2f2f2;
}

.host-list-rename-icon,
.host-list-remove-icon {
  opacity: 0;
}

.section-row:hover .host-list-rename-icon,
.section-row.child-focused .host-list-rename-icon {
  opacity: 0.6;
}

.section-row:hover .host-list-remove-icon,
.section-row.child-focused .host-list-remove-icon {
  opacity: 0.3;
}

.host-list-rename-icon:hover {
  opacity: 1 !important;
}

.host-list-remove-icon:hover {
  opacity: 0.5 !important;
}

.host-list-edit {
  padding: 0 5px;
}

.host-list-label, .host-list-label:visited, .host-list-label:active {
  color: inherit;
  cursor: inherit;
}

.host-list-main-icon {
  margin-__MSG_@@bidi_end_edge__: 10px;
  vertical-align: middle;
  position: relative;
}

.host-list-main-icon > span {
  background-image: url('icon_warning.webp');
  background-repeat: no-repeat;
  position: absolute;
  width: 22px;
  height: 22px;
  bottom: -5px;
  right: -10px;
}

.host-offline .host-list-label,
.host-offline .host-list-main-icon {
  opacity: 0.5;
}

button {
  white-space:nowrap;
}

.small-print {
  font-size: 13px;
  color: #AAA;
}

.waiting {
  background-image: url('spinner.gif');
  background-repeat: no-repeat;
  background-position: __MSG_@@bidi_start_edge__ 3px;
  padding: 5px 30px;
  color: rgb(180, 180, 180);
}

.prominent {
  color: #222;
}

#access-code-countdown-container {
  height: 50px;
  text-align: center;
}

#access-code-display {
  margin-top: 50px;
  color: rgb(0, 0, 0);
  font-weight: bold;
  font-size: 26px;
  text-align: center;
}

#access-code-entry-row {
  margin-top: 24px;
}

#ask-pin-form .table-label {
  min-width: 120px;
  text-align: __MSG_@@bidi_end_edge__;
  display: inline-block;
}

#ask-pin-form > div {
  margin-bottom: 8px;
}

.checkbox-label {
  display: block;
  padding-__MSG_@@bidi_start_edge__: 20px;
  margin-top: 12px;
}

.checkbox-label input[type=checkbox] {
  float: __MSG_@@bidi_start_edge__;
  margin-__MSG_@@bidi_start_edge__: -20px;
  margin-__MSG_@@bidi_end_edge__: 0;
  width: 20px;
  margin-top: 2px;
}

#current-email {
  color: rgba(0, 0, 0, 0.5);
}

#daemon-plugin-container {
  width: 0;
  height: 0;
}

.dialog-container {
  position: absolute;
  top: 200px;
  left: 0;
  width: 100%;
  display: -webkit-flex;
}

.dialog-screen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #fff;
  opacity: 0.75;
}

/* TODO(jamiewalch): crbug.com/252796: Remove these once crbug.com/240772
 * is fixed. */
.no-horizontal-scroll {
  overflow-x: hidden !important;
}

.no-vertical-scroll {
  overflow-y: hidden !important;
}

html.apps-v2.scrollable {
  overflow: scroll;
}


/* TODO(jamiewalch): Reinstate this if we're able to get translations for
 *     "Why is this safe?" that don't overflow in any language.
#host-setup-dialog {
  width: 460px;
}
*/

#host-plugin-container {
  width: 0;
  height: 0;
}

/* The NAT traversal state is independent of the app mode, and both need
 * to be combined to determine the visibility of the butter bar. We use
 * a style for the former and the 'hidden' property for the latter. */
#nat-box.traversal-enabled {
  display: none;
}

#remember-pin {
  width: 315px;
}

#session-mode {
  position: absolute;
  box-shadow: 0 0 8px 0 black;
  -webkit-user-select: none;
}

#session-client-plugin {
  display: block;
}

.session-client-inactive {
  -webkit-filter: grayscale(70%);
  -webkit-transition: -webkit-filter 0.218s;
}

#set-pin-table td {
  border-bottom: 6px solid transparent;
}

#top-secondary {
  margin-top: 10px
}

#webapp-description {
  margin-bottom: 10px;
}

* {
  box-sizing: border-box;
}

/*
 * Setting hidden on elements that match some rule overriding 'display' doesn't
 * do what you would expect unless this is made explicit (and !important).
 */
[hidden] {
  display: none !important;
}
