.ffr{--s0:var(--c2);--s1:var(--c1);--s2:var(--c3);--s3:var(--c4);--lane-h:34px;--hdr-h:38px;background:var(--paper);border:1px solid var(--line);color:var(--body);border-radius:14px;margin:20px 0;padding:12px;font-size:13px;line-height:1.45}.ffr:focus{outline:none}.ffr:focus-visible{outline:2px solid var(--focus)}.ffr code,.ffr pre{font-family:var(--f-mono)}.ffr-top{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:8px;display:flex}.ffr-field{color:var(--muted);align-items:center;gap:6px;display:flex}.ffr-field>span:first-child{font-family:var(--f-mono);font-size:12px}.ffr-select{font:inherit;color:var(--ink);background:var(--raised);border:1px solid var(--line);border-radius:8px;max-width:100%;padding:4px 8px}.ffr-seg{border:1px solid var(--line);border-radius:8px;flex-wrap:wrap;display:inline-flex;overflow:hidden}.ffr-seg button{font:inherit;color:var(--ink);background:var(--raised);border:0;border-right:1px solid var(--line);cursor:pointer;padding:4px 10px}.ffr-seg button:last-child{border-right:0}.ffr-seg button[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.ffr-ctrl{border-top:1px solid var(--line-soft);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 0;display:flex}.ffr-btn{font:inherit;color:var(--ink);background:var(--raised);border:1px solid var(--line);cursor:pointer;border-radius:8px;min-width:36px;padding:4px 10px;font-weight:500}.ffr-btn:hover,.ffr-seg button:hover{border-color:var(--accent)}.ffr-scrub{min-width:120px;accent-color:var(--accent);flex:160px}.ffr-caption{min-height:2.9em;color:var(--ink);align-items:baseline;gap:8px;margin:0 0 4px;display:flex}.ffr-count{font-family:var(--f-mono);color:var(--muted);flex:none;font-size:11px}.ffr-dot{background:var(--s0);border-radius:50%;flex:none;align-self:center;width:9px;height:9px}.ffr-dot.s1,.ffr-row.s1,.ffr-lab.s1{--sc:var(--s1)}.ffr-dot.s1{background:var(--s1)}.ffr-dot.s2{background:var(--s2)}.ffr-dot.s3{background:var(--s3)}.ffr-note{color:var(--muted);margin:0 0 8px;font-size:12px}.ffr-note:empty{display:none}.ffr-note.err{color:var(--alert)}.ffr-tlwrap{padding-bottom:4px;overflow-x:auto}.ffr-tl{align-items:stretch;gap:0;min-width:640px;display:flex}.ffr-labels{flex-direction:column;flex:none;width:64px;display:flex}.ffr-hdr{height:var(--hdr-h);flex-direction:column;justify-content:flex-end;padding:0 4px 3px;display:flex;overflow:hidden}.ffr-lab{height:var(--lane-h);font-family:var(--f-mono);color:var(--muted);border-left:3px solid var(--s0);align-items:center;margin-bottom:3px;padding-left:6px;font-size:11px;display:flex}.ffr-lab.s1{border-color:var(--s1)}.ffr-lab.s2{border-color:var(--s2)}.ffr-lab.s3{border-color:var(--s3)}.ffr-run{border-radius:8px;flex-direction:column;flex:1 1 0;min-width:84px;transition:opacity .15s;display:flex}.ffr-run.todo{opacity:.55}.ffr-run.cur{background:color-mix(in srgb, var(--accent) 7%, transparent)}.ffr-run.internal{min-width:70px;flex-grow:.6!important}.ffr-phase{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.ffr-kind{font-family:var(--f-mono);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.ffr-run.k-multi .ffr-kind{color:var(--good)}.ffr-run.k-immediate .ffr-kind{color:var(--warn)}.ffr-lanes{flex-direction:column;display:flex}.ffr-lane{height:var(--lane-h);align-items:stretch;gap:2px;margin-bottom:3px;padding:0 2px;display:flex}.ffr-blk{font:inherit;border:1px solid var(--line);border-left:3px solid var(--s0);background:var(--raised);min-width:40px;color:var(--ink);cursor:pointer;text-align:left;border-radius:6px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:flex-start;gap:1px;padding:1px 5px;display:flex;overflow:hidden}.ffr-lane.s1 .ffr-blk{border-left-color:var(--s1)}.ffr-lane.s2 .ffr-blk{border-left-color:var(--s2)}.ffr-lane.s3 .ffr-blk{border-left-color:var(--s3)}.ffr-blk.todo{opacity:.5}.ffr-blk.now{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ffr-blk.sel{outline:2px solid var(--accent)}.ffr-blk.internal{background:0 0;border-style:dashed}.ffr-bname{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11.5px;font-weight:500;overflow:hidden}.ffr-rows,.ffr-slices{font-family:var(--f-mono);color:var(--muted);white-space:nowrap;max-width:100%;font-size:9.5px;overflow:hidden}.ffr-slice{margin-right:4px}.ffr-slice.done{color:var(--ink)}.ffr-idle{text-align:center;color:var(--muted);opacity:.6;border-top:1px dashed var(--line);flex:1;align-self:center;font-size:10px}.ffr-wait{background:repeating-linear-gradient(180deg, var(--line) 0 3px, transparent 3px 6px);border-radius:2px;flex:none;width:4px}.ffr-wait.done{background:var(--muted)}.ffr-sync{font:inherit;width:26px;margin:calc(var(--hdr-h) - 2px) 3px 3px;border:1px solid var(--line);background:repeating-linear-gradient(90deg, var(--line-soft) 0 2px, transparent 2px 6px);color:var(--muted);cursor:pointer;border-radius:6px;flex-direction:column;flex:none;justify-content:center;align-items:center;gap:2px;padding:2px 0;display:flex}.ffr-sync.busy{border-color:var(--warn);width:34px;color:var(--ink)}.ffr-sync.now{box-shadow:0 0 0 2px var(--accent)}.ffr-sync.sel{outline:2px solid var(--accent)}.ffr-sync.todo{opacity:.55}.ffr-synct{writing-mode:vertical-rl;letter-spacing:.04em;font-size:10px}.ffr-syncn{font-family:var(--f-mono);font-size:11px;font-weight:600}.ffr-rebuilt{color:var(--accent);font-size:13px}.ffr-detail{background:var(--raised);border:1px solid var(--line-soft);border-radius:10px;min-height:80px;margin-top:10px;padding:10px 12px}.ffr-detail h4,.ffr-panel h4{color:var(--ink);font-size:13px;font-family:var(--f-body);margin:0 0 6px}.ffr-sub{color:var(--muted);margin:6px 0 4px;font-size:12px}.ffr-hint{color:var(--muted);margin:0}.ffr-tag{font-family:var(--f-mono);color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:0 5px;font-size:10.5px;font-weight:400}.ffr-why{margin:0;padding-left:18px}.ffr-why li{margin:3px 0}.ffr-rb{color:var(--accent);margin:6px 0}.ffr-rowsl{margin:0;padding-left:18px;font-size:12px}.ffr-tree,.ffr-tree ul{margin:0;padding-left:0;list-style:none}.ffr-tree ul{border-left:1px solid var(--line);margin-left:4px;padding-left:14px}.ffr-n{margin:1px 0;font-size:12px}.ffr-n>.ffr-ntext{border-radius:4px;padding:0 4px}.ffr-n.todo>.ffr-ntext{opacity:.45}.ffr-n.now>.ffr-ntext{background:var(--accent);color:var(--on-accent)}.ffr-n.k-stage>.ffr-ntext,.ffr-n.k-cmd>.ffr-ntext{color:var(--ink);font-weight:500}.ffr-n.k-flush>.ffr-ntext,.ffr-n.k-caches>.ffr-ntext,.ffr-n.internal>.ffr-ntext{color:var(--muted);font-style:italic}.ffr-n.k-hook>.ffr-ntext:before{content:"hook ";display:none}.ffr-n.k-observer>.ffr-ntext{color:var(--good)}.ffr-n.k-hook>.ffr-ntext{color:var(--c5)}.ffr-n.warn>.ffr-ntext{color:var(--alert)}.ffr-n.now>.ffr-ntext{color:var(--on-accent)}.ffr-toggles{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:8px;display:flex}.ffr-check{cursor:pointer;align-items:center;gap:5px;display:inline-flex}.ffr-pre{background:var(--bg);border:1px solid var(--line-soft);white-space:pre;color:var(--body);border-radius:8px;margin:8px 0 0;padding:8px 10px;font-size:12px;overflow-x:auto}.ffr-pre.small{font-size:11.5px}.ffr-panels{grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:10px;margin-top:10px;display:grid}.ffr-panel{border:1px solid var(--line-soft);border-radius:10px;min-width:0;padding:8px 10px}.ffr-table{margin-bottom:8px}.ffr-ttype{font-family:var(--f-mono);color:var(--ink);overflow-wrap:anywhere;font-size:11px}.ffr-ruler{color:var(--muted)}.ffr-trows{flex-wrap:wrap;gap:3px;margin-top:3px;display:flex}.ffr-row{font-family:var(--f-mono);border:1px solid var(--line);color:var(--body);border-radius:4px;padding:1px 5px;font-size:10.5px}.ffr-row.s0{border-color:var(--s0);background:color-mix(in srgb, var(--s0) 18%, transparent)}.ffr-row.s1{border-color:var(--s1);background:color-mix(in srgb, var(--s1) 18%, transparent)}.ffr-row.s2{border-color:var(--s2);background:color-mix(in srgb, var(--s2) 18%, transparent)}.ffr-row.s3{border-color:var(--s3);background:color-mix(in srgb, var(--s3) 18%, transparent)}.ffr-queues{flex-wrap:wrap;gap:6px;display:flex}.ffr-q{border-top:3px solid var(--s0);flex:90px;min-width:0;padding-top:3px}.ffr-q.s1{border-color:var(--s1)}.ffr-q.s2{border-color:var(--s2)}.ffr-q.s3{border-color:var(--s3)}.ffr-qh{font-family:var(--f-mono);color:var(--muted);margin-bottom:2px;font-size:11px}.ffr-qi{overflow-wrap:anywhere;font-size:11.5px}.ffr-qi.empty{color:var(--muted)}.ffr-q.draining .ffr-qi{color:var(--warn)}.ffr-q.gone .ffr-qi{opacity:.5;text-decoration:line-through}.ffr-codebox{margin-top:10px}.ffr-codebox summary{cursor:pointer;color:var(--muted)}.ffr-steps{margin-left:auto}@media (width<=640px){.ffr{--lane-h:auto;padding:10px 8px}.ffr-steps{margin-left:0}.ffr-tlwrap{overflow-x:visible}.ffr-tl{flex-direction:column;min-width:0}.ffr-labels{background:var(--paper);z-index:1;flex-direction:row;width:auto;padding-left:0;position:sticky;top:0}.ffr-labels .ffr-hdr{display:none}.ffr-lab{flex:1;height:auto;margin:0 2px 4px;padding:2px 0 2px 4px}.ffr-run{min-width:0;padding:2px 0;flex:none!important}.ffr-run.internal{min-width:0}.ffr-hdr{flex-direction:row;justify-content:flex-start;gap:8px;height:auto;padding:2px 4px}.ffr-lanes{flex-direction:row}.ffr-lane{flex-direction:column;flex:1 1 0;min-width:0;height:auto;margin:0}.ffr-blk{flex:none;min-width:0;min-height:30px}.ffr-idle{border-top:0;border-left:1px dashed var(--line);align-self:center;width:0;min-height:14px;font-size:0}.ffr-wait{background:repeating-linear-gradient(90deg, var(--line) 0 3px, transparent 3px 6px);width:auto;height:4px}.ffr-sync{background:repeating-linear-gradient(0deg, var(--line-soft) 0 2px, transparent 2px 6px);flex-direction:row;gap:8px;height:22px;margin:3px 2px;width:auto!important}.ffr-synct{writing-mode:horizontal-tb}.ffr-panels{grid-template-columns:minmax(0,1fr)}.ffr-scrub{flex-basis:100%}}
