/*
 * Many CSS class names in this file use the verbose "vimiumXYZ" as the class name. This is so we
 * don't use the same CSS class names that the page is using, so the page's CSS doesn't mess with
 * the style of our Vimium dialogs.
 *
 * The z-indexes of Vimium elements are very large, because we always want them to show on top. We
 * know that Chrome supports z-index values up to about 2^31. The values we use are large numbers
 * approaching that bound. However, we must leave headroom for link hints. Hint marker z-indexes
 * start at 2140000001.
 */

/*
 * This vimiumReset class can be added to any of our UI elements to give it a clean slate. This is
 * useful in case the page has declared a broad rule like "a { padding: 50px; }" which will mess up
 * our UI. These declarations contain more specifiers than necessary to increase their specificity
 * (precedence).
 */
.vimiumReset,
div.vimiumReset,
span.vimiumReset,
table.vimiumReset,
a.vimiumReset,
a:visited.vimiumReset,
a:link.vimiumReset,
a:hover.vimiumReset,
td.vimiumReset,
tr.vimiumReset {
  background: none;
  border: none;
  bottom: auto;
  box-shadow: none;
  color: black;
  cursor: auto;
  display: inline;
  float: none;
  font-family : "Helvetica Neue", "Helvetica", "Arial", sans-serif;
  font-size: inherit;
  font-style: normal;
  font-variant: normal;
  font-weight: normal;
  height: auto;
  left: auto;
  letter-spacing: 0;
  line-height: 100%;
  margin: 0;
  max-height: none;
  max-width: none;
  min-height: 0;
  min-width: 0;
  opacity: 1;
  padding: 0;
  position: static;
  right: auto;
  text-align: left;
  text-decoration: none;
  text-indent: 0;
  text-shadow: none;
  text-transform: none;
  top: auto;
  vertical-align: baseline;
  white-space: normal;
  width: auto;
  z-index: 2140000000; /* Vimium's reference z-index value. */
}

thead.vimiumReset, tbody.vimiumReset {
  display: table-header-group;
}

tbody.vimiumReset {
  display: table-row-group;
}

/* Linkhints CSS */

div#vimiumHintMarkerContainer {
  pointer-events: none;
}

div.internalVimiumHintMarker {
  position: absolute;
  display: block;
  top: -1px;
  left: -1px;
  white-space: nowrap;
  overflow: hidden;
  font-size: 11px;
  padding: 1px 3px 0px 3px;
  background: linear-gradient(to bottom, #FFF785 0%,#FFC542 100%);
  border: solid 1px #C38A22;
  border-radius: 3px;
  box-shadow: 0px 3px 7px 0px rgba(0, 0, 0, 0.3);
}

div.internalVimiumHintMarker span {
  color: #302505;
  font-family: Helvetica, Arial, sans-serif;
  font-weight: bold;
  font-size: 11px;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6);
}

div.internalVimiumHintMarker > .matchingCharacter {
  color: #D4AC3A;
}

div > .vimiumActiveHintMarker span {
  color: #A07555 !important;
}

/* Input hints CSS */

div.internalVimiumInputHint {
  position: absolute;
  display: block;
  background-color: rgba(255, 247, 133, 0.3);
  border: solid 1px #C38A22;
  pointer-events: none;
}

div.internalVimiumSelectedInputHint {
  background-color: rgba(255, 102, 102, 0.3);
  border: solid 1px #993333 !important;
}

div.internalVimiumSelectedInputHint span {
  color: white !important;
}

/* Frame Highlight Marker CSS*/
div.vimiumHighlightedFrame {
  position: fixed;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  padding: 0px;
  margin: 0px;
  border: 5px solid yellow;
  box-sizing: border-box;
  pointer-events: none;
}

/* Help Dialog CSS */

iframe.vimiumHelpDialogFrame {
  background-color: rgba(10,10,10,0.6);
  padding: 0px;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  display: block;
  position: fixed;
  border: none;
  z-index: 2139999997; /* Three less than the reference value. */
}

div#vimiumHelpDialogContainer {
  opacity:1.0;
  background-color:white;
  border:2px solid #b3b3b3;
  border-radius:6px;
  width: 840px;
  max-width: calc(100% - 100px);
  max-height: calc(100% - 100px);
  margin: 50px auto;
  overflow-y: auto;
  overflow-x: auto;
}

div#vimiumHelpDialog {
  min-width: 600px;
  padding:8px 12px;
}

