/* Cayvoy shared page, media and upload progress. No shimmer, wave or spinner states. */
#cv-page-progress{position:fixed;inset:0 0 auto 0;z-index:2147483000;height:3px;opacity:0;pointer-events:none;transition:opacity .18s ease}
#cv-page-progress.is-active{opacity:1}
#cv-page-progress>span{display:block;width:0;height:100%;border-radius:0 99px 99px 0;background:#b9ff66;box-shadow:0 0 10px rgba(185,255,102,.42);transition:width .22s ease}
.cv-upload-progress{grid-column:1/-1;display:grid;gap:6px;width:100%;margin:2px 0;padding:10px 12px;border:1px solid rgba(185,255,102,.18);border-radius:12px;background:rgba(185,255,102,.045);color:var(--ds-text,#eee);font:600 11px/1.4 system-ui,sans-serif}
.cv-upload-progress[hidden]{display:none}
.cv-upload-progress__meta{display:flex;justify-content:space-between;gap:12px;min-width:0}
.cv-upload-progress__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cv-upload-progress__value{flex:0 0 auto;color:#b9ff66;font-variant-numeric:tabular-nums}
.cv-upload-progress__track{display:block;width:100%;height:4px;overflow:hidden;border-radius:99px;background:rgba(255,255,255,.1)}
.cv-media-progress{height:4px;overflow:hidden;border-radius:99px;background:rgba(255,255,255,.1)}
.cv-upload-progress__fill,.cv-media-progress>span{display:block;width:0;height:100%;border-radius:inherit;background:#b9ff66;transition:width .12s linear}
.cv-upload-progress.is-indeterminate .cv-upload-progress__fill,.cv-media-progress.is-indeterminate>span{width:34%;animation:cv-progress-travel 1.15s ease-in-out infinite alternate}
.cv-upload-progress.is-error{border-color:rgba(248,113,113,.35);background:rgba(248,113,113,.06);color:#fecaca}
.cv-upload-progress.is-error .cv-upload-progress__fill{width:100%;background:#f87171}
.cv-media-frame--anchor{position:relative}
.cv-media-progress{position:absolute;z-index:4;right:8px;bottom:8px;left:8px;height:3px;opacity:0;transition:opacity .18s ease}
.cv-media-frame.cv-media-is-loading .cv-media-progress{opacity:1}
.cv-media-frame.cv-media-has-error .cv-media-progress{opacity:1;background:rgba(255,255,255,.2)}
.cv-media-frame.cv-media-has-error .cv-media-progress>span{width:100%;background:#f87171;animation:none}
.cv-media-frame.cv-media-is-loading .cv-media-progress>span{width:34%;animation:cv-progress-travel 1.15s ease-in-out infinite alternate}
@keyframes cv-progress-travel{from{transform:translateX(-8%)}to{transform:translateX(205%)}}
.cv-upload-progress :focus-visible{outline:2px solid #b9ff66;outline-offset:2px}
@media(max-width:640px){#cv-page-progress{height:2px}.cv-upload-progress{padding:9px 10px}.cv-media-progress{right:5px;bottom:5px;left:5px}}
@media(prefers-reduced-motion:reduce){#cv-page-progress,#cv-page-progress>span,.cv-upload-progress__fill,.cv-media-progress,.cv-media-progress>span{transition:none;animation:none!important}.cv-upload-progress.is-indeterminate .cv-upload-progress__fill,.cv-media-progress.is-indeterminate>span{width:45%;transform:none}}

/* Convert legacy request spinners to the shared progress-only treatment. */
.cv-request-progress{position:relative;display:inline-block;flex:0 0 auto;width:40px;height:4px;overflow:hidden;border-radius:99px;background:rgba(255,255,255,.14);vertical-align:middle}
.cv-request-progress>span{display:block;width:34%;height:100%;border-radius:inherit;background:#b9ff66;animation:cv-progress-travel 1.15s ease-in-out infinite alternate}
.cv-request-progress--block{display:block;width:min(180px,100%);height:4px;margin:10px auto}
@media(prefers-reduced-motion:reduce){.cv-request-progress>span{width:45%;animation:none}}
