/* 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/. */

@import url("chrome://browser/skin/downloads/indicator.css");
@import url("chrome://browser/skin/addons/extension-controlled.css");
@import url("chrome://browser/skin/addons/unified-extensions.css");
@import url("chrome://browser/skin/toolbarbuttons.css");
@import url("chrome://browser/skin/toolbarbutton-icons.css");
@import url("chrome://browser/skin/menupanel.css");
@import url("chrome://browser/skin/urlbar-searchbar.css");
@import url("chrome://browser/skin/identity-block/identity-block.css");
@import url("chrome://browser/skin/notification-icons.css");
@import url("chrome://browser/skin/addon-notification.css");
@import url("chrome://browser/skin/identity-credential-notification.css");
@import url("chrome://browser/skin/urlbarView.css");
@import url("chrome://browser/skin/autocomplete.css");
@import url("chrome://browser/skin/places/editBookmarkPanel.css");
@import url("chrome://browser/skin/sidebar.css");
@import url("chrome://browser/skin/tabs.css");
@import url("chrome://browser/skin/fullscreen/warning.css");
@import url("chrome://browser/skin/ctrlTab.css");
@import url("chrome://browser/skin/customizableui/customizeMode.css");
@import url("chrome://browser/skin/UITour.css");

@namespace html url("http://www.w3.org/1999/xhtml");

:root {
  --toolbar-bgcolor: var(--toolbar-non-lwt-bgcolor);
  --toolbar-color: var(--toolbar-non-lwt-textcolor);
  --toolbarbutton-border-radius: 4px;

  --tabs-navbar-shadow-size: 1px;

  --panel-separator-color: color-mix(in srgb, currentColor 25%, transparent);
  --panel-shortcut-color: inherit;
  --panelui-subview-transition-duration: 150ms;

  --short-notification-background: #0250BB;
  --short-notification-gradient: #9059FF;

  --button-bgcolor: color-mix(in srgb, currentColor 13%, transparent);
  --button-hover-bgcolor: color-mix(in srgb, currentColor 17%, transparent);
  --button-active-bgcolor: color-mix(in srgb, currentColor 30%, transparent);
  --button-color: currentColor;
  --button-primary-bgcolor: AccentColor;
  --button-primary-hover-bgcolor: color-mix(in srgb, black 10%, AccentColor);
  --button-primary-active-bgcolor: color-mix(in srgb, black 20%, AccentColor);
  --button-primary-color: AccentColorText;

  --buttons-destructive-bgcolor: #e22850;
  --buttons-destructive-hover-bgcolor: #c50042;
  --buttons-destructive-active-bgcolor: #810220;
  --buttons-destructive-color: #fbfbfe;

  --checkbox-unchecked-bgcolor: var(--button-bgcolor);
  --checkbox-unchecked-hover-bgcolor: var(--button-hover-bgcolor);
  --checkbox-unchecked-active-bgcolor: var(--button-active-bgcolor);
  --checkbox-checked-border-color: transparent;
  --checkbox-checked-bgcolor: var(--button-primary-bgcolor);
  --checkbox-checked-color: var(--button-primary-color);
  --checkbox-checked-hover-bgcolor: var(--button-primary-hover-bgcolor);
  --checkbox-checked-active-bgcolor: var(--button-primary-active-bgcolor);

  --autocomplete-popup-hover-background: var(--arrowpanel-dimmed);
  --autocomplete-popup-separator-color: color-mix(in srgb, currentColor 14%, transparent);

  --identity-box-margin-inline: 4px;
  --urlbar-box-bgcolor: var(--button-bgcolor);
  --urlbar-box-focus-bgcolor: var(--button-bgcolor);
  --urlbar-box-hover-bgcolor: var(--button-hover-bgcolor);
  --urlbar-box-active-bgcolor: var(--button-active-bgcolor);
  --urlbar-box-text-color: inherit;
  --urlbar-box-hover-text-color: var(--urlbar-box-text-color);
  --urlbar-min-height: max(32px, 1.4em);
  --urlbar-icon-fill-opacity: 0.9;
  --urlbar-icon-padding: calc((var(--urlbar-min-height) - 2px /* border */ - 2px /* padding */ - 16px /* icon */) / 2);
  /* This should be used for icons and chiclets inside the input field. It makes
     the gap around them more uniform when they are close to the field edges */
  --urlbar-icon-border-radius: calc(var(--toolbarbutton-border-radius) - 1px);
  --urlbar-popup-url-color: -moz-nativehyperlinktext;

  --lwt-additional-images: none;
  --lwt-background-alignment: right top;
  --lwt-background-tiling: no-repeat;
  --lwt-brighttext-url-color: #00ddff;

  --ext-theme-background-transition: background-color 0.1s cubic-bezier(.17,.67,.83,.67);

  user-select: none;
}

