Toast de error con cuenta atrás

Toast de error con cuenta atrás: tarjeta en CSS. Copia las reglas, o el prompt que reproduce el resultado.

toastnotificationerrordarkprogressanimated

CSS
.card-045 {
  position: relative;
  width: 340px;
  background: #1c1917;
  border-radius: 12px;
  overflow: hidden;
  font-family: system-ui,sans-serif;
  color: #fafaf9;
  box-shadow: 0 12px 32px rgba(0,0,0,.35)
}
.card-045__row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px
}
.card-045__dot {
  flex: none;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ef4444;
  box-shadow: 0 0 0 4px rgba(239,68,68,.25)
}
.card-045__text {
  flex: 1;
  display: flex;
  flex-direction: column
}
.card-045 b {
  font-size: 14px
}
.card-045__text span {
  font-size: 12px;
  color: #a8a29e
}
.card-045 a {
  font-size: 13px;
  font-weight: 600;
  color: #fca5a5;
  text-decoration: none
}
.card-045 a:hover {
  text-decoration: underline
}
.card-045__bar {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 3px;
  width: 100%;
  background: #ef4444;
  transform-origin: left;
  animation: card-045-drain 5s linear forwards
}
.card-045:hover .card-045__bar {
  animation-play-state: paused
}
@keyframes card-045-drain {
  to {
    transform: scaleX(0)
  }
}
.card-045 :is(a,button,input,select,textarea):focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) {
  .card-045, .card-045 * { animation: none; transition: none; }
}
HTML
<div class="card-045" role="alert">
  <div class="card-045__row">
    <span class="card-045__dot"></span>
    <div class="card-045__text"><b>Upload failed</b><span>The file is larger than 25 MB.</span></div>
    <a href="#">Retry</a>
  </div>
  <i class="card-045__bar"></i>
</div>
Prompt

Crea un toast de error oscuro de 340px: fondo #1c1917, radio 12px, sombra 0 12px 32px rgba(0,0,0,.35). Fila: un punto rojo #ef4444 de 10px con un halo rojo translúcido de 4px, un título 14px bold "Upload failed" sobre un mensaje 12px #a8a29e, y un enlace "Retry" en #fca5a5. A lo largo del borde inferior una barra roja de 3px se encoge del ancho completo a cero durante 5s (scaleX desde la izquierda, lineal, forwards) como cuenta atrás; el hover pausa la animación.