/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

/* Avoid adding ID selector rules in this style sheet, since they could
 * inadvertently match elements in the article content. */

body {
  padding: 64px 51px;
}

body.loaded {
  transition: color 0.4s, background-color 0.4s;
}

body.light {
  color: #333333;
  background-color: #ffffff;
}

body.dark {
  color: #eeeeee;
  background-color: #333333;
}

body.dark *::-moz-selection {
  background-color: #FFFFFF;
  color: #0095DD;
}
body.dark a::-moz-selection {
  color: #DD4800;
}

body.sepia {
  color: #5b4636;
  background-color: #f4ecd8;
}

body.sans-serif,
body.sans-serif .remove-button {
  font-family: Helvetica, Arial, sans-serif;
}

body.serif,
body.serif .remove-button  {
  font-family: Georgia, "Times New Roman", serif;
}

.container {
  --font-size: 12;
  max-width: 30em;
  margin: 0 auto;
  font-size: var(--font-size);
}

.container.content-width1 {
  max-width: 20em;
}

.container.content-width2 {
  max-width: 25em;
}

.container.content-width3 {
  max-width: 30em;
}

.container.content-width4  {
  max-width: 35em;
}

.container.content-width5 {
  max-width: 40em;
}

.container.content-width6 {
  max-width: 45em;
}

.container.content-width7 {
  max-width: 50em;
}

.container.content-width8 {
  max-width: 55em;
}

.container.content-width9 {
  max-width: 60em;
}

/* Override some controls and content styles based on color scheme */

body.light > .container > .header > .domain {
  border-bottom-color: #333333 !important;
}

body.sepia > .container > .header > .domain {
  border-bottom-color: #5b4636 !important;
}

body.dark > .container > .header > .domain {
  border-bottom-color: #eeeeee !important;
}

body.sepia > .container > .footer {
  background-color: #dedad4 !important;
}

body.light blockquote {
  border-inline-start: 2px solid #333333 !important;
}

body.sepia blockquote {
  border-inline-start: 2px solid #5b4636 !important;
}

body.dark blockquote {
  border-inline-start: 2px solid #eeeeee !important;
}

/* Add toolbar transition base on loaded class  */

body.loaded .toolbar {
  transition: transform 0.3s ease-out;
}

body:not(.loaded) .toolbar:-moz-locale-dir(ltr) {
  transform: translateX(-100%);
}

body:not(.loaded) .toolbar:-moz-locale-dir(rtl) {
  transform: translateX(100%);
}

.light-button {
  color: #333333;
  background-color: #ffffff;
}

.dark-button {
  color: #eeeeee;
  background-color: #333333;
}

.sepia-button {
  color: #5b4636;
  background-color: #f4ecd8;
}

.sans-serif-button {
  font-family: Helvetica, Arial, sans-serif;
}

.serif-button {
  font-family: Georgia, "Times New Roman", serif;
}

/* Loading/error message */

.reader-message {
  margin-top: 40px;
  display: none;
  text-align: center;
  width: 100%;
  font-size: 0.9em;
}

/* Header */

.header {
  text-align: start;
  display: none;
}

.domain {
  font-size: 0.9em;
  line-height: 1.48em;
  padding-bottom: 4px;
  font-family: Helvetica, Arial, sans-serif;
  text-decoration: none;
  border-bottom: 1px solid;
  color: #0095dd;
}

.header > h1 {
  font-size: 1.6em;
  line-height: 1.25em;
  width: 100%;
  margin: 30px 0;
  padding: 0;
}

.header > .credits {
  font-size: 0.9em;
  line-height: 1.48em;
  margin: 0 0 10px 0;
  padding: 0;
  font-style: italic;
}

.header > .meta-data {
  font-size: 0.65em;
  margin: 0 0 15px 0;
}

/*======= Controls toolbar =======*/

