@import "@doku-dev/doku-fragment/breakpoint";

$modalMarginDesktop: 32px;
$modalMarginMobile: 24px;

.d-modal-portal {
  position: fixed;
  top: 0;
  bottom: 0;
  display: block;
  width: 100%;
  overflow-y: auto;
  z-index: 2000;
  padding: 0 24px;
  @include mobile {
    padding: 0 16px;
  }
}

.d-modal {
  display: flex;
  width: 100%;
  align-items: flex-start;
  margin: $modalMarginDesktop auto;
  @include mobile {
    margin: $modalMarginMobile auto;
  }
}

.d-modal-content {
  display: flex;
  flex-direction: column;
  background-color: var(--d-color-neutral-00);
  border-radius: 8px;
  border: 1px solid var(--d-color-neutral-10);
  font-family: var(--d-font-stacks);
  width: 100%;
}

.d-modal-header {
  display: flex;
  justify-content: space-between;
  padding: 16px;
  color: var(--d-color-neutral-100);
  font-size: 20px;
  font-weight: 500;
  line-height: 28px;

  .d-modal-header-content {
    display: flex;
    align-items: center;
  }
}

.d-modal-body {
  padding: 16px;
  color: var(--d-color-neutral-60);
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  display: flex;
  flex-direction: column;
}

.d-modal-footer {
  display: flex;
  padding: 16px;

  > *:not(:last-child) {
    margin-right: 16px;
  }

  .d-modal-footer-spacer {
    margin: 0 auto;
  }
}

.d-modal-close-icon {
  display: flex;
  color: var(--d-color-neutral-100);
  margin-left: 16px;
  cursor: pointer;
  align-self: flex-start;
}

// Config

.d-modal-centered {
  align-items: center;
  min-height: calc(100% - $modalMarginDesktop * 2);
  @include mobile {
    min-height: calc(100% - $modalMarginMobile * 2);
  }
}

.d-modal-scrollable-content {
  &.d-modal-centered {
    height: calc(100% - $modalMarginDesktop * 2);
    min-height: unset;
    @include mobile {
      height: calc(100% - $modalMarginMobile * 2);
    }

    .d-modal-content {
      max-height: 100%;
      overflow: hidden;
    }
    .d-modal-content-host {
      display: flex;
      flex-direction: column;
      overflow: hidden;
      max-height: 100%;
    }
  }
}

// Sizes

.d-modal-small {
  max-width: 300px;
}
.d-modal-medium {
  max-width: 500px;
}
.d-modal-large {
  max-width: 800px;
}

// Variants

.d-modal-variant-info {
  .d-modal-header {
    padding: 16px 16px 0;
  }
  .d-modal-footer {
    padding: 0 16px 16px;
  }
}

.d-modal-variant-form {
  .d-modal-header {
    border-bottom: 1px solid var(--d-color-neutral-20);
  }
  .d-modal-body {
    overflow-y: auto;
  }
  .d-modal-footer {
    border-top: 1px solid var(--d-color-neutral-20);
  }
}

.d-modal-variant-confirmation {
  .d-modal-header {
    padding-bottom: 0;

    .d-modal-confirmation-icon-container {
      width: 48px;
      height: 48px;
      border-radius: 50%;
      padding: 8px;
      margin-right: 8px;

      .d-modal-confirmation-icon-circle {
        border-radius: 50%;
        width: 100%;
        height: 100%;
        padding: 8px;
        display: flex;
        align-items: center;
        justify-content: center;
        > * {
          color: var(--d-color-neutral-00);
        }
      }

      &.warning {
        background-color: var(--d-color-yellow-10);
        .d-modal-confirmation-icon-circle {
          background-color: var(--d-color-yellow-50);
        }
      }
      &.info {
        background-color: var(--d-color-blue-05, #edf3ff);
        .d-modal-confirmation-icon-circle {
          background-color: var(--d-color-blue-40, #4b88ff);
        }
      }
      &.danger {
        background-color: var(--d-color-red-05);
        .d-modal-confirmation-icon-circle {
          background-color: var(--d-color-red-70);
        }
      }
      &.success {
        background-color: var(--d-color-green-05);
        .d-modal-confirmation-icon-circle {
          background-color: var(--d-color-green-60);
        }
      }
    }
  }
  .d-modal-body {
    padding-top: 24px;
    padding-bottom: 24px;
  }
  .d-modal-footer {
    padding-top: 0;
  }
}