:root:-moz-lwtheme {
  --checkbox-border-color: color-mix(in srgb, currentColor 41%, transparent);
}

@media (prefers-contrast) {
  :root {
    --autocomplete-popup-separator-color: color-mix(in srgb, currentColor 86%, transparent);
    --panel-separator-color: currentColor;
    --urlbar-icon-fill-opacity: 1;
    --checkbox-checked-border-color: var(--checkbox-checked-bgcolor);
  }
}

:root[uidensity=compact] {
  --urlbar-min-height: max(26px, 1.4em);
}

:root[uidensity=touch] {
  --urlbar-min-height: max(34px, 1.4em);
}

:root:-moz-lwtheme {
  --toolbar-bgcolor: rgba(255,255,255,.4);
  --toolbar-color: var(--lwt-text-color, inherit);

  color: var(--lwt-text-color);
}

@media not (prefers-contrast) {
  :root:-moz-lwtheme {
    --focus-outline-color: #0061E0;
  }

  @media (prefers-color-scheme: dark) {
    :root:-moz-lwtheme {
      --focus-outline-color: #00DDFF;
    }
  }
}

/* Increase the contrast of urlbar boxes in dark mode.
   In practice these are bumped-up --button(-hover)-bgcolor rules */
@media (prefers-color-scheme: dark) {
  :root {
    --urlbar-box-bgcolor: color-mix(in srgb, currentColor 16%, transparent);
    --urlbar-box-focus-bgcolor: color-mix(in srgb, currentColor 16%, transparent);
    --urlbar-box-hover-bgcolor: color-mix(in srgb, currentColor 22%, transparent);
  }
}

@media (min-resolution: 1.5dppx) {
  :root {
    --tabs-navbar-shadow-size: 0.5px;
  }
}

@media (min-resolution: 3dppx) {
  :root {
    --tabs-navbar-shadow-size: 0.33px;
  }
}

/* Set link color with proper contrast for WebExt themes */

:is(toolbar, panel) :is(a, .text-link):-moz-lwtheme {
  color: #0060df;
}

toolbar[brighttext] :is(a, .text-link):-moz-lwtheme,
:root[lwt-popup-brighttext] panel :is(a, .text-link) {
  color: var(--lwt-brighttext-url-color);
}

/* Toolbar / content area border */

#navigator-toolbox {
  border-bottom: 1px solid var(--chrome-content-separator-color);
}

:root[customizing] #navigator-toolbox {
  border-bottom-style: none;
}

/* Add space to beginning of toolbar and make that space click the first <toolbarbutton> */
#nav-bar-customization-target > :is(toolbarbutton, toolbaritem):first-child,
#nav-bar-customization-target > toolbarpaletteitem:first-child > :is(toolbarbutton, toolbaritem) {
  padding-inline-start: var(--toolbar-start-end-padding);
}

:root[sessionrestored] #nav-bar:-moz-lwtheme {
  transition: var(--ext-theme-background-transition);
}

/* Bookmark toolbar */

#PersonalToolbar {
  overflow: clip;
  max-height: 4em;
  padding-inline: 6px;
}

:root[uidensity=compact] #PersonalToolbar {
  padding-inline: 2px;
}

:root[sessionrestored] #PersonalToolbar:not(.instant) {
  transition: min-height 170ms ease-out, max-height 170ms ease-out, var(--ext-theme-background-transition);
}