.toolbar {
  font-family: Helvetica, Arial, sans-serif;
  position: fixed;
  height: 100%;
  top: 0;
  left: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  background-color: #fbfbfb;
  user-select: none;
  border-right: 1px solid #b5b5b5;
  z-index: 1;
}

.button {
  display: block;
  background-size: 24px 24px;
  background-repeat: no-repeat;
  color: #333;
  background-color: #fbfbfb;
  height: 40px;
  padding: 0;
}

.toolbar .button {
  width: 40px;
  background-position: center;
  margin-right: -1px;
  border-top: 0;
  border-left: 0;
  border-right: 1px solid #b5b5b5;
  border-bottom: 1px solid #c1c1c1;
}

.button[hidden] {
  display: none;
}

.dropdown {
  text-align: center;
  list-style: none;
  margin: 0;
  padding: 0;
}

.dropdown li {
  margin: 0;
  padding: 0;
}

/*======= Popup =======*/

.dropdown-popup {
  min-width: 300px;
  text-align: start;
  position: absolute;
  left: 48px; /* offset to account for toolbar width */
  z-index: 1000;
  background-color: #fbfbfb;
  visibility: hidden;
  border-radius: 4px;
  border: 1px solid #b5b5b5;
  border-bottom-width: 0;
  box-shadow: 0 1px 3px #c1c1c1;
}

.keep-open .dropdown-popup {
  z-index: initial;
}

.dropdown-popup > hr {
  display: none;
}

.open > .dropdown-popup {
  visibility: visible;
}

.dropdown-arrow {
  position: absolute;
  top: 30px; /* offset arrow from top of popup */
  left: -16px;
  width: 16px;
  height: 24px;
  background-image: url("chrome://global/skin/reader/RM-Type-Controls-Arrow.svg");
  display: block;
}

/*======= Font style popup =======*/

.font-type-buttons,
.font-size-buttons,
.color-scheme-buttons,
.content-width-buttons,
.line-height-buttons {
  display: flex;
  flex-direction: row;
}

.font-type-buttons > button:first-child {
  border-top-left-radius: 3px;
}
.font-type-buttons > button:last-child {
  border-top-right-radius: 3px;
}
.color-scheme-buttons > button:first-child {
  border-bottom-left-radius: 3px;
}
.color-scheme-buttons > button:last-child {
  border-bottom-right-radius: 3px;
}

.font-type-buttons > button,
.font-size-buttons > button,
.color-scheme-buttons > button,
.content-width-buttons > button,
.line-height-buttons > button {
  text-align: center;
  border: 0;
}

.font-type-buttons > button,
.font-size-buttons > button,
.content-width-buttons > button,
.line-height-buttons > button {
  width: 50%;
  background-color: transparent;
  border-left: 1px solid #B5B5B5;
  border-bottom: 1px solid #B5B5B5;
}

.color-scheme-buttons > button {
  width: 33.33%;
  font-size: 14px;
}

.color-scheme-buttons > .dark-button {
  margin-top: -1px;
  height: 61px;
}

.font-type-buttons > button:first-child,
.font-size-buttons > button:first-child,
.content-width-buttons > button:first-child,
.line-height-buttons > button:first-child {
  border-left: 0;
}

.font-type-buttons > button {
  display: inline-block;
  font-size: 62px;
  height: 100px;
}

.font-size-buttons > button,
.color-scheme-buttons > button,
.content-width-buttons > button,
.line-height-buttons > button {
  height: 60px;
}

.font-type-buttons > button:active:hover,
.font-type-buttons > button.selected,
.color-scheme-buttons > button:active:hover,
.color-scheme-buttons > button.selected {
  box-shadow: inset 0 -3px 0 0 #fc6420;
}

.font-type-buttons > button:active:hover,
.font-type-buttons > button.selected {
  border-bottom: 1px solid #FC6420;
}

/* Make the serif button content the same size as the sans-serif button content. */
.font-type-buttons > button > .description {
  color: #666;
  font-size: 12px;
  margin-top: -5px;
}

/* Font sizes are different per-platform, so we need custom CSS to line them up. */
%ifdef XP_MACOSX
.font-type-buttons > .sans-serif-button > .name {
  margin-top: 10px;
}

.font-type-buttons > .sans-serif-button > .description {
  margin-top: -4px;
}

.font-type-buttons > .serif-button > .name {
  font-size: 63px;
}
%elifdef XP_WIN
.font-type-buttons > .sans-serif-button > .name {
  margin-top: 2px;
}

.font-type-buttons > .sans-serif-button > .description {
  margin-top: -4px;
}

.font-type-buttons > .serif-button > .name {
  font-size: 63px;
}
%else
.font-type-buttons > .sans-serif-button > .name {
  margin-top: 5px;
}

.font-type-buttons > .sans-serif-button > .description {
  margin-top: -8px;
}

.font-type-buttons > .serif-button > .name {
  font-size: 70px;
}
%endif

.button:hover,
.font-size-buttons > button:hover,
.font-type-buttons > button:hover,
.content-width-buttons > button:hover,
.line-height-buttons > button:hover {
  background-color: #ebebeb;
}

.dropdown.open,
.button:active,
.font-size-buttons > button:active,
.font-size-buttons > button.selected,
.content-width-buttons > button:active,
.content-width-buttons > button.selected,
.line-height-buttons > button:active,
.line-height-buttons > button.selected {
  background-color: #dadada;
}

.minus-button,
.plus-button,
.content-width-minus-button,
.content-width-plus-button,
.line-height-minus-button,
.line-height-plus-button {
  background-color: transparent;
  border: 0;
  background-size: 18px 18px;
  background-repeat: no-repeat;
  background-position: center;
}

/*======= Toolbar icons =======*/

.close-button {
  background-image: url("chrome://global/skin/reader/RM-Close-24x24.svg#close");
  height: 68px;
  background-position: center 8px;
}

.close-button:hover {
  background-image: url("chrome://global/skin/reader/RM-Close-24x24.svg#close-hover");
  background-color: #d94141;
  border-bottom: 1px solid #d94141;
  border-right: 1px solid #d94141;
}

.close-button:hover:active {
  background-image: url("chrome://global/skin/reader/RM-Close-24x24.svg#close-hover");
  background-color: #AE2325;
  border-bottom: 1px solid #AE2325;
  border-right: 1px solid #AE2325;
}

.style-button {
  background-image: url("chrome://global/skin/reader/RM-Type-Controls-24x24.svg");
}

.minus-button {
  background-image: url("chrome://global/skin/reader/RM-Minus-24x24.svg");
}

.plus-button {
  background-image: url("chrome://global/skin/reader/RM-Plus-24x24.svg");
}

.content-width-minus-button {
  background-size: 42px 16px;
  background-image: url("chrome://global/skin/reader/RM-Content-Width-Minus-42x16.svg");
}

.content-width-plus-button {
  background-size: 44px 16px;
  background-image: url("chrome://global/skin/reader/RM-Content-Width-Plus-44x16.svg");
}

.line-height-minus-button {
  background-size: 34px 14px;
  background-image: url("chrome://global/skin/reader/RM-Line-Height-Minus-38x14.svg");
}

.line-height-plus-button {
  background-size: 34px 24px;
  background-image: url("chrome://global/skin/reader/RM-Line-Height-Plus-38x24.svg");
}

@media print {
  .toolbar {
    display: none !important;
  }
}

/*======= Article content =======*/

/* Note that any class names from the original article that we want to match on
 * must be added to CLASSES_TO_PRESERVE in ReaderMode.jsm, so that
 * Readability.js doesn't strip them out */

.moz-reader-content {
  display: none;
  font-size: 1em;
  line-height: 1.6em;
}

.moz-reader-content.line-height1 {
  line-height: 1em;
}

.moz-reader-content.line-height2 {
  line-height: 1.2em;
}

