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

.popup-notification-panel::part(content) {
  /* To keep the rounded borders of the panel, we use overflow: hidden; from the
   * panel-no-padding class to ensure the contents are clipped to the border box.
   * That causes us to override the "display" property so that the height of the
   * contents is computed correctly. */
  display: flex;
  /* Make multiple popupnotifications stack vertically. */
  flex-direction: column;
}

.popup-notification-panel > popupnotification:not([hidden]) {
  /* Since the anonymous parent (::part(content)) has display: flex, sizing
   * computations work better with display: block; than with the XUL default
   * display: flex;
   * TODO(emilio): we can probably remove this. */
  display: block;
}

popupnotification {
  font: caption;
}

popupnotificationcontent {
  margin-top: 0.5em;
}

.popup-notification-header-container,
.popup-notification-footer-container {
  display: flex;
  max-width: calc(2 * var(--arrowpanel-padding) + 16px /* Icon width */ + var(--panel-border-radius) + var(--popup-notification-body-width));
}

.popup-notification-body-container {
  padding: var(--arrowpanel-padding);
}

.popup-notification-icon {
  height: 16px;
  width: 16px;
  margin-inline-end: 6px;

  &:not([hasicon]) {
    display: none;
  }
}

.popup-notification-body {
  width: var(--popup-notification-body-width);
  flex: 1 auto;
}

/*
 * Ensure that host names in PopupNotifications wrap. This targets the "name"
 * element in the description container which is the "name" property of the
 * PopupNotification. Name is what gets substituted from the l10n string using
 * the placeholder <>.
 */
.popup-notification-description-name {
  word-break: break-all;
}

.popup-notification-closebutton {
  margin-inline-end: -8px;
  margin-top: -8px;
}

.popup-notification-origin {
  margin-bottom: 0.3em !important;

  &:not([value]) {
    display: none;
  }
}

.popup-notification-hint-text {
  margin-top: 0.5em !important;

  &:empty {
    display: none;
  }
}

.popup-notification-secondary-button:not([dropmarkerhidden]) {
  border-start-end-radius: 0;
  border-end-end-radius: 0;

  /**
   * The focus ring is an outline thicker than 1px, meaning that for split buttons,
   * if the main button part of the split button has :focus-visible, the ring will
   * be partially hidden behind the dropmarker button. We work around this by
   * temporarily boosting the z-index of the main button while showing its focus
   * ring.
   */
  &:focus-visible {
    z-index: 2;
  }
}

.popup-notification-dropmarker {
  border-start-start-radius: 0 !important;
  border-end-start-radius: 0 !important;
  margin-inline-start: 1px !important;
  padding: 8px !important;
  max-width: 32px;

  > .button-box > hbox {
    display: none;
  }

  > .button-box > .button-menu-dropmarker {
    appearance: none;
    display: flex;
    content: url(chrome://global/skin/icons/arrow-down.svg);
    -moz-context-properties: fill;
    fill: currentColor;
  }
}

.popup-notification-warning {
  color: #d74345;
}

.popup-notification-checkbox > .checkbox-label-box > .checkbox-label {
  opacity: 0.7;
}

.popup-notification-learnmore-link {
  text-decoration: underline;
  margin-block: 4px 0;

  &:not([href]) {
    display: none;
  }
}