span#vimiumTitle, span#vimiumTitle span,  span#vimiumTitle * { font-size:20px; }
#vimiumTitle {
  display: block;
  line-height: 130%;
  white-space: nowrap;
}
td.vimiumHelpDialogTopButtons {
  width: 100%;
  text-align: right;
}
#helpDialogOptionsPage, #helpDialogWikiPage {
  font-size: 14px;
  padding-left: 5px;
  padding-right: 5px;
}
div.vimiumColumn {
  width:50%;
  float:left;
  font-size: 11px;
  line-height: 130%;
}

div.vimiumColumn tr {
    display: table-row;
}

div.vimiumColumn td {
    display: table-cell;
    font-size: 11px;
    line-height: 130%;
}
div.vimiumColumn table, div.vimiumColumn td, div.vimiumColumn tr { padding:0; margin:0; }
div.vimiumColumn table { width:100%; table-layout:auto; }
div.vimiumColumn td { vertical-align:top; padding:1px; }
div#vimiumHelpDialog div.vimiumColumn tr > td:first-of-type {
  /* This is the "key" column, e.g. "j", "gg". */
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:14px;
  text-align:right;
  white-space:nowrap;
}
span.vimiumHelpDialogKey {
  background-color: rgb(243,243,243);
  color: rgb(33,33,33);
  margin-left: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
  padding-left: 4px;
  padding-right: 4px;
  border-radius: 3px;
  border: solid 1px #ccc;
  border-bottom-color: #bbb;
  box-shadow: inset 0 -1px 0 #bbb;
  font-family: monospace;
  font-size: 11px;
}
/* Make the description column as wide as it can be. */
div#vimiumHelpDialog div.vimiumColumn tr > td:nth-of-type(3) { width:100%; }
div#vimiumHelpDialog div.vimiumDivider {
  display: block;
  height:1px;
  width:100%;
  margin:10px auto;
  background-color:#9a9a9a;
}
div#vimiumHelpDialog td.vimiumHelpSectionTitle {
  padding-top:3px;
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:16px;
  font-weight:bold;
}
div#vimiumHelpDialog td.vimiumHelpDescription {
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:14px;
}
div#vimiumHelpDialog span.vimiumCopyCommandNameName {
  font-style: italic;
  cursor: pointer;
  font-size: 12px;
}
/* Advanced commands are hidden by default until you show them. */
div#vimiumHelpDialog tr.advanced { display: none; }
div#vimiumHelpDialog.showAdvanced tr.advanced { display: table-row; }
div#vimiumHelpDialog div.advanced td:nth-of-type(3) { color: #555; }
div#vimiumHelpDialog a.closeButton {
  font-family:"courier new";
  font-weight:bold;
  color:#555;
  text-decoration:none;
  font-size:24px;
  position: relative;
  top: 3px;
  padding-left: 5px;
  cursor: pointer;
}
div#vimiumHelpDialog a {
  text-decoration: underline;
}

div#vimiumHelpDialog a.closeButton:hover {
  color:black;
  -webkit-user-select:none;
}
div#vimiumHelpDialogFooter {
  display: block;
  position: relative;
  margin-bottom: 37px;
}
table.helpDialogBottom {
  width:100%;
}
td.helpDialogBottomRight {
  width:100%;
  float:right;
  text-align: right;
}
td.helpDialogBottomRight, td.helpDialogBottomLeft {
  padding: 0px;
}
div#vimiumHelpDialogFooter * { font-size:10px; }
a#toggleAdvancedCommands, span#help-dialog-tip {
  position: relative;
  top: 19px;
  white-space: nowrap;
  font-size: 10px;
}
a:link.vimiumHelDialogLink, a:visited.vimiumHelDialogLink,
  a:hover.vimiumHelDialogLink, a:active.vimiumHelDialogLink, a#toggleAdvancedCommands {
    color:#2f508e;
    text-decoration: underline;
    cursor: pointer;
}

/* Vimium HUD CSS */

div.vimiumHUD {
  display: block;
  position: fixed;
  width: calc(100% - 20px);
  bottom: 8px;
  left: 8px;
  background: #F1F1F1;
  text-align: left;
  border-radius: 4px;
  box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.8);
  border: 1px solid #aaa;
  z-index: 2139999999;
}

iframe.vimiumHUDFrame {
  background-color: transparent;
  padding: 0px;
  overflow: hidden;
  display: block;
  position: fixed;
  width: 20%;
  min-width: 300px;
  height: 58px;
  bottom: -14px;
  right: 20px;
  margin: 0 0 0 -40%;
  border: none;
  z-index: 2139999998; /* Two less than the reference value. */
  opacity: 0;
}

