.evalsys-confirm-modal .modal-content,
.evalsys-upload-modal .modal-content,
.evalsys-notification-modal .modal-content {
  border: 0;
  border-radius: 14px;
  box-shadow: var(--evalsys-shadow-strong);
}

.evalsys-confirm-modal .modal-header,
.evalsys-upload-modal .modal-header,
.evalsys-notification-modal .modal-header {
  border-bottom: 1px solid var(--evalsys-line);
}

.evalsys-confirm-modal .modal-title,
.evalsys-upload-modal .modal-title,
.evalsys-notification-modal .modal-title {
  color: var(--evalsys-ink);
  font-weight: 800;
}

.evalsys-confirm-modal .modal-footer,
.evalsys-upload-modal .modal-footer,
.evalsys-notification-modal .modal-footer {
  border-top: 1px solid var(--evalsys-line);
}

/* Shared modal geometry used by every dashboard role. Bootstrap supplies the
   per-size --bs-modal-width value; this layer keeps that width inside the
   actual viewport and delegates vertical scrolling to the modal body. */
.modal-dialog {
  width: min(calc(100% - 24px), var(--bs-modal-width, 500px));
  max-width: var(--bs-modal-width, 500px);
  margin: 12px auto;
}

.modal-dialog-scrollable,
.modal-dialog-centered {
  min-height: min(calc(100% - 24px), calc(100dvh - 24px));
}

.modal-content {
  min-width: 0;
  max-width: 100%;
  max-height: calc(100vh - 24px);
  max-height: calc(100dvh - 24px);
  overflow: hidden;
}

.modal-header,
.modal-footer {
  flex: 0 0 auto;
  min-width: 0;
  gap: 10px;
}

.modal-header > :not(.btn-close),
.modal-title,
.modal-body,
.modal-footer {
  min-width: 0;
}

.modal-title,
.modal-body,
.modal-body p,
.modal-body .form-text,
.modal-body .alert {
  overflow-wrap: break-word;
  word-break: normal;
}

.modal-header .btn-close {
  flex: 0 0 auto;
}

.modal-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.modal-footer {
  flex-wrap: wrap;
}

.modal .row > *,
.modal form,
.modal .input-group,
.modal .form-control,
.modal .form-select,
.modal textarea,
.modal input:not([type="checkbox"]):not([type="radio"]),
.modal select {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.modal .form-control,
.modal .form-select,
.modal textarea,
.modal input:not([type="checkbox"]):not([type="radio"]),
.modal select {
  width: 100%;
}

.modal .input-group {
  width: 100%;
  flex-wrap: nowrap;
}

.modal .input-group > .form-control,
.modal .input-group > .form-select {
  flex: 1 1 0;
  width: 1%;
}

.modal .input-group > .btn,
.modal .input-group > .input-group-text {
  flex: 0 0 auto;
}

@media (max-width: 575.98px) {
  .modal-dialog {
    width: calc(100% - 16px);
    margin: 8px auto;
  }

  .modal-content {
    max-height: calc(100vh - 16px);
    max-height: calc(100dvh - 16px);
  }

  .modal-header,
  .modal-body,
  .modal-footer {
    padding-inline: clamp(12px, 4vw, 16px);
  }

  .modal-footer > .btn {
    flex: 1 1 min(160px, 100%);
    max-width: 100%;
  }

  .modal input[type="file"] {
    font-size: .8rem;
    padding: .35rem;
  }

  .modal input[type="file"]::file-selector-button {
    max-width: 52%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    padding-inline: .65rem;
  }
}
