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

/*** Downloads Panel ***/

#downloadsListBox > richlistitem:not([selected]) button {
  /* Only focus buttons in the selected item. */
  -moz-user-focus: none;
}

#downloadsSummary:not([inprogress]) > vbox > #downloadsSummaryProgress,
#downloadsSummary:not([inprogress]) > vbox > #downloadsSummaryDetails,
#downloadsFooter:not([showingsummary]) #downloadsSummary {
  display: none;
}

#downloadsFooter[showingsummary] > stack:hover > #downloadsSummary,
#downloadsFooter[showingsummary] > stack:not(:hover) > #downloadsFooterButtons {
  /* If we used "visibility: hidden;" then the mouseenter event of
     #downloadsHistory wouldn't be triggered immediately, and the hover styling
     of the button would not apply until the mouse is moved again.

     "-moz-user-focus: ignore;" prevents the elements with "opacity: 0;" from
     being focused with the keyboard. */
  opacity: 0;
  -moz-user-focus: ignore;
}

/*** Downloads View ***/

#downloadsListBox.allDownloadsListBox > richlistitem button {
  /* These buttons should never get focus, as that would "disable"
     the downloads view controller (it's only used when the richlistbox
     is focused). */
  -moz-user-focus: none;
}

/*** Visibility of controls inside download items ***/
.download-state[buttonhidden] > .downloadButton {
  display: none;
}

.download-state:not([state="6"],/* Blocked (parental) */
                    [state="8"],/* Blocked (dirty)    */
                    [state="9"] /* Blocked (policy)   */)
                                           .downloadBlockedBadge,

.download-state:not([state="-1"],/* Starting (initial) */
                    [state="5"], /* Starting (queued)  */
                    [state="0"], /* Downloading        */
                    [state="4"], /* Paused             */
                    [state="7"]  /* Scanning           */)
                                           .downloadProgress {
  display: none;
}

/*** Visibility of download button labels ***/

.download-state:not([state="-1"],/* Starting (initial) */
                    [state="5"], /* Starting (queued)  */
                    [state="0"], /* Downloading        */
                    [state="4"]  /* Paused             */)
                                           .downloadCancel,

.download-state:not([state="2"], /* Failed             */
                    [state="3"]  /* Canceled           */)
                                           .downloadRetry,

.download-state:not([state="1"]  /* Finished           */)
                                           .downloadShow {
  display: none;
}

/*** Downloads panel ***/

#downloadsPanel[hasdownloads] #emptyDownloads,
#downloadsPanel:not([hasdownloads]) #downloadsListBox {
  display: none;
}

/*** Downloads panel multiview (main view and blocked-downloads subview) ***/

/* Make the panel wide enough to show the download list items without improperly
   truncating them. */
#downloadsPanel-multiView > .panel-viewcontainer,
#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack {
  max-width: unset;
}

#downloadsPanel-blockedSubview,
#downloadsPanel-mainView {
  font: caption;
  min-width: 37em;
  padding: 0.62em;
  /* If we don't set a width, #downloadsPanelTorWarningDescription will request
   * its max-content width. */
  width: 37em;
}

#downloadsPanel-mainView {
  /* Fix the layout to ensure the #downloadsWarningDescription is given enough
   * vertical space. For tor-browser#40701.
   * TODO: May no longer be necessary after esr 115 due to bugzilla bug 1816455.
   */
  display: flex;
  flex-direction: column;
}

.downloads-tor-warning-grid {
  display: grid;
  grid-template:
    "title button" min-content
    "description button" auto
    / 1fr max-content;
  gap: 8px;
  margin-block: 8px;
  /* Some extra space between the text and the icon. */
  margin-inline-start: 8px;
}

.downloads-tor-warning-grid .downloads-tor-warning-title {
  grid-area: title;
  margin: 0;
}

.downloads-tor-warning-grid .downloads-tor-warning-description {
  grid-area: description;
  margin: 0;
}

.downloads-tor-warning-grid .downloads-tor-warning-dismiss-button {
  grid-area: button;
  align-self: center;
}

.downloads-tor-warning-description,
.downloads-tor-warning-title {
  line-height: 1.4;
}

.downloads-tor-warning-title {
  font-weight: bold;
}

#downloadsPanelTorWarning :is(
  .downloads-tor-warning-description,
  .downloads-tor-warning-title
) {
  padding-inline: 8px;
  margin-block-start: 8px;
  margin-block-end: 0;
}

#downloadsHistory,
#downloadsFooterButtons {
  margin: 0;
}

.downloadMainArea,
.downloadContainer {
  min-width: 0;
}