div.vimiumHUD .vimiumHUDSearchArea {
  display: block;
  padding: 3px;
  background-color: #F1F1F1;
  border-radius: 4px 4px 0 0;
}

div.vimiumHUD .vimiumHUDSearchAreaInner {
  color: #777;
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  font-size: 14px;
  height: 30px;
  margin-bottom: 0;
  padding: 2px 4px;
  border-radius: 3px;
  width: 100%;
  outline: none;
  box-sizing: border-box;
  line-height: 20px;
}

div.vimiumHUD .hud-find {
  background: #fff;
  border: 1px solid #ccc;
}

div.vimiumHUD span#hud-find-input, div.vimiumHUD span#hud-match-count {
  color: #000;
  display: inline;
  outline: none;
  white-space: nowrap;
  overflow-y: hidden;
}

div.vimiumHUD span#hud-find-input:before {
  content: "/";
}

div.vimiumHUD span#hud-match-count {
  color: #aaa;
  font-size: 12px;
}

div.vimiumHUD span#hud-find-input br {
  display: none;
}

div.vimiumHUD span#hud-find-input * {
  display: inline;
  white-space: nowrap;
}

body.vimiumFindMode ::selection {
  background: #ff9632;
}

/* Vomnibar Frame CSS */

iframe.vomnibarFrame {
  background-color: transparent;
  padding: 0px;
  overflow: hidden;

  display: block;
  position: fixed;
  width: calc(80% + 20px); /* same adjustment as in pages/vomnibar.js */
  min-width: 400px;
  height: calc(100% - 70px);
  top: 70px;
  left: 50%;
  margin: 0 0 0 -40%;
  border: none;
  font-family: sans-serif;
  z-index: 2139999998; /* Two less than the reference value. */
}

div.vimiumFlash {
  box-shadow: 0px 0px 4px 2px #4183C4;
  padding: 1px;
  background-color: transparent;
  position: absolute;
  z-index: 2140000000;
}

/* UIComponent CSS */
iframe.vimiumUIComponentHidden {
  display: none;
}

iframe.vimiumUIComponentVisible {
  display: block;
  color-scheme: light dark;
}

iframe.vimiumUIComponentReactivated {
  border: 5px solid yellow;
}

iframe.vimiumNonClickable {
  pointer-events: none;
}

@media (prefers-color-scheme: dark) {
  /* DarkReader is a popular dark mode browser extension. It can apply an invert filter to the whole
   * page to make the page dark, when used in Filter and Filter+ modes. We want to reverse/invert
   * that filter again for Vimium's UI elements, because Vimium is already dark mode aware. */
  iframe.reverseDarkReaderFilter {
    -webkit-filter: invert(100%) hue-rotate(180deg) !important;
    filter: invert(100%) hue-rotate(180deg) !important;
  }

  /* Dark mode CSS for options page and exclusions */

  body.vimiumBody {
    background-color: #292a2d;
    color: white;
  }

  body.vimiumBody a,
  body.vimiumBody a:visited {
    color: #8ab4f8;
  }

  body.vimiumBody textarea,
  body.vimiumBody input {
    background-color: #1d1d1f;
    border-color: #1d1d1f;
    color: #e8eaed;
  }

  body.vimiumBody div.example {
    color: #9aa0a6;
  }

  body.vimiumBody div#state,
  body.vimiumBody div#footer {
    background-color: #202124;
    border-color: rgba(255, 255, 255, 0.1);
  }

  /* Dark Mode CSS for Help Dialog */

  div#vimiumHelpDialogContainer {
    border-color: rgba(255, 255, 255, 0.1);
    background-color: #202124;
  }

  div#vimiumHelpDialog {
    background-color: #292a2d;
    color: white;
  }

  div#vimiumHelpDialog td.vimiumHelpDescription {
    color: #c9cccf;
  }

  span#vimiumTitle,
  div#vimiumHelpDialog td.vimiumHelpSectionTitle {
    color: white;
  }

  #vimiumTitle > span:first-child {
    color: #8ab4f8 !important;
  }

  div#vimiumHelpDialog a {
    color: #8ab4f8;
  }

  div#vimiumHelpDialog div.vimiumDivider {
    background-color: rgba(255, 255, 255, 0.1);
  }

  span.vimiumHelpDialogKey {
    background-color: #1d1d1f;
    border: solid 1px black;
    box-shadow: none;
    color: white;
  }
}
