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

:root {
  min-width: 29em;
}

dialog[insecureauth] {
  --icon-url: url("chrome://global/skin/icons/security-broken.svg");
}

#dialogGrid {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  max-height: 100%;
}

.dialogRow:not([hidden]) {
  display: contents;
}

#iconContainer {
  align-self: start;
}

#infoContainer {
  max-width: 45em;
}

#infoTitle {
  margin-bottom: 1em;
}

#infoBody {
  -moz-user-focus: normal;
  user-select: text;
  cursor: text !important;
  white-space: pre-wrap;
  word-break: break-word;
  unicode-bidi: plaintext;
  overflow-y: auto;
}

.sizeDetermined,
.sizeDetermined::part(content-box),
.sizeDetermined #infoBody,
.sizeDetermined #infoRow,
.sizeDetermined #infoContainer {
  /* Allow stuff to shrink */
  min-height: 0;
}

.sizeDetermined #infoRow {
  /* Make the info row take all the available space, potentially shrinking,
   * since it's what contains the infoBody, which is scrollable */
  flex: 1;
}

#loginLabel,
#password1Label {
  text-align: start;
}

#loginTextbox,
#password1Textbox {
  text-align: match-parent;
}

:root[subdialog] {
  /* Ensure we don't crop stuff */
  width: min-content;

  /* use flexbox instead of grid: */
  dialog,
  #dialogGrid,
  #infoContainer,
  .dialogRow:not([hidden]) {
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }

  #iconContainer {
    display: none;
  }

  /* Fix padding/spacing */
  dialog {
    --grid-padding: 16px;
    /* All the inner items should have 4px inline margin, leading to 1.16em spacing
     * between the dialog and its contents, and 8px horizontal spacing between items. */
    padding: var(--grid-padding) calc(var(--grid-padding) - 4px);

    &::part(dialog-button) {
      /* Adjust vertical margins for buttons in subdialogs. */
      margin: 0 4px;
      min-width: auto;
    }
  }

  description,
  checkbox {
    margin: 0 4px;
  }

  label {
    margin: 4px; /* Labels for input boxes should get block as well as the regular inline margin. */
  }

  .checkbox-label {
    /* The checkbox already has the horizontal margin, so override the rule
     * above. */
    margin: 0;
  }

  input {
    margin: 0 4px 4px;
  }

  /* Add vertical spaces between rows: */
  .dialogRow {
    margin-block: 0 var(--grid-padding);
  }

  /* Fix spacing in the `prompt()` case: */
  #loginLabel[value=""] {
    display: none;
  }
}
