/* Базовые стили уведомлений */
.ntf {
  position: fixed;
  padding: 12px 26px 12px 20px;
  border-radius: 4px;
  border: 1px solid transparent;
  color: white;
  z-index: 9999;
  font-family: Arial, sans-serif;
  font-size: 14px;
  line-height: 1.4;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  min-width: 300px;
  max-width: 500px;
  word-wrap: break-word;
  overflow: hidden;
  transition: transform 0.3s ease;
}

/* Стили для типов уведомлений */
.ntf-success {
  background-color: #4a9d7e;
}

.ntf-error {
  background-color: #a73a3a;
}

.ntf-info {
  background-color: #17a2b8;
}

.ntf-warning {
  background-color: #ffc107;
  color: black;
}

.ntf-light {
  background-color: #f8f9fa;
  color: #212529;
  border: 1px solid #dee2e6;
}

.ntf-dark {
  background-color: #343a40;
  color: #f8f9fa;
}

.ntf-primary {
  background-color: #007bff;
  color: white;
}

/* Дефолтные иконки для типов уведомлений */
.ntf-icon-success::before {
  content: "✓";
  color: white;
}

.ntf-icon-error::before {
  content: "✕";
  color: white;
}

.ntf-icon-info::before {
  content: "ℹ";
  color: white;
}

.ntf-icon-warning::before {
  content: "⚠";
  color: black;
}

.ntf-icon-light::before {
  content: "☀";
  color: #f39c12;
}

.ntf-icon-dark::before {
  content: "🌙";
  color: #bdc3c7;
}

.ntf-icon-primary::before {
  content: "★";
  color: white;
}

/* Кнопка закрытия */
.ntf-close-btn {
  position: absolute;
  top: 8px;
  right: 12px;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  opacity: 0.7;
}

/* Прогресс-бар */
.ntf-progress {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 4px;
  background-color: rgba(255, 255, 255, 0.3);
  width: 100%;
  transition: width linear;
}

.ntf-light .ntf-progress {
  background-color: #cad0d9;
}

/* Позиционирование */
.ntf-top-right {
  top: 20px;
  right: 20px;
}

.ntf-top-left {
  top: 20px;
  left: 20px;
}

.ntf-bottom-right {
  bottom: 20px;
  right: 20px;
}

.ntf-bottom-left {
  bottom: 20px;
  left: 20px;
}

.ntf-top-center {
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
}

.ntf-bottom-center {
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
}

/* Базовые стили анимаций */
.ntf-animate {
  animation-duration: 0.4s;
  animation-fill-mode: both;
}

/* Fade анимация */
@keyframes ntfFadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes ntfFadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

.ntf-fade-in {
  opacity: 0;
  animation-name: ntfFadeIn;
}

.ntf-fade-out {
  animation-name: ntfFadeOut;
}

/* Slide анимация */
@keyframes ntfSlideIn {
  from {
    transform: translateY(-100px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes ntfSlideOut {
  from {
    transform: translateY(0);
    opacity: 1;
  }
  to {
    transform: translateY(-100px);
    opacity: 0;
  }
}

.ntf-slide-in {
  opacity: 0;
  animation-name: ntfSlideIn;
}

.ntf-slide-out {
  animation-name: ntfSlideOut;
}

/* Scale анимация */
@keyframes ntfScaleIn {
  from {
    transform: scale(0.5);
    opacity: 0;
  }
  to {
    transform: scale(1);
    opacity: 1;
  }
}

@keyframes ntfScaleOut {
  from {
    transform: scale(1);
    opacity: 1;
  }
  to {
    transform: scale(0.5);
    opacity: 0;
  }
}

.ntf-scale-in {
  opacity: 0;
  animation-name: ntfScaleIn;
}

.ntf-scale-out {
  animation-name: ntfScaleOut;
}

/* Bounce анимация */
@keyframes ntfBounceIn {
  0% {
    transform: scale(0.3);
    opacity: 0;
  }
  50% {
    transform: scale(1.05);
    opacity: 1;
  }
  70% {
    transform: scale(0.9);
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

@keyframes ntfBounceOut {
  0% {
    transform: scale(1);
    opacity: 1;
  }
  20% {
    transform: scale(0.9);
    opacity: 1;
  }
  50% {
    transform: scale(1.05);
    opacity: 1;
  }
  100% {
    transform: scale(0.3);
    opacity: 0;
  }
}

.ntf-bounce-in {
  opacity: 0;
  animation-name: ntfBounceIn;
  animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.ntf-bounce-out {
  animation-name: ntfBounceOut;
  animation-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045);
}

/* Flip анимация */
@keyframes ntfFlipIn {
  from {
    transform: perspective(1000px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
  to {
    transform: perspective(1000px) rotate3d(1, 0, 0, 0deg);
    opacity: 1;
  }
}

@keyframes ntfFlipOut {
  from {
    transform: perspective(1000px) rotate3d(1, 0, 0, 0deg);
    opacity: 1;
  }
  to {
    transform: perspective(1000px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
}

.ntf-flip-in {
  opacity: 0;
  animation-name: ntfFlipIn;
  backface-visibility: visible !important;
}

.ntf-flip-out {
  animation-name: ntfFlipOut;
  backface-visibility: visible !important;
}

/* Стили для управления расположением уведомлений */
.ntf-container {
  position: fixed;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  pointer-events: none;
}

.ntf-top-right,
.ntf-top-left,
.ntf-top-center {
  align-items: flex-start;
}

.ntf-bottom-right,
.ntf-bottom-left,
.ntf-bottom-center {
  align-items: flex-end;
}

.ntf-top-center,
.ntf-bottom-center {
  align-items: center;
}

.ntf-top-right {
  top: 0;
  right: 0;
}

.ntf-top-left {
  top: 0;
  left: 0;
}

.ntf-bottom-right {
  bottom: 0;
  right: 0;
}

.ntf-bottom-left {
  bottom: 0;
  left: 0;
}

.ntf-top-center {
  top: 0;
  left: 50%;
  transform: translateX(-50%);
}

.ntf-bottom-center {
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}

.ntf-container .ntf {
  position: relative;
  margin: 10px;
  pointer-events: auto;
}

/* Стили для заголовка уведомления */
.ntf-header {
  display: flex;
  align-items: center;
  margin-bottom: 8px;
  font-weight: bold;
}

.ntf-icon {
  margin-right: 8px;
  font-size: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
}

.ntf-title {
  flex-grow: 1;
  margin-right: 8px;
}

.ntf-note {
  font-size: 12px;
  opacity: 0.8;
  font-weight: normal;
}