#PersonalToolbar[collapsed=true] {
  min-height: 0;
  max-height: 0;
}

:root[sessionrestored] #PersonalToolbar:not(.instant)[collapsed=true] {
  transition: min-height 170ms ease-out, max-height 170ms ease-out, visibility 170ms linear;
}

#PersonalToolbar[collapsed=false]:not([initialized]) > #personal-toolbar-empty {
  visibility: hidden;
}

/*
 * Make the empty bookmarks toolbar message take up no horizontal space.
 * This avoids two issues:
 * 1) drag/drop of urls/bookmarks to the toolbar not working, because they land
 *    on the personal-toolbar-empty element.
 * 2) buttons in the toolbar moving horizontally while the window opens,
 *    because the element is first shown at full width and then completely
 *    hidden.
 * TODO(emilio): The comment above was never quite true (the message did take
 * horizontal space, see bug 1812636). Figure out how much of this rule is
 * really needed.
 */
#PersonalToolbar[collapsed=false] > #personal-toolbar-empty[nowidth] > #personal-toolbar-empty-description {
  margin-inline: 0;
  min-width: 0;
  white-space: nowrap;
  position: relative;
  z-index: 1;
}

#PersonalToolbar[collapsed=true].instant {
  visibility: collapse;
}

#PersonalToolbar[customizing] {
  outline: 1px dashed;
  outline-offset: -3px;
}

#PersonalToolbar[customizing]:empty {
  /* Avoid the toolbar having no height when there's no items in it */
  min-height: 22px;
}

#PlacesToolbarDropIndicator {
  list-style-image: url(chrome://browser/skin/toolbar-drag-indicator.svg);
  pointer-events: none;
}

/* rules for menupopup drop indicators */
menupopup::part(drop-indicator-container) {
  /* TODO(emilio): When menupopups get ported to modern flex layout we can
   * probably simplify this substantially, by making the indicator position:
   * absolute or so (which was never properly supported in XUL). The container
   * should become completely unnecessary then. */
  min-width: 0;
  min-height: 0;
  max-width: 100%;
  max-height: 100%;
}

menupopup::part(drop-indicator-bar) {
  position: relative;
  /* these two margins must together compensate the indicator's height */
  margin-block: -1px;
}

menupopup::part(drop-indicator) {
  list-style-image: none;
  height: 2px;
  margin-inline-end: -4em;
  background-color: SelectedItem;
  pointer-events: none;
}

/* Back / Forward context menu */

.unified-nav-back,
.unified-nav-forward {
  -moz-context-properties: fill;
  fill: currentColor;
}

.unified-nav-back[_moz-menuactive]:-moz-locale-dir(ltr),
.unified-nav-forward[_moz-menuactive]:-moz-locale-dir(rtl) {
  list-style-image: url("chrome://browser/skin/back.svg") !important;
}

.unified-nav-forward[_moz-menuactive]:-moz-locale-dir(ltr),
.unified-nav-back[_moz-menuactive]:-moz-locale-dir(rtl) {
  list-style-image: url("chrome://browser/skin/forward.svg") !important;
}

/* Find bar */

.browserContainer > findbar {
  background-color: var(--toolbar-bgcolor);
  color: var(--toolbar-color);
  border-top-color: var(--chrome-content-separator-color, ThreeDShadow);
}

.browserContainer > findbar:-moz-lwtheme {
  background-color: var(--lwt-accent-color);
  background-image: linear-gradient(var(--toolbar-bgcolor), var(--toolbar-bgcolor)), var(--lwt-additional-images);
  background-repeat: no-repeat, var(--lwt-background-tiling);
  background-position: right bottom, var(--lwt-background-alignment);
  background-position-y: bottom !important;
}

:root:not([lwtheme-image]) .browserContainer > findbar:-moz-lwtheme:-moz-window-inactive {
  background-color: var(--lwt-accent-color-inactive, var(--lwt-accent-color));
}

