.requester-form-wrapper {
  position: relative;

  /**
   * The help button must be outside of the form, so we use a wrapper and position
   * it absolutely over the form here.
   */
  [popovertarget] {
    position: absolute;
    bottom: var(--spacing-lg);
    right: var(--spacing-md);

    @media (min-width: 768px) {
      right: var(--spacing-lg);
    }
  }
}

.requester-form {
  --background: var(--color-white);
  --spacing-fields: calc(var(--spacing-sm) * 3);

  background: var(--background);
  display: grid;
  grid-template-rows: auto auto;
  gap: var(--spacing-lg);
  padding: var(--spacing-lg) var(--spacing-md);
  border-radius: var(--radius-lg);
  box-shadow: 0 7px 10px 0 rgba(0, 0, 0, 0.1);

  @media (prefers-color-scheme: dark) {
    --background:
      linear-gradient(
        to bottom,
        var(--background-from),
        var(--background-to)
      );
    --background-from: rgba(255, 255, 255, 0.05);
    --background-to: transparent;

    box-shadow: none;
  }

  @media (min-width: 768px) {
    grid-template-rows: auto;
    grid-template-columns: 0.6fr 0.4fr;
    padding: var(--spacing-lg);
  }
}

.requester-form__primary {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-fields);
}

.requester-form__secondary {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-fields);

  /* Always leave some space for the help button. */
  padding-bottom: calc(3em + var(--spacing-lg));
}

.requester-form__field {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-xs);

  &:has([name="smtp_host"]),
  &:has([name="smtp_port"]) {
    display: none;
  }

  :has([value="other"]:checked)
  &:has(:is([name="smtp_host"], [name="smtp_port"])) {
    display: flex;
  }
}

.requester-form__label {
  font-family: var(--font-mono);
  font-size: 0.875rem;
  text-transform: uppercase;
  color: var(--color-text);

  .requester-form__field:has(:focus) & {
    --color-text: var(--color-water);
  }
}

.requester-form__flash {
  --color-background: #00ff3433;
  --color-border: #00821b;
  --color-text: var(--color-night);

  background-color: var(--color-background);
  padding: var(--spacing-md);
  border: 2px solid var(--color-border);
  border-radius: var(--radius);
  color: var(--color-text);

  @media (prefers-color-scheme: dark) {
    --color-text: var(--color-cream);
  }

  @media (prefers-reduced-motion: no-preference) {
    --slide-in-height: 50em;

    animation: slide-in 1s ease-in-out;
  }
}

.requester-form__flash--alert {
  --color-background: #ff000033;
  --color-border: #ff0000;
}

ul.requester-form__flash {
  padding-left: var(--spacing-lg);
  list-style: square;
}

.requester-form__actions {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-md);
}
