/* Copyright 2014 Mozilla Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

@import url(pdf_viewer.css);

:root {
  --main-color: light-dark(rgb(12 12 13), rgb(249 249 250));
  --body-bg-color: light-dark(rgb(212 212 215), rgb(42 42 46));
  --scrollbar-color: light-dark(auto, rgb(121 121 123));
  --scrollbar-bg-color: light-dark(auto, rgb(35 35 39));
  --field-color: light-dark(rgb(6 6 6), rgb(250 250 250));
  --field-bg-color: light-dark(rgb(255 255 255), rgb(64 64 68));
  --field-border-color: light-dark(rgb(187 187 188), rgb(115 115 115));
  --doorhanger-bg-color: light-dark(rgb(255 255 255), rgb(74 74 79));
  --dialog-button-border: none;
  --dialog-button-bg-color: light-dark(rgb(12 12 13 / 0.1), rgb(92 92 97));
  --dialog-button-hover-bg-color: light-dark(
    rgb(12 12 13 / 0.3),
    rgb(115 115 115)
  );

  --toolbar-bg-color: light-dark(#f9f9fb, #2b2a33);
  --toolbar-divider-color: light-dark(#e0e0e6, #5b5b66);
  --toolbar-fg-color: light-dark(#15141a, #fbfbfe);
  --toolbar-height: 48px;
  --toolbar-border-width: 1px;

  --toolbarButton-download-icon: url(images/gv-toolbarButton-download.svg);
}

@media screen and (forced-colors: active) {
  :root {
    --dialog-button-border: 1px solid Highlight;
    --dialog-button-hover-bg-color: Highlight;
    --dialog-button-hover-color: ButtonFace;
    --field-border-color: ButtonText;
    --main-color: CanvasText;
  }
}

* {
  padding: 0;
  margin: 0;
}

html,
body {
  height: 100%;
  width: 100%;
}

body {
  background-color: var(--body-bg-color);
  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
}

.hidden,
[hidden] {
  display: none !important;
}

#outerContainer {
  width: 100%;
  height: 100%;
  position: relative;
}

#mainContainer {
  position: absolute;
  inset: 0;
  min-width: 350px;
}

#viewerContainer {
  overflow: auto;
  position: absolute;
  inset: var(--toolbar-height) 0 0;
  outline: none;
}

#viewerContainer.noToolbar {
  inset-block-start: 0;
}

.dialogButton {
  border: none;
  background: none;
  width: 28px;
  height: 28px;
  outline: none;
}

.dialogButton:is(:hover, :focus-visible) {
  background-color: var(--dialog-button-hover-bg-color);
}

.dialogButton:is(:hover, :focus-visible) > span {
  color: var(--dialog-button-hover-color);
}

.dialogButton[disabled] {
  opacity: 0.5;
}

.dialogButton {
  min-width: 16px;
  margin: 2px 1px;
  padding: 2px 6px 0;
  border: none;
  border-radius: 2px;
  color: var(--main-color);
  font-size: 12px;
  line-height: 14px;
  user-select: none;
  cursor: default;
  box-sizing: border-box;
}

.toolbarField {
  padding: 4px 7px;
  margin: 3px 0;
  border-radius: 2px;
  background-color: var(--field-bg-color);
  background-clip: padding-box;
  border: 1px solid var(--field-border-color);
  box-shadow: none;
  color: var(--field-color);
  font-size: 12px;
  line-height: 16px;
  outline: none;
}

.toolbarField:focus {
  border-color: #0a84ff;
}

#floatingToolbar {
  display: flex;
  align-items: center;
  position: absolute;
  width: 100%;
  height: calc(var(--toolbar-height) + var(--toolbar-border-width));
  top: 0;
  left: 0;
  padding: 2px;
  box-sizing: border-box;
  border-block-end: solid var(--toolbar-border-width)
    var(--toolbar-divider-color);
  background-color: var(--toolbar-bg-color);

  &.show {
    z-index: 100000;
    opacity: 1;
  }

  &:not(.show) {
    z-index: -1;
    opacity: 0;
  }

  .toolbarButton {
    display: flex;
    align-items: center;
    border-style: none;
    user-select: none;
    box-sizing: border-box;
    background-color: transparent;
    width: auto;
    height: 100%;
    outline: none;
    position: relative;

    &::before {
      width: 24px;
      height: 24px;
      content: "";
      background-color: var(--toolbar-fg-color);
      mask-size: cover;
      margin-inline: 12px 8px;
    }

    > span {
      color: var(--toolbar-fg-color);
      width: auto;
      height: auto;
      overflow: hidden;
    }

    &#download::before {
      mask-image: var(--toolbarButton-download-icon);
    }
  }
}

:is(.toolbarButton .dialogButton)[disabled] {
  opacity: 0.5;
}

.dialogButton {
  width: auto;
  margin: 3px 4px 2px !important;
  padding: 2px 11px;
  color: var(--main-color);
  background-color: var(--dialog-button-bg-color);
  border: var(--dialog-button-border) !important;
}

dialog {
  margin: auto;
  padding: 15px;
  border-spacing: 4px;
  color: var(--main-color);
  font: message-box;
  font-size: 12px;
  line-height: 14px;
  background-color: var(--doorhanger-bg-color);
  border: 1px solid rgb(0 0 0 / 0.5);
  border-radius: 4px;
  box-shadow: 0 1px 4px rgb(0 0 0 / 0.3);
}
dialog::backdrop {
  background-color: rgb(0 0 0 / 0.2);
}

dialog > .row {
  display: table-row;
}

dialog > .row > * {
  display: table-cell;
}

dialog .toolbarField {
  margin: 5px 0;
}

dialog .separator {
  display: block;
  margin: 4px 0;
  height: 0;
  width: 100%;
  border-top: 1px solid var(--separator-color);
  border-bottom: none;
}

dialog .buttonRow {
  text-align: center;
  vertical-align: middle;
}

dialog :link {
  color: rgb(255 255 255);
}

#passwordDialog {
  text-align: center;
}
#passwordDialog .toolbarField {
  width: 200px;
}

@page {
  margin: 0;
}

#printContainer {
  display: none;
}

@media print {
  body {
    background: rgb(0 0 0 / 0) none;
  }
  body[data-pdfjsprinting] #outerContainer {
    display: none;
  }
  body[data-pdfjsprinting] #printContainer {
    display: block;
  }
  #printContainer {
    height: 100%;
  }
  /* wrapper around (scaled) print canvas elements */
  #printContainer > .printedPage {
    page-break-after: always;
    page-break-inside: avoid;

    /* The wrapper always cover the whole page. */
    height: 100%;
    width: 100%;

    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }

  #printContainer > .xfaPrintedPage .xfaPage {
    position: absolute;
  }

  #printContainer > .xfaPrintedPage {
    page-break-after: always;
    page-break-inside: avoid;
    width: 100%;
    height: 100%;
    position: relative;
  }

  #printContainer > .printedPage :is(canvas, img) {
    /* The intrinsic canvas / image size will make sure that we fit the page. */
    max-width: 100%;
    max-height: 100%;

    direction: ltr;
    display: block;
  }
}