:root[lwtheme-image] .browserContainer > findbar {
  background-image: linear-gradient(var(--toolbar-bgcolor), var(--toolbar-bgcolor)), var(--lwt-header-image), var(--lwt-additional-images);
  background-repeat: no-repeat, no-repeat, var(--lwt-background-tiling);
  background-position: center, right bottom, var(--lwt-background-alignment);
}

/* Private browsing indicator */

.private-browsing-indicator {
  background-image: url("chrome://global/skin/icons/indicator-private-browsing.svg");
  background-repeat: no-repeat;
  background-size: 100% auto;
  background-position: center;
  width: 24px;
  margin-inline: 7px;
  position: relative;
  /* Need to ensure this gets positioned on top of the position:relative #navigator-toolbox
   * in case the dark/light themes give that item a background. */
  z-index: 1;
}

/* New Private Browsing Indicator */

#private-browsing-indicator-with-label {
  align-items: center;
  margin-inline: 7px;
}

.private-browsing-indicator-icon {
  list-style-image: url("chrome://global/skin/icons/indicator-private-browsing.svg");
  width: 16px;
  height: 16px;
}

:root:not([privatebrowsingmode=temporary]) .private-browsing-indicator,
:root[privatebrowsingnewindicator] .private-browsing-indicator,
:root:not([privatebrowsingnewindicator]) #private-browsing-indicator-with-label,
:root:not([privatebrowsingmode=temporary]) #private-browsing-indicator-with-label {
  display: none;
}

/* End private browsing indicator */

/* Override theme colors since the picker uses extra colors that
   themes cannot set */
#DateTimePickerPanel {
  color-scheme: light;
  --arrowpanel-background: Field;
  --arrowpanel-color: FieldText;
}

/* stylelint-disable-next-line media-feature-name-no-unknown */
@media (-moz-content-prefers-color-scheme: dark) and (not (prefers-contrast)) {
  #DateTimePickerPanel {
    color-scheme: dark;
  }
}

#widget-overflow .webextension-popup-browser {
  background: #fff;

  /* height set via JS can be lower than the stack min-height,
     ensure the browser takes up at least that min-height */
  min-height: 100%;
}

#addon-progress-notification-progressmeter {
  margin: 2px 4px;
}

/* Contextual Feature Recommendation popup-notification */

#cfr-notification-header {
  width: 100%;
  display: block;
  text-align: center;
  box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.2);
}

#cfr-notification-header-stack {
  width: 100%;
}

#cfr-notification-header-label {
  margin: 9px;
  font-weight: 600;
}

#cfr-notification-header-link {
  margin: 7px;
  color: inherit;
  cursor: default;
  justify-self: end;
}

#cfr-notification-header-image {
  width: 19px;
  height: 19px;
  padding: 2px;
  -moz-context-properties: fill, fill-opacity;
  fill: currentColor;
  fill-opacity: 0.6;
  list-style-image: url(chrome://global/skin/icons/help.svg);
}

#cfr-notification-header-image:hover {
  background-color: hsla(0,0%,70%,.2);
  border-radius: 2px;
}

