/* 只有成功提示短暂出现；错误与维护消息继续保留在原页面。 */
.feedback-toasts {
  position:fixed;
  inset:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) auto auto;
  width:min(420px,calc(100vw - 36px));
  max-width:none;
  margin:0;
  padding:0;
  border:0;
  background:transparent;
  overflow:visible;
  pointer-events:none;
  z-index:10000;
}
.feedback-toasts:empty { display:none; }
.feedback-toast {
  display:flex;
  align-items:center;
  gap:10px;
  padding:13px 19px;
  margin-bottom:10px;
  border:1px solid rgba(255,255,255,.85);
  border-radius:24px;
  color:#173b32;
  background:rgba(241,255,248,.94);
  box-shadow:0 8px 28px rgba(18,52,43,.12);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  font-size:.92rem;
  line-height:1.5;
  overflow-wrap:anywhere;
  animation:feedback-enter .2s ease-out both;
  transition:transform .18s ease-in,opacity .18s ease-in;
}
.feedback-toast.is-leaving { opacity:0; transform:translateX(12px); animation:none; }
.feedback-mark { flex:none; color:#246b50; font-weight:700; }
.feedback-spinner {
  display:inline-block;
  flex:none;
  width:1em;
  height:1em;
  border:2px solid currentColor;
  border-right-color:transparent;
  border-radius:50%;
  animation:feedback-spin .8s linear infinite;
}
.dialog-skeleton { padding:20px 4px; color:var(--muted); }
.wait-status { display:inline-flex; align-items:center; gap:8px; }
.wait-status::before { content:""; width:8px; height:8px; border-radius:50%; background:currentColor; animation:feedback-pulse 1.3s ease-in-out infinite; }
.wait-status::after { content:"…"; animation:feedback-pulse 1.3s ease-in-out infinite; }
.skeleton-line { display:block; position:relative; overflow:hidden; height:40px; margin-top:18px; border-radius:10px; background:var(--border); opacity:.45; }
.skeleton-line:last-child { width:65%; }
.skeleton-line::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent); animation:feedback-shimmer 1.4s ease-in-out infinite; }
[data-job-poll].is-job-waiting>strong::before { content:""; display:inline-block; width:8px; height:8px; margin-right:9px; border-radius:50%; background:currentColor; animation:feedback-pulse 1.3s ease-in-out infinite; }
[data-job-poll].is-job-waiting [data-poll-text]::after { content:" …"; display:inline-block; animation:feedback-pulse 1.3s ease-in-out infinite; }
html[data-bs-theme=dark] .feedback-toast { color:#e2f7ec; background:rgba(24,48,41,.96); border-color:#557265; box-shadow:0 8px 28px #0004; }
html[data-bs-theme=dark] .feedback-mark { color:#9bdfb8; }
@keyframes feedback-enter { from { opacity:0; transform:translateX(24px); } to { opacity:1; transform:translateX(0); } }
@keyframes feedback-spin { to { transform:rotate(360deg); } }
@keyframes feedback-pulse { 50% { opacity:.4; } }
@keyframes feedback-shimmer { from { transform:translateX(-100%); } to { transform:translateX(100%); } }
@media(max-width:575px) { .feedback-toasts { inset:max(12px,env(safe-area-inset-top)) 12px auto; width:calc(100vw - 24px); } .feedback-toast { padding:12px 16px; border-radius:20px; } }
@media(prefers-reduced-motion:reduce) { .feedback-toast,.feedback-spinner,.skeleton-line::after,.wait-status::before,.wait-status::after,[data-job-poll].is-job-waiting>strong::before,[data-job-poll].is-job-waiting [data-poll-text]::after { animation:none; transition:none; } }
@media(forced-colors:active) { .feedback-toast { border:1px solid CanvasText; color:CanvasText; background:Canvas; backdrop-filter:none; } }
