.progress-ring{flex-shrink:0;display:block}.progress-ring__track{stroke:var(--border-secondary)}.progress-ring__arc{stroke:var(--accent-primary);transform-box:fill-box;transform-origin:50%;transition:stroke-dashoffset var(--dur-300) var(--ease-primary);transform:rotate(-90deg)}.progress-ring--indeterminate{animation:.8s linear infinite progress-ring-spin}@keyframes progress-ring-spin{to{transform:rotate(360deg)}}.progress-ring--busy .progress-ring__arc{animation:1.2s ease-in-out infinite alternate progress-ring-pulse}@keyframes progress-ring-pulse{to{opacity:.45}}@media (prefers-reduced-motion:reduce){.progress-ring--indeterminate,.progress-ring--busy .progress-ring__arc{animation:none}.progress-ring__arc{transition:none}}
.upload-tray{z-index:1500;border-radius:var(--radius-12);background:var(--bg-modal);border:1px solid var(--border-tertiary);width:320px;box-shadow:var(--shadow-12dp);animation:tray-enter var(--dur-250) var(--ease-out) both;position:fixed;bottom:24px;right:24px;overflow:hidden}@keyframes tray-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.upload-tray__header{background:var(--bg-card);border-bottom:1px solid var(--border-container);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:12px 14px;display:flex}.upload-tray__title{min-width:0;font-size:var(--t-body-size);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-weight:600;overflow:hidden}.upload-tray__eta-row{background:var(--bg-popover);border-bottom:1px solid var(--border-container);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:2px 14px;display:flex}.upload-tray__eta-text{min-width:0;font-size:var(--t-body-sm-size);color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:auto;overflow:hidden}.upload-tray__eta-cancel{cursor:pointer;font-size:var(--t-body-sm-size);color:var(--text-secondary);border-radius:var(--radius-4);transition:color var(--dur-150), background var(--dur-150);background:0 0;border:none;flex-shrink:0;margin-right:-8px;padding:2px 8px;font-weight:500}.upload-tray__eta-cancel:hover{color:var(--text-primary);background:var(--bg-hover)}.upload-tray__icon-btn{width:24px;height:24px;color:var(--text-tertiary);border-radius:var(--radius-4);cursor:pointer;transition:color var(--dur-150), background var(--dur-150);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.upload-tray__icon-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.upload-tray__icon-btn svg{width:14px;height:14px}.upload-tray__list{transition:grid-template-rows var(--dur-250) var(--ease-in-out);grid-template-rows:1fr;display:grid}.upload-tray__list--collapsed{grid-template-rows:0fr}.upload-tray__list-clip{min-height:0;overflow:hidden}.upload-tray__list-scroll{max-height:320px;animation:tray-scroll-expand var(--dur-250);overflow-y:auto}.upload-tray__list--collapsed .upload-tray__list-scroll{animation-name:tray-scroll-collapse;overflow-y:hidden}@keyframes tray-scroll-expand{0%,to{overflow-y:hidden}}@keyframes tray-scroll-collapse{0%,to{overflow-y:hidden}}@media (prefers-reduced-motion:reduce){.upload-tray__list{transition:none}.upload-tray__list-scroll{animation:none}}.upload-tray__file{border-bottom:1px solid var(--border-container);grid-template-columns:1fr 20px;align-items:center;gap:8px;padding:8px 14px;display:grid}.upload-tray__file:last-child{border-bottom:0}.upload-tray__file--openable{cursor:pointer}.upload-tray__file--openable:hover{background:var(--bg-hover)}.upload-tray__file--openable:focus-visible{background:var(--bg-hover);outline:2px solid var(--border-focused);outline-offset:-2px}.upload-tray__name-cell{align-items:center;gap:8px;min-width:0;display:flex}.upload-tray__name-cell--pending{opacity:.55}.upload-tray__type-icon{width:16px;height:16px;color:var(--text-tertiary);flex-shrink:0}.upload-tray__filename{min-width:0;font-size:var(--t-body-sm-size);color:var(--text-body);white-space:nowrap;text-overflow:ellipsis;line-height:var(--t-body-sm-lh);overflow:hidden}.upload-tray__status{width:20px;height:20px;color:var(--text-tertiary);flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.upload-tray__status--done{color:var(--text-success)}.upload-tray__status--failed{color:var(--text-error)}.upload-tray__status--cancelled{color:var(--text-disabled)}.upload-tray__status svg{width:19.7px;height:19.7px}.upload-tray__status svg.upload-tray__glyph--prohibit{width:19px;height:19px}.upload-tray__glyph{justify-content:center;align-items:center;display:flex}.upload-tray__cancel{cursor:pointer;color:var(--text-tertiary);border-radius:var(--radius-4);transition:color var(--dur-150), background var(--dur-150);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:none;position:absolute;inset:0}.upload-tray__cancel:hover{color:var(--text-primary);background:var(--bg-hover)}.upload-tray__file:hover .upload-tray__status--cancellable .upload-tray__glyph{visibility:hidden}.upload-tray__file:hover .upload-tray__status--cancellable .upload-tray__cancel{display:flex}.upload-tray__retry{cursor:pointer;color:var(--text-tertiary);border-radius:var(--radius-4);transition:color var(--dur-150), background var(--dur-150);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:none;position:absolute;inset:0}.upload-tray__retry:hover{color:var(--text-primary);background:var(--bg-hover)}.upload-tray__status .upload-tray__retry svg{width:16px;height:16px}.upload-tray__file:hover .upload-tray__status--retryable .upload-tray__glyph{visibility:hidden}.upload-tray__file:hover .upload-tray__status--retryable .upload-tray__retry{display:flex}.upload-tray__group-row{grid-template-columns:1fr auto 20px}.upload-tray__group-count{font-size:var(--t-body-sm-size);color:var(--text-tertiary);white-space:nowrap}
.transfer-trays{z-index:1500;pointer-events:none;flex-direction:column;gap:8px;width:min(320px,100vw - 32px);max-height:calc(100dvh - 48px);display:flex;position:fixed;bottom:24px;right:24px}.transfer-trays>.upload-tray{pointer-events:auto;flex-direction:column;flex:none;width:100%;min-height:0;max-height:calc(100dvh - 48px);display:flex;position:static}.transfer-trays:has(>.upload-tray+.upload-tray)>.upload-tray{max-height:calc(50dvh - 28px)}.transfer-trays .upload-tray__header,.transfer-trays .upload-tray__eta-row{flex-shrink:0}.transfer-trays .upload-tray__list{min-height:0}.transfer-trays .upload-tray__list-clip{flex-direction:column;display:flex}.transfer-trays .upload-tray__list-scroll{min-height:0}.transfer-trays>.upload-tray:not(:last-child){clip-path:inset(-48px -48px 0)}.transfer-trays>.upload-tray:not(:first-child){clip-path:inset(0 -48px -48px)}.download-tray__row .upload-tray__cancel{opacity:0;display:flex}.download-tray__row:hover .upload-tray__cancel,.download-tray__row:focus-within .upload-tray__cancel{opacity:1}.download-tray__row:focus-within .upload-tray__glyph{visibility:hidden}.download-tray .upload-tray__cancel:focus-visible,.download-tray .upload-tray__icon-btn:focus-visible{outline:2px solid var(--border-focused);outline-offset:2px}@media (hover:none){.download-tray__row{grid-template-columns:1fr auto 44px}.download-tray__row .upload-tray__status{gap:4px;width:44px}.download-tray__row .upload-tray__cancel{opacity:1;width:20px;height:20px;position:static}.download-tray__row .upload-tray__glyph{visibility:visible}}