#contextual-feature-recommendation-notification {
  width: 400px;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] {
  background: radial-gradient(circle farthest-side at top right, var(--short-notification-gradient), var(--short-notification-background));
  width: unset;
  max-width: 700px;
  overflow-wrap: break-word;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"]:-moz-locale-dir(rtl) {
  background: radial-gradient(circle farthest-side at top left, var(--short-notification-gradient), var(--short-notification-background));
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-body-container,
#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-footer-container,
#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] #cfr-notification-header-link {
  display: none;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] #cfr-notification-header {
  box-shadow: none;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] description {
  font-weight: 400;
  margin: unset;
  margin-inline: 12px;
  transform: translateY(50%);
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-button-container,
#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-header-container {
  display: inline-flex;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-button-container {
  float: inline-end;
  background-color: transparent;
  flex-direction: row-reverse;
  /* Override proton-doorhanger default styles that increase the size of the button */
  margin: 0;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-primary-button {
  background-color: rgba(216, 216, 216, 0.2);
  color: white;
  border: none;
  border-radius: 2px;
  margin: 4px;
  padding: 3px 12px;
  flex: 1;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-primary-button:after {
  content: url(chrome://global/skin/icons/arrow-left-12.svg);
  -moz-context-properties: fill;
  fill: currentColor;
  transform: translateY(2px);
  float: inline-end;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"]:-moz-locale-dir(ltr) .popup-notification-primary-button:after {
  content: url(chrome://global/skin/icons/arrow-right-12.svg);
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-primary-button:hover {
  background-color: rgba(216, 216, 216, 0.4);
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-primary-button:active {
  background-color: rgba(216, 216, 216, 0.5);
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-secondary-button {
  margin: 3px;
  border: none;
  border-radius: 2px;
  background-image: url(chrome://global/skin/icons/close.svg);
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 10px;
  -moz-context-properties: fill;
  fill: white;
  height: 22px;
  width: 22px;
  padding: 0;
  align-self: center;
  flex: none;
  font-size: 0;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-secondary-button:hover {
  background-color: rgba(216, 216, 216, 0.4);
}


#contextual-feature-recommendation-notification[data-notification-bucket="CFR_MILESTONE_MESSAGE"] .popup-notification-header-container {
  color: white;
  max-width: unset;
}

#contextual-feature-recommendation-notification[data-notification-bucket="CFR_SOCIAL_TRACKING_PROTECTION"] {
  width: 386px;
}

#contextual-feature-recommendation-notification .popup-notification-icon {
  margin-inline-end: 4px;
}

#contextual-feature-recommendation-notification .cfr-doorhanger-large-icon {
  width: 64px;
  height: 64px;
  margin-inline-end: 12px;
}

#contextual-feature-recommendation-notification .cfr-doorhanger-medium-icon {
  width: 50px;
  height: 50px;
  margin-inline-end: 12px;
}

#contextual-feature-recommendation-notification .popup-notification-body-container {
  width: 100%;
  padding-bottom: 2px;
}

#contextual-feature-recommendation-notification popupnotificationcontent {
  margin-top: 0;
}

#contextual-feature-recommendation-notification description {
  margin-bottom: 0;
}

#cfr-notification-footer-text-and-addon-info {
  display: block;
  padding: 10px var(--arrowpanel-padding);
}

#contextual-feature-recommendation-notification[data-notification-category="addon_recommendation"] #cfr-notification-feature-steps,
#contextual-feature-recommendation-notification[data-notification-category="icon_and_message"] .popup-notification-footer-container {
  display: none;
}

#contextual-feature-recommendation-notification[data-notification-category="addon_recommendation"] .popup-notification-description > b {
  font-weight: 300;
  padding-inline-start: 5px;
}

#contextual-feature-recommendation-notification[data-notification-category="addon_recommendation"] #cfr-notification-footer-learn-more-link {
  margin-inline-start: 5px;
}

#contextual-feature-recommendation-notification[data-notification-category="addon_recommendation"] #cfr-notification-header-image {
  display: none;
}

#contextual-feature-recommendation-notification[data-notification-category="addon_recommendation"] #cfr-notification-header-label {
  margin-block-end: 9px;
}

/*
 * `icon_and_message` CFR doorhanger with: icon, title and subtitle.
 * No panel header is shown
 */
#contextual-feature-recommendation-notification[data-notification-category="icon_and_message"] #cfr-notification-header {
  display: none;
}

#contextual-feature-recommendation-notification[data-notification-category="icon_and_message"] .popup-notification-description {
  font-weight: 600;
  margin-bottom: 15px;
}

#contextual-feature-recommendation-notification[data-notification-category="icon_and_message"] popupnotificationcontent {
  display: block; /* This forces the subtitle content to wrap */
}

#cfr-notification-feature-steps {
  display: flex;
  flex-direction: column;
  margin-top: 10px;
}

#cfr-notification-feature-steps li {
  margin-inline-start: 10px;
  position: relative;
  display: list-item;
}

#cfr-notification-feature-steps li:not(:last-child) {
  margin-bottom: 5px;
}

