/* Shared task and transport feedback. Native progress supplies accessible range semantics. */
.operation-progress { min-width: 0; padding: 0.9rem 1rem; border: 1px solid var(--color-border); border-radius: var(--radius, 0.75rem); background: var(--color-surface); color: var(--color-ink); }
.operation-progress[hidden], .operation-progress [hidden] { display: none !important; }
.operation-progress-heading { display: flex; align-items: center; gap: 0.75rem; min-width: 0; }
.operation-progress-heading strong { flex: 1; min-width: 0; overflow-wrap: anywhere; font-size: 0.9375rem; }
.operation-progress-count, .operation-progress-timing { font-variant-numeric: tabular-nums; color: var(--color-muted); font-size: 0.8125rem; }
.operation-progress-count { flex-shrink: 0; }
.operation-progress-track { display: block; width: 100%; height: 0.375rem; margin: 0.65rem 0; border: 0; border-radius: 1rem; overflow: hidden; appearance: none; background: var(--color-border); color: var(--color-primary); }
.operation-progress-track::-webkit-progress-bar { background: var(--color-border); border-radius: 1rem; }
.operation-progress-track::-webkit-progress-value { background: var(--color-primary); border-radius: 1rem; transition: width 180ms ease-out; }
.operation-progress-track::-moz-progress-bar { background: var(--color-primary); border-radius: 1rem; }
.operation-progress-track:indeterminate { background: linear-gradient(90deg, transparent 0 35%, var(--color-primary) 45% 55%, transparent 65% 100%) var(--color-border); background-size: 220% 100%; animation: operation-progress-flow 1.8s linear infinite; }
.operation-progress-track:indeterminate::-webkit-progress-bar { background: linear-gradient(90deg, transparent 0 35%, var(--color-primary) 45% 55%, transparent 65% 100%) var(--color-border); background-size: 220% 100%; animation: operation-progress-flow 1.8s linear infinite; }
.operation-progress-track:indeterminate::-moz-progress-bar { background: transparent; }
.operation-progress-detail, .operation-progress-timing { margin: 0.3rem 0 0; overflow-wrap: anywhere; }
.operation-progress-detail { font-size: 0.875rem; }
.operation-progress-detail:empty, .operation-progress-timing:empty, .operation-progress-count:empty { display: none; }
.operation-progress-dismiss { min-width: 2.75rem; min-height: 2.75rem; border: 0; border-radius: 0.5rem; background: transparent; color: inherit; cursor: pointer; font-size: 1.25rem; }
.operation-progress-dismiss:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.operation-progress-compact { padding: 0.65rem 1rem; }
#page-progress { position: fixed; z-index: 35; top: 4.1rem; right: 1rem; width: min(30rem, calc(100vw - 2rem)); box-shadow: 0 0.35rem 1.5rem rgb(0 0 0 / 12%); pointer-events: none; }
#page-progress .operation-progress-dismiss { pointer-events: auto; }
.operation-progress-announcer { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
@keyframes operation-progress-flow { from { background-position: 120% 0; } to { background-position: -120% 0; } }
@media (max-width: 480px) {
  .operation-progress-heading { flex-wrap: wrap; gap: 0.25rem 0.65rem; }
  .operation-progress-heading strong { flex-basis: 65%; }
  #page-progress { right: 0.5rem; width: calc(100vw - 1rem); }
}
@media (prefers-reduced-motion: reduce) {
  .operation-progress-track:indeterminate { animation: none; background-position: 50% 0; }
  .operation-progress-track:indeterminate::-webkit-progress-bar { animation: none; background-position: 50% 0; }
  .operation-progress-track::-webkit-progress-value { transition: none; }
}
