/* planflow-files.css — round 21 track F — the Files tab, live uploads.
   Owned by that track alone; loaded after planflow-inspector.css.
   The zone (.wf-upload), the list (.wf-filelist) and the row (.wf-file) are
   the prototype's; this file adds only what a real upload needs: the real
   file input inside the zone, the drag-over state, the per-file progress
   row, the failed row, the Remove button, the type-tinted icons. */

/* the real input lives in the zone: focusable by script, never painted */
.pfi-root .wf-upload{position:relative}
.pfi-root .wf-upload__in{position:absolute;left:0;top:0;width:1px;height:1px;margin:0;padding:0;border:0;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}
.pfi-root .wf-upload:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.pfi-root .wf-upload.is-dragover{background:rgba(92,154,126,.16);border-color:var(--accent);border-style:solid;color:var(--text)}
.pfi-root .wf-upload.is-dragover .wf-upload__ico{background:rgba(92,154,126,.22)}
.pfi-root .wf-insp.is-run-locked .wf-upload{opacity:.55;cursor:not-allowed}

/* a row: name · size · Remove */
.pfi-root .wf-file{position:relative}
.pfi-root .wf-file__ico--image{color:var(--accent)}
.pfi-root .wf-file__ico--doc{color:var(--label)}
.pfi-root .wf-file__rm{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin:-3px -3px -3px 0;padding:0;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;line-height:0;opacity:.75;transition:background .12s,color .12s,opacity .12s}
.pfi-root .wf-file__rm svg{width:13px;height:13px;display:block}
.pfi-root .wf-file__rm:hover{background:rgba(176,71,58,.10);color:#B0473A;opacity:1}
.pfi-root .wf-file__rm:focus-visible{outline:2px solid var(--accent);outline-offset:1px;opacity:1}
.pfi-root .wf-insp.is-run-locked .wf-file__rm{opacity:.35;cursor:not-allowed}

/* an upload in flight: dashed row, its own bar under the name */
.pfi-root .wf-file.is-uploading{flex-wrap:wrap;border-style:dashed;border-color:var(--accent-line)}
.pfi-root .wf-file.is-uploading .wf-file__ico{color:var(--accent)}
.pfi-root .wf-file.is-uploading .wf-file__sz{color:var(--accent);font-variant-numeric:tabular-nums;min-width:34px;text-align:right}
.pfi-root .wf-file__bar{flex-basis:100%;height:3px;margin-top:4px;border-radius:999px;background:rgba(70,92,80,.12);overflow:hidden}
.pfi-root .wf-file__bar>span{display:block;height:100%;width:0;border-radius:999px;background:var(--accent);transition:width .16s linear}

/* a failed upload: the reason under the name, in the row's own words */
.pfi-root .wf-file.is-failed{border-style:solid;border-color:rgba(176,71,58,.35);background:rgba(176,71,58,.05)}
.pfi-root .wf-file.is-failed .wf-file__ico,.pfi-root .wf-file.is-failed .wf-file__sz{color:#B0473A}
.pfi-root .wf-file__err{flex-basis:100%;font-size:11.5px;line-height:1.45;color:#B0473A;margin-top:2px}