#cfr-notification-footer-text,
#cfr-notification-footer-users,
#cfr-notification-footer-learn-more-link {
  margin: 0;
}

#cfr-notification-footer-addon-info {
  align-items: center;
  display: flex;
  margin-block: 10px 6px;
}

#cfr-notification-footer-filled-stars,
#cfr-notification-footer-empty-stars {
  -moz-context-properties: fill, fill-opacity;
  background-image: url(chrome://browser/skin/bookmark.svg);
  fill: currentColor;
  fill-opacity: 0.7;
  height: 16px;
}

#cfr-notification-footer-filled-stars:-moz-locale-dir(rtl),
#cfr-notification-footer-empty-stars {
  background-position-x: right;
}

#cfr-notification-footer-filled-stars,
#cfr-notification-footer-empty-stars:-moz-locale-dir(rtl) {
  background-position-x: left;
}

#cfr-notification-footer-empty-stars[tooltiptext] {
  margin-inline-end: 6px;
  opacity: 0.3;
}

#cfr-notification-footer-users {
  opacity: 0.7;
}

#cfr-notification-footer-spacer {
  flex-grow: 1;
}

#content-mask {
  background: rgba(0, 0, 0, 0.5);
}

/* nhnt11: Workaround to insert a linebreak after the DoH doorhanger's title.
 * The title uses the inline html|b that usually contains the hostname for
 * permission prompts to achieve bold formatting. This is always the 2nd child.
 */
.popup-notification-description[popupid="doh-first-time"] > html|b:first-of-type {
  display: block;
  margin-bottom: 4px; /* matches the margin-bottom on description elements */
}

/* Password Manager Doorhanger */

.ac-dropmarker {
  appearance: none;
  justify-self: end;
  margin-inline-end: 8px;
  align-self: center;
}

.ac-dropmarker::part(icon) {
  list-style-image: url(chrome://global/skin/icons/arrow-down-12.svg);
  -moz-context-properties: fill;
  fill: var(--input-color, -moz-DialogText);
}

.ac-has-end-icon {
  text-overflow: ellipsis;
  overflow: hidden;
}

/* ENABLE DEVTOOLS POPUP */
@media (-moz-platform: macos), (-moz-platform: windows) {
  #enable-devtools-popup {
    font-size: 1.18em;
  }
}

#sharing-tabs-warning-panel > hbox[type="window"] > vbox > label > #sharing-warning-screen-panel-header,
#sharing-tabs-warning-panel > hbox[type="screen"] > vbox > label > #sharing-warning-window-panel-header {
  display: none;
}

#sharing-tabs-warning-panel {
  max-width: 400px;
}

#sharing-warning-proceed-to-tab {
  appearance: none;
  border-style: none;
  margin: 0;
  background-color: rgb(0,96,223);
  color: rgb(255,255,255);
  border-radius: 5px;
  padding: 10px;
  margin-top: 15px;
  margin-bottom: 10px;
}

#sharing-warning-proceed-to-tab:hover {
  background-color: rgb(0,62,170);
}

.webRTC-selectDevice-selector-container {
  display: flex;
  align-items: center;
}

.webRTC-selectDevice-selector-container > menulist {
  flex: 1;
  min-width: 0;
}

popupnotificationcontent {
  margin-block-start: 8px;
}

/**
 * Our OS integration code toggles whether system colors should return light or
 * dark values based on the luminosity of the toolbar background. Because themes
 * can style panels to have a different background color than the toolbar, we
 * need specific overrides for system colors used in light or dark themes.
 */
.popup-notification-body:-moz-lwtheme {
  color-scheme: light;
}

:root[lwt-popup-brighttext] .popup-notification-body {
  color-scheme: dark;
}

.popup-notification-body menulist {
  margin: 0;
}

.popup-notification-checkbox {
  margin-block: 12px 0;
}

.popup-notification-body-container {
  padding-block-end: 0;
}

#webRTC-selectCamera-label,
#webRTC-selectMicrophone-label {
  display: none;
}