.moz-reader-content.line-height3 {
  line-height: 1.4em;
}

.moz-reader-content.line-height4 {
  line-height: 1.6em;
}

.moz-reader-content.line-height5 {
  line-height: 1.8em;
}

.moz-reader-content.line-height6 {
  line-height: 2.0em;
}

.moz-reader-content.line-height7 {
  line-height: 2.2em;
}

.moz-reader-content.line-height8 {
  line-height: 2.4em;
}

.moz-reader-content.line-height9 {
  line-height: 2.6em;
}

@media print {
  .moz-reader-content p,
  .moz-reader-content code,
  .moz-reader-content pre,
  .moz-reader-content blockquote,
  .moz-reader-content ul,
  .moz-reader-content ol,
  .moz-reader-content li,
  .moz-reader-content figure,
  .moz-reader-content .wp-caption {
    margin: 0 0 10px 0 !important;
    padding: 0 !important;
  }
}

.moz-reader-content h1,
.moz-reader-content h2,
.moz-reader-content h3 {
  font-weight: bold;
}

.moz-reader-content h1 {
  font-size: 1.6em;
  line-height: 1.25em;
}

.moz-reader-content h2 {
  font-size: 1.2em;
  line-height: 1.51em;
}

.moz-reader-content h3 {
  font-size: 1em;
  line-height: 1.66em;
}

.moz-reader-content a:link {
  text-decoration: underline;
  font-weight: normal;
}

.moz-reader-content a:link,
.moz-reader-content a:link:hover,
.moz-reader-content a:link:active {
  color: #0095dd;
}

.moz-reader-content a:visited {
  color: #c2e;
}

.moz-reader-content * {
  max-width: 100%;
  height: auto;
}

.moz-reader-content p,
.moz-reader-content p,
.moz-reader-content code,
.moz-reader-content pre,
.moz-reader-content blockquote,
.moz-reader-content ul,
.moz-reader-content ol,
.moz-reader-content li,
.moz-reader-content figure,
.moz-reader-content .wp-caption {
  margin: -10px -10px 20px -10px;
  padding: 10px;
  border-radius: 5px;
}

.moz-reader-content li {
  margin-bottom: 0;
}

.moz-reader-content li > ul,
.moz-reader-content li > ol {
  margin-bottom: -10px;
}

.moz-reader-content p > img:only-child,
.moz-reader-content p > a:only-child > img:only-child,
.moz-reader-content .wp-caption img,
.moz-reader-content figure img {
  display: block;
}

.moz-reader-content img[moz-reader-center] {
  margin-left: auto;
  margin-right: auto;
}

.moz-reader-content .caption,
.moz-reader-content .wp-caption-text
.moz-reader-content figcaption {
  font-size: 0.9em;
  line-height: 1.48em;
  font-style: italic;
}

.moz-reader-content code,
.moz-reader-content pre {
  white-space: pre-wrap;
}

.moz-reader-content blockquote {
  padding: 0;
  padding-inline-start: 16px;
}

.moz-reader-content ul,
.moz-reader-content ol {
  padding: 0;
}

.moz-reader-content ul {
  padding-inline-start: 30px;
  list-style: disc;
}

.moz-reader-content ol {
  padding-inline-start: 30px;
  list-style: decimal;
}

/* Hide elements with common "hidden" class names */
.moz-reader-content .visually-hidden,
.moz-reader-content .visuallyhidden,
.moz-reader-content .hidden,
.moz-reader-content .invisible,
.moz-reader-content .sr-only {
  display: none;
}

/* Enforce wordpress and similar emoji/smileys aren't sized to be full-width */
.moz-reader-content img.wp-smiley,
.moz-reader-content img.emoji {
  display: inline-block;
  border-width: 0;
  /* height: auto is implied from `.moz-reader-content *` rule. */
  width: 1em;
  margin: 0 .07em;
  padding: 0;
}
