html:has(dialog[open]:modal) {
  overflow: hidden;
}

dialog, ::backdrop {
  overscroll-behavior: contain;
}

.dialog {
  background-color: var(--color-bg);
  border-radius: var(--rounded-xs);
  border-width: var(--border);
  box-shadow: var(--shadow-xs);
  color: var(--color-text);
  inline-size: var(--size-full);
  margin: auto;
  max-inline-size: var(--dialog-size, var(--max-i-lg));

  &::backdrop {
    background-color: rgba(0, 0, 0, .8);
  }

  /* Final state of exit animation and setup */
  opacity: 0;
  transform: var(--scale-95);
  transition-behavior: allow-discrete;
  transition-duration: var(--time-200);
  transition-property: display, overlay, opacity, transform;

  &::backdrop {
    opacity: 0;
    transition-behavior: allow-discrete;
    transition-duration: var(--time-200);
    transition-property: display, overlay, opacity;
  }

  /* Final state of entry animation */
  &[open] {
    opacity: 1;
    transform: var(--scale-100);
    pointer-events: inherit;
  }

  &[open]::backdrop { opacity: 1; }

  /* Initial state of entry animation */
  @starting-style {
    &[open] { opacity: 0; transform: var(--scale-95); }
    &[open]::backdrop { opacity: 0; }
  }

  /* Drawer component on mobile  */
  @media (width < 40rem) {
    border-end-end-radius: 0;
    border-end-start-radius: 0;
    margin-block-end: 0;
    max-inline-size: none;
  }

  &.lg {
    --dialog-size: 800px;
  }

  &.fullwidth {
    --dialog-size: 98vw;
  }

  &.fullscreen {
    --dialog-size: 100vw;

    height: 100vh;
    max-height: 100vh;
  }
}

.dialog > .dialog__content > form {
  display: flex;
  flex-direction: column;
  gap: calc(var(--spacer) * 4);
}

.dialog__content {
  padding: var(--size-3);
}

.dialog__close {
  inset-block-start: var(--size-3);
  inset-inline-end:  var(--size-3);
  position: absolute;
}

.dialog__footer {
  padding-top: .75rem;
}


/* ------- CUSTOM STYLES ------- */

dialog.menu {
  width: fit-content;
  overflow: visible;
}