.webRTC-selectDevice-icon {
  -moz-context-properties: fill;
  fill: currentColor;
  margin-inline-end: 8px;
  /* Setting width explicitly so it's still visible if the device label is very long */
  width: 16px;
}

#webRTC-selectCamera-icon {
  list-style-image: url("chrome://browser/skin/notification-icons/camera.svg");
}

#webRTC-selectMicrophone-icon {
  list-style-image: url("chrome://browser/skin/notification-icons/microphone.svg");
}

#webRTC-selectSpeaker-icon {
  list-style-image: url("chrome://global/skin/media/audio.svg");
}

.popup-notification-body :is(description, label:not(.learnMore), checkbox, input) {
  margin-inline: 0;
}

.popup-notification-body input {
  padding: 8px;
  border-radius: 4px;
  border: 0;
  outline: 1px solid var(--input-border-color, ThreeDShadow);
  outline-offset: -1px;
  background-color: var(--input-bgcolor, Field);
  color: var(--input-color, FieldText);
}

.popup-notification-body input.ac-has-end-icon {
  --input-padding-from-arrow-side: calc(8px + 16px + 8px); /* spacing from the end + arrow element width + extra spacing) */
  padding-inline-end: var(--input-padding-from-arrow-side);
}

/* Avoid overlapping the text on the arrow icon when switching input text direction */
.popup-notification-body:-moz-locale-dir(rtl) input.ac-has-end-icon:dir(ltr) {
  padding-left: var(--input-padding-from-arrow-side);
  padding-right: 8px;
}
.popup-notification-body:-moz-locale-dir(ltr) input.ac-has-end-icon:dir(rtl) {
  padding-right: var(--input-padding-from-arrow-side);
  padding-left: 8px;
}

.popup-notification-body input:focus-visible {
  outline: 2px solid var(--focus-outline-color);
}

/**
 * There's already a margin-block-start of 8px on popupnotificationcontent,
 * so the first label only needs 8px of margin-block-start to match the
 * spec.
 */
.password-notification-label:first-of-type {
  margin-block-start: 8px;
}

.password-notification-label:not(:first-of-type) {
  margin-block-start: 16px;
}

#password-notification-visibilityToggle {
  margin-block-start: 14px;
}

#password-notification-visibilityToggle > .checkbox-label-box > .checkbox-label {
  opacity: 0.7;
}

.popup-notification-description > b {
  font-weight: inherit;
}

.popup-notification-description {
  font-weight: 600;
  margin-top: 0;
}

#tab-notification-deck {
  display: block;
}

.relay-integration-header {
  display: flex;
  align-items: center;
  font-size: 2em;
}

.relay-integration-header > div {
  width: 32px;
  height: 32px;
  background-image: url("chrome://browser/content/logos/relay.svg");
  background-repeat: no-repeat;
}

.relay-integration-header > span:first-of-type {
  font-weight: bold;
  margin-inline-start: 8px;
}

.relay-integration-header > span:last-of-type {
  font-weight: normal;
  white-space: pre;
}

.popup-notification-description[popupid="relay-integration-offer-notification"] > html|div:first-of-type {
  font-weight: normal;
  display: grid;
  grid-template-columns: auto;
  grid-template-rows: auto auto auto auto;
}

#relay-integration-reuse-masks-notification > popupnotificationcontent > div {
  font-weight: normal;
  display: grid;
  grid-template-columns: auto;
  grid-template-rows: auto auto auto auto;
}

.reusable-relay-masks {
  display: flex;
  flex-direction: column;
}

.reusable-relay-masks > button {
  padding: 4px;
  margin: 4px;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

.reusable-relay-masks > button > span:first-child {
  margin-inline-end: 20px;
}

.reusable-relay-masks > button > span:last-child {
  opacity: 0.6;
}

#historySwipeAnimationPreviousArrow,
#historySwipeAnimationNextArrow {
  will-change: transform;
}

#historySwipeAnimationPreviousArrow:-moz-locale-dir(rtl),
#historySwipeAnimationNextArrow:-moz-locale-dir(ltr) {
  transform: scaleX(-1);
}

