.notif-root {
  position: fixed;
  left: 16px;
  bottom: 16px;
  z-index: 9999;
  display: grid;
  gap: 10px;
  pointer-events: none;
}

.notif {
  pointer-events: auto;
  width: min(360px, calc(100vw - 32px));
  background: #ffffff;
  border: 1px solid rgba(17, 24, 39, 0.12);
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(17, 24, 39, 0.18);
  overflow: hidden;

  opacity: 0;
  transform: translateY(14px) scale(0.98);
  filter: blur(2px);
  animation: notif-enter 260ms cubic-bezier(0.2, 0.9, 0.2, 1) forwards;

  font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial,
    "Apple Color Emoji", "Segoe UI Emoji";
}

.notif--leave {
  animation: notif-leave 220ms cubic-bezier(0.4, 0, 1, 1) forwards;
}

.notif__content {
  display: flex;
  gap: 12px;
  padding: 14px 14px 12px 14px;
  align-items: flex-start;
}

.notif__icon {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: rgba(34, 197, 94, 0.12);
  color: #22c55e;
  display: grid;
  place-items: center;
}

.notif__svg {
  width: 20px;
  height: 20px;
}

.notif__text {
  min-width: 0;
}

.notif__title {
  font-size: 14px;
  font-weight: 700;
  color: #111827;
  line-height: 1.2;
  margin-top: 2px;
}

.notif__message {
  font-size: 13px;
  color: rgba(17, 24, 39, 0.72);
  line-height: 1.35;
  margin-top: 4px;
  word-break: break-word;
}

.notif__bar {
  height: 4px;
  background: rgba(17, 24, 39, 0.08);
}

.notif__barFill {
  height: 100%;
  width: 100%;
  background: #22c55e;
  transform-origin: left;
  animation-name: notif-progress;
  animation-timing-function: linear;
  animation-fill-mode: forwards;
}

@keyframes notif-progress {
  from {
    transform: scaleX(1);
  }
  to {
    transform: scaleX(0);
  }
}

@keyframes notif-enter {
  0% {
    opacity: 0;
    transform: translateY(14px) scale(0.98);
    filter: blur(2px);
  }
  60% {
    opacity: 1;
    transform: translateY(-2px) scale(1);
    filter: blur(0px);
  }
  100% {
    opacity: 1;
    transform: translateY(0px) scale(1);
    filter: blur(0px);
  }
}

@keyframes notif-leave {
  0% {
    opacity: 1;
    transform: translateY(0px) scale(1);
    filter: blur(0px);
  }
  100% {
    opacity: 0;
    transform: translateY(14px) scale(0.98);
    filter: blur(2px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .notif,
  .notif--leave,
  .notif__barFill {
    animation: none !important;
    transform: none !important;
    filter: none !important;
    opacity: 1 !important;
  }
}