#historySwipeAnimationPreviousArrow > svg,
#historySwipeAnimationNextArrow > svg {
  margin: auto 0;
}

#historySwipeAnimationPreviousArrow,
#historySwipeAnimationNextArrow {
  --swipe-nav-icon-primary-color: #0060DF;
  --swipe-nav-icon-accent-color: #FFFFFF;
}

@media (-moz-content-prefers-color-scheme: dark) {
  #historySwipeAnimationPreviousArrow,
  #historySwipeAnimationNextArrow {
    --swipe-nav-icon-primary-color: #00DDFF;
    --swipe-nav-icon-accent-color: #000000;
  }
}

@media (prefers-contrast) {
  #historySwipeAnimationPreviousArrow,
  #historySwipeAnimationNextArrow {
    --swipe-nav-icon-primary-color: SelectedItemText;
    --swipe-nav-icon-accent-color: SelectedItem;
  }
}

/*
 * Styles for the swipe navigation SVG icon.
 */
.swipe-nav-icon path {
  transition: fill 1s;
}

@media not (-moz-platform: macos) {
  /*
   * Styles for the swipe navigation SVG icon.
   *
   * `will-navigate` class name is added to the <svg> element when the user's
   * swipe gesture reached to the point where history navigation will be
   * triggered. It's used for triggering three animations, an arrow color change,
   * a circle color change and a glowing effect outer the circle.
   */
  .swipe-nav-icon circle {
    fill: var(--swipe-nav-icon-accent-color);
    stroke: var(--swipe-nav-icon-primary-color);
  }

  .swipe-nav-icon circle:first-of-type {
    fill: var(--swipe-nav-icon-primary-color);
    transition: opacity 1s;
    will-change: opacity; /* a workaround for bug 1804189 */
    opacity: 0;
  }

  .swipe-nav-icon.will-navigate > circle:not(:first-of-type) {
    fill: var(--swipe-nav-icon-primary-color);
  }

  .swipe-nav-icon circle:not(:first-of-type) {
    transition: fill 1s;
  }

  .swipe-nav-icon.will-navigate > circle:first-of-type {
    transition-delay: 0.2s;
    opacity: 0.2;
  }

  .swipe-nav-icon.will-navigate > circle:not(:first-of-type) {
    fill: var(--swipe-nav-icon-primary-color);
  }

  .swipe-nav-icon path {
    fill: var(--swipe-nav-icon-primary-color);
  }

  .swipe-nav-icon.will-navigate > path {
    fill: var(--swipe-nav-icon-accent-color);
    stroke: var(--swipe-nav-icon-accent-color);
  }
}

@media (-moz-platform: macos) {
  /*
   * Styles for the swipe navigation SVG icon.
   *
   * `will-navigate` class name is added to the <svg> element when the user's
   * swipe gesture reached to the point where history navigation will be
   * triggered.
   */
  .swipe-nav-icon-circle-outline,
  .swipe-nav-icon-arrow {
    fill: var(--swipe-nav-icon-primary-color);
  }
  .swipe-nav-icon-circle {
    fill: var(--swipe-nav-icon-accent-color);
  }
  .swipe-nav-icon.will-navigate > .swipe-nav-icon-circle-outline,
  .swipe-nav-icon.will-navigate > .swipe-nav-icon-arrow {
    fill: var(--swipe-nav-icon-accent-color);
  }
  .swipe-nav-icon.will-navigate > .swipe-nav-icon-circle {
    fill: var(--swipe-nav-icon-primary-color);
  }
}

panel toolbarseparator {
  appearance: none;
  min-height: 0;
  border-top: 1px solid var(--panel-separator-color);
  border-bottom: none;
  margin: var(--panel-separator-margin);
  padding: 0;
}

/* Picture-in-Picture panel */
#PictureInPicturePanel {
  width: var(--menu-panel-width-wide);
  font: caption;
}

#PictureInPicturePanelBody {
  gap: 8px;
  padding: 8px 16px;
}

#PictureInPicturePanelFooter {
  margin: 8px 16px 16px;
}