/* ============================================================
   inspector.css — right-side drawer panels, built to mirror the LEFT
   NAV's actual chrome: an OUTSIDE hover side-stack (copied from
   .wf-side / .wf-help), drag, pin, collapse, the nav's popover for
   dropdowns (.wf-pop), and the nav's token set verbatim. Multiple
   panels can be pinned to compare.
   ============================================================ */

/* ---- TOKENS (verbatim from the nav) ---- */
.pfi-root .wf-insp,.wf-modal.pfi-root,.wf-guide.pfi-root,.wf-cw.pfi-root,.wf-ss.pfi-root,.wf-toast.pfi-root,.wf-pop.pfi-root,.wf-pw.pfi-root,.pfi-root .wf-group,.wf-sd.pfi-root{
  --surface:rgba(255,255,255,.56);
  --sticky-bg:#F2F3F2;
  --border:rgba(255,255,255,.70);
  --divider:rgba(70,92,80,.16);
  --label:#41584C;
  --label-hover:#27543C;
  --header-hover:rgba(56,120,90,.09);
  --text:#1F2D26;
  --icon:#3C5247;
  --icon-hover:#2F6B4D;
  --muted:#6E8077;
  --row-hover:rgba(60,74,67,.06);
  --active-bg:rgba(255,255,255,.40);
  --active-text:#235446;
  --accent:#5C9A7E;
  --accent-line:rgba(92,154,126,.45);
  --dot-green:#4FA37C;
  --field-bg:rgba(255,255,255,.34);
  --well-bg:rgba(56,70,63,.04);                 /* carved well: faint cool recess tint (lighter than before) */
  --well-line:rgba(70,92,80,.085);              /* light hairline rim */
  --well-shadow:inset 0 2px 5px rgba(38,52,45,.13),inset 0 -1px 0 rgba(255,255,255,.5);  /* soft offset inner shadow = volume + bottom highlight */
  --field-bg-focus:rgba(255,255,255,.62);
  --field-bd-focus:rgba(255,255,255,.95);
  --focus-ring:rgba(60,120,92,.45);
  --track-off:rgba(90,112,100,.34);
  --cta:#1F6E45; --cta-hover:#155832; --danger:#B85450;
  --scroll-thumb:rgba(90,112,100,.30);
  --pop-bg:#FBFCFA;
  --blur:blur(20px) saturate(180%) brightness(1.03);
  --shadow:inset 0 1px 0 rgba(255,255,255,.6), 0 10px 30px rgba(55,72,64,.14);
  --radius:9px; --radius-lg:16px;
  --ease:cubic-bezier(.32,.72,0,1); --dur:.24s; --dur-rev:.42s;
  --ease-bar:var(--aw-chrome-ease, cubic-bezier(.4,0,.2,1));   /* size-morph curve — matches the header bar; --ease is too decelerating for a large size change */
  /* N4 — TYPE FAMILY. The prototype hardcodes the system sans stack
     (inspector.css, its own page had no brand face). AirWanderer's own
     chrome — the left nav this panel was built to mirror — renders in
     the app face declared on <body> (components.css:15) and every nav
     rule just says font:inherit. Measured: nav 'EB Garamond', Georgia,
     serif vs inspector -apple-system/Segoe UI, at IDENTICAL sizes
     (nav section title 11/500/.77px == inspector .wf-sec__h 11/600/
     .77px; nav item 13/400 == .wf-toggle__tx 13/500; nav help
     12/400/.12px == .wf-ichip__tx 12/400/.12px). So the mismatch is
     the FAMILY alone, and the app owns it. Sizes / weights / tracking
     / line-heights stay the prototype's — that hierarchy is
     deliberate and already agrees with the app's scale.
     One token, used at every site that cannot inherit (the panel root
     plus the popover, toast, modal, chat, planning and step windows,
     which mount on <body>, and .wf-env__modlbl, which must escape its
     monospace parent). Monospace roles (keys, refs, run versions,
     badge monograms) are content-typographic and keep ui-monospace. */
  --pfi-family:'EB Garamond', Georgia, serif;
}
#wfInsp.pfi-root{position:static}
/* ROUND 13 (owner round 11, item 8: "when I navigate to pages, I still see
   the details of AI block at the top right corner"): the panels and their
   collapsed dock belong to the canvas. The router flips body.route-page for
   every non-workflow route (router.js handleHashChange); the mount keeps its
   panels and their state and is simply not painted there — back on the
   workflow route the same panels return. Popovers, toasts, modals and chat
   windows mount on <body> and are not covered: a pause modal may matter on
   any page. */
body.route-page #wfInsp{display:none}

/* ---- PANEL ---- */
.pfi-root .wf-insp,.pfi-root .wf-insp *{box-sizing:border-box}
.pfi-root .wf-insp{
  position:fixed;width:320px;
  padding:11px 11px 13px;
  font-family:var(--pfi-family);
  color:var(--text);user-select:none;
  --notch:40px;                         /* size of the carved top-left corner */
  display:flex;flex-direction:column;max-height:calc(100vh - 48px);
  transition:transform var(--dur) var(--ease),padding var(--dur) var(--ease);  /* width is NOT eased: it must change instantly so the layout (narrow/icons) is measured against the real width on reset */
  animation:wf-insp-in .55s var(--ease) backwards;
}
/* TWO surface layers so the notch gap stays frosted instead of exposing raw
   background behind the badge:
     ::before — blur + shadow over the FULL rounded rect (frosts everything
                behind the panel, including the empty notch gap and the badge)
     ::after  — the surface tint + border; the notch is carved from THIS layer,
                so the gap loses the tint (reads as open) but keeps the blur */
.pfi-root .wf-insp::before{
  content:"";position:absolute;inset:0;z-index:-2;
  border-radius:var(--radius-lg);
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  box-shadow:var(--shadow);
  transition:box-shadow var(--dur) var(--ease);
}
.pfi-root .wf-insp::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background-color:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius-lg);
}
/* rounded-square notch carved from the tint layer (shape matches the badge) */
.pfi-root .wf-insp.is-notched::after{
  -webkit-mask:url(#wf-insp-notch);
  mask:url(#wf-insp-notch);
}
/* the type badge, nested into the notch and flush to the top edge */
.pfi-root .wf-insp__corner{position:absolute;top:7px;left:6px;width:44px;height:44px;z-index:2;display:flex;align-items:center;justify-content:center;cursor:grab;transition:top var(--aw-chrome-dur, .34s) var(--ease-bar),left var(--aw-chrome-dur, .34s) var(--ease-bar)}
.pfi-root .wf-insp__corner:active{cursor:grabbing}
.pfi-root .wf-insp.is-dragging .wf-insp__corner{cursor:grabbing}
.pfi-root .wf-insp__corner svg{width:44px;height:44px;display:block;pointer-events:none}
/* ENTRY: the box only TRANSLATES in. Animating opacity on .wf-insp ramps the
   whole layer — including the ::before backdrop blur — and that opacity ramp
   is what made the frosted notch area behind the badge flicker on open.
   Transform is composited cleanly over backdrop-filter, so the box slides in
   at full presence while the TINT (::after) and the CONTENT fade in on their
   own, gated to a one-shot .is-entering so re-renders never replay it. */
@keyframes wf-insp-in{from{transform:translateY(9px) scale(.984)}to{transform:none}}
@keyframes wf-insp-content-in{from{opacity:0}to{opacity:1}}
.pfi-root .wf-insp.is-entering::after{animation:wf-insp-content-in .3s var(--ease) backwards}
.pfi-root .wf-insp.is-entering > *{animation:wf-insp-content-in .42s var(--ease) .08s backwards}
@keyframes wf-insp-pop{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.pfi-root .wf-insp.is-dragging{transition:none;will-change:left,top}
.pfi-root .wf-insp.is-pinned::before{box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 10px 30px rgba(55,72,64,.18)}
/* the panel's own intro (wf-insp-in) plays once on open; the body is NOT
   separately animated, so re-renders (pin, tab switch, resize) don't re-slide. */

/* ============================================================
   OUTSIDE HOVER SIDE-STACK — copied from the nav's .wf-side/.wf-help.
   The nav docks LEFT with its stack at left:100% (its right edge); a
   right-docked inspector mirrors it to right:100% (its left edge).
   .wf-insp--lstack flips it back to the right when there's no room.
   ============================================================ */
.pfi-root .wf-iside{
  position:absolute;right:100%;top:8px;z-index:7;
  padding-right:6px;                       /* transparent bridge, no dead gap */
  display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.pfi-root .wf-insp.wf-insp--lstack .wf-iside{right:auto;left:100%;padding-right:0;padding-left:6px;align-items:flex-start}
.pfi-root .wf-ichip{opacity:0;transform:translateX(3px);pointer-events:none;
  transition:opacity .26s var(--ease) .05s,transform .26s var(--ease)}
.pfi-root .wf-insp.wf-insp--lstack .wf-ichip{transform:translateX(-3px)}
/* revealed while the panel (or the stack) is hovered/focused — like the nav */
.pfi-root .wf-insp:hover .wf-ichip,.pfi-root .wf-iside:hover .wf-ichip,.pfi-root .wf-iside:focus-within .wf-ichip{
  opacity:1;transform:none;pointer-events:auto;transition-delay:0s}
.pfi-root .wf-insp.is-pinned .wf-ichip--pin{opacity:1;transform:none;pointer-events:auto}
/* the morphing chip box: icon-only, expands to a labelled pill on hover */
.pfi-root .wf-ichip__box{
  display:flex;align-items:center;overflow:hidden;
  background:var(--surface);border:1px solid rgba(255,255,255,.55);
  border-radius:9px;box-shadow:0 2px 9px rgba(55,72,64,.07);
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.pfi-root .wf-ichip__btn{
  display:flex;align-items:center;gap:0;border:0;background:transparent;cursor:pointer;
  color:var(--muted);font:inherit;font-size:12px;letter-spacing:.01em;
  padding:7px;border-radius:9px;white-space:nowrap;
  transition:color .16s,gap .22s var(--ease),padding .22s var(--ease)}
.pfi-root .wf-ichip__ic{display:flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;line-height:0}
.pfi-root .wf-ichip__ic svg{width:16px;height:16px;display:block}
.pfi-root .wf-ichip__tx{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;
  transition:max-width .26s var(--ease),opacity .2s var(--ease) .04s}
.pfi-root .wf-ichip:hover .wf-ichip__btn{color:var(--label-hover);gap:8px;padding:7px 11px 7px 9px}
.pfi-root .wf-ichip:hover .wf-ichip__tx{max-width:120px;opacity:1}
.pfi-root .wf-ichip--drag .wf-ichip__btn{cursor:grab}
.pfi-root .wf-insp.is-dragging .wf-ichip--drag .wf-ichip__btn{cursor:grabbing}
.pfi-root .wf-ichip--pin[data-on="1"] .wf-ichip__btn,.pfi-root .wf-ichip--pin[data-on="1"]:hover .wf-ichip__btn{color:var(--accent)}
.pfi-root .wf-ichip--pin[data-on="1"] .wf-ichip__box{border-color:var(--accent-line)}
.pfi-root .wf-ichip--close:hover .wf-ichip__btn{color:var(--danger)}

/* ---- COLLAPSED → a RAIL (mirror of the nav's .wf-nav.is-rail:
   a 40px glass tile with everything hidden except the expand toggle) ----
   Owner request C4. Measured census of every collapsed chrome chip:
   brand logo 40x40, collapsed top bar 40x40, collapsed canvas tools
   40x40, nav rail 40x42, collapsed zoom cluster 40x40, help tile 40x40
   — and the collapsed inspector alone at 52x52, i.e. +30% per axis and
   +69% in area. The ruling is "the same size as, or smaller than, the
   other collapsed chrome chips", so the tile drops to 40x40 with the
   same 12px radius they wear (it previously reported 0 because the
   rounding was painted by the badge SVG inside).
   The 40 is mirrored by AW_CHIP in planflow-inspector.js, which owns
   the dock geometry — the two must stay in step. */
.pfi-root .wf-insp.is-collapsed{width:40px;height:40px;max-height:none;padding:0;overflow:visible;border-radius:12px}
/* ROUND 33: a docked tile glides to a new slot on the chrome clock (a restack after the dock
   column grew or shrank, a resize) - it used to jump; the morph, a regroup and a drag keep
   their own rules */
.pfi-root .wf-insp.is-collapsed:not(.is-morphing):not(.is-regroup):not(.is-dragging){
  transition:left var(--aw-chrome-dur, .32s) var(--ease-bar),top var(--aw-chrome-dur, .32s) var(--ease-bar),
             transform var(--dur) var(--ease),padding var(--dur) var(--ease)}
.pfi-root .wf-group:not(.is-regroup){
  transition:left var(--aw-chrome-dur, .32s) var(--ease-bar),top var(--aw-chrome-dur, .32s) var(--ease-bar)}
.pfi-root .wf-insp.is-collapsed > :not(.wf-insp__rail){display:none}
/* the badge glyph scales with the tile: 44px was sized for the 52px
   box and would overflow a 40px one */
.pfi-root .wf-insp.is-collapsed .wf-railbtn--badge{width:34px;height:34px;border-radius:10px}
.pfi-root .wf-insp.is-collapsed .wf-railbtn--badge svg{width:34px;height:34px}
/* collapse / expand: a smooth size + position morph that mirrors the header
   bar — the box eases width/height/padding/position on var(--aw-chrome-dur, .34s) var(--ease-bar)
   (the same curve the topbar uses; --ease is too decelerating for a large
   size change), content fades fast and is clipped by overflow:hidden, and the
   block badge (.wf-insp__corner) stays anchored top-left through the whole
   morph so the panel grows out of / shrinks into the badge. Zero snaps. */
.pfi-root .wf-insp.is-morphing{
  transition:width var(--aw-chrome-dur, .34s) var(--ease-bar),height var(--aw-chrome-dur, .34s) var(--ease-bar),
             padding var(--aw-chrome-dur, .34s) var(--ease-bar),left var(--aw-chrome-dur, .34s) var(--ease-bar),top var(--aw-chrome-dur, .34s) var(--ease-bar);
  overflow:hidden}
/* the notch mask can't scale with the shrinking box, and the badge is drifting
   away from the notch corner anyway, so drop just the mask for the ~0.34s morph;
   it returns on land. The blur stays LIVE the whole time — dropping it made it
   snap back on land (a visible pop), so we keep it through the morph. */
.pfi-root .wf-insp.is-morphing::after{-webkit-mask:none;mask:none}
.pfi-root .wf-insp.is-morphing > :not(.wf-insp__corner){transition:opacity .16s var(--ease) .18s}    /* expand: content fades in only once the box is nearly full, so it isn't reflowing while it appears */
.pfi-root .wf-insp.is-expanding > :not(.wf-insp__corner){opacity:0;transition:none}                 /* expand start: content hidden with no flicker */
.pfi-root .wf-insp.is-collapsing > :not(.wf-insp__corner){opacity:0;transition:opacity .13s linear} /* collapse: content fades out fast while the box shrinks empty */
/* corner badge drifts to the tile's centred spot during the morph (collapse → centre;
   expand starts centred, eases back to the notch) so the morph-end swap is seamless */
.pfi-root .wf-insp.is-collapsing .wf-insp__corner{top:4px;left:4px}
.pfi-root .wf-insp.is-expanding .wf-insp__corner{top:4px;left:4px;transition:none}
.pfi-root .wf-insp__rail{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.pfi-root .wf-railbtn{width:38px;height:38px;border:0;background:transparent;color:var(--icon);border-radius:9px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s,transform .12s var(--ease)}
.pfi-root .wf-railbtn svg{width:18px;height:18px;display:block}
.pfi-root .wf-railbtn:hover{background:var(--row-hover);color:var(--label-hover)}
/* tile badge is centred in the tile (balanced). The corner badge animates to
   this same centred spot during the morph, so the morph-end swap is seamless */
.pfi-root .wf-railbtn--badge{width:44px;height:44px;border-radius:13px}
.pfi-root .wf-railbtn--badge svg{width:44px;height:44px}
.pfi-root .wf-railbtn--badge:hover{background:transparent;transform:scale(1.05)}
/* block-name hint shown to the LEFT of the collapsed tile on hover */
.pfi-root .wf-rail__tip{position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%) translateX(5px);
  white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis;
  background:#243029;color:#fff;font-size:12px;font-weight:500;padding:6px 10px;border-radius:8px;
  opacity:0;pointer-events:none;box-shadow:0 6px 18px rgba(40,56,48,.26);
  transition:opacity .15s var(--ease),transform .15s var(--ease)}
.pfi-root .wf-insp.is-collapsed:hover .wf-rail__tip{opacity:1;transform:translateY(-50%) translateX(0)}

/* ---- HEADER (clean editable title + muted type — no icon, no chip) ----
   Move / Pin / Reset also live here as in-header tools that reveal on
   header hover, copied from the nav's .wf-nav__tools / .wf-iconbtn. */
.pfi-root .wf-insp__head{flex:none;display:flex;align-items:flex-start;gap:8px;min-height:56px;padding:6px 2px 11px 64px}
.pfi-root .wf-insp__headmain{flex:1;min-width:0;display:flex;flex-direction:column}
.pfi-root .wf-insp__name{display:block;font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  border-radius:5px;padding:1px 4px;margin:-1px -4px 0;outline:0;transition:box-shadow .14s,background .14s}
.pfi-root .wf-insp__name[contenteditable="true"]:focus{box-shadow:0 0 0 2px var(--accent);background:var(--surface)}
.pfi-root .wf-insp__type{font-size:11px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-weight:500;margin-top:-1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pfi-root .wf-itools{display:flex;align-items:center;gap:2px;flex:none;padding-top:1px}
/* SAME icon button as the left navigation menu (.wf-iconbtn) — the inspector
   does not define its own button look; it reuses the one already implemented. */
.pfi-root .wf-iconbtn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:0;background:transparent;color:var(--muted);border-radius:8px;cursor:pointer;flex:none;transition:background .12s,color .12s}
.pfi-root .wf-iconbtn:hover{background:var(--row-hover);color:var(--label-hover)}
.pfi-root .wf-iconbtn svg{width:18px;height:18px;display:block}
.pfi-root .wf-itool--drag{cursor:grab}
.pfi-root .wf-insp.is-dragging .wf-itool--drag{cursor:grabbing}
.pfi-root .wf-itool--pin[data-on="1"]{color:var(--accent);background:rgba(92,154,126,.16)}
.pfi-root .wf-itool--pin[data-on="1"]:hover{color:var(--accent);background:rgba(92,154,126,.30)}
/* the reset (recenter) tool only appears once the panel has been moved/resized
   away from its default spot — nothing to reset otherwise */
.pfi-root .wf-itool--reset{display:none}
.pfi-root .wf-insp.is-moved .wf-itool--reset{display:flex}

/* ---- RESIZE GRIP — bottom-RIGHT corner, like the nav's .wf-grip.
   Top-left anchored: drag right/down = bigger, drag left/up = smaller
   (drag left past ~300px folds the tabs into a dropdown). Faintly
   visible at rest so it can actually be found. ---- */
.pfi-root .wf-grip{position:absolute;right:-19px;bottom:-19px;width:30px;height:30px;display:flex;align-items:flex-end;justify-content:flex-end;
  padding:6px;border:0;background:transparent;color:var(--icon);cursor:nwse-resize;z-index:6}
.pfi-root .wf-grip__ico{opacity:0;transform:scale(.92);transition:opacity .2s var(--ease),transform .2s var(--ease);line-height:0}
.pfi-root .wf-grip__ico svg{width:15px;height:15px;display:block}
.pfi-root .wf-grip:hover .wf-grip__ico,.pfi-root .wf-insp.is-resizing .wf-grip__ico{opacity:.85;transform:none}
.pfi-root .wf-insp.is-resizing .wf-grip{color:var(--accent)}
.pfi-root .wf-insp.is-resizing,.pfi-root .wf-insp.is-dragging{transition:none}   /* no width/transform easing while sizing → smooth */
.pfi-root .wf-insp.is-collapsed .wf-grip{display:none}

/* ---- DRAWER TABS ---- */
.pfi-root .wf-dtabs{display:flex;align-items:center;gap:2px;flex:none;border-bottom:1px solid var(--divider);margin:0 -2px 2px;padding:0 2px;overflow-x:auto;scrollbar-width:none}
.pfi-root .wf-dtabs::-webkit-scrollbar{height:0;display:none}
.pfi-root .wf-dtab{position:relative;border:0;background:transparent;cursor:pointer;font:inherit;font-size:12px;font-weight:500;color:var(--muted);padding:7px 7px 9px;border-radius:8px 8px 0 0;white-space:nowrap;transition:color .14s,background .12s}
.pfi-root .wf-dtab:hover{color:var(--label-hover);background:var(--row-hover)}
.pfi-root .wf-dtab.is-active{color:var(--active-text)}
.pfi-root .wf-dtab.is-active::after{content:"";position:absolute;left:7px;right:7px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent)}

/* ---- SUB-TABS ---- */
.pfi-root .wf-insp__tabs{display:flex;gap:2px;flex:none;padding:3px;margin:0 0 2px;background:var(--field-bg);border:1px solid var(--border);border-radius:11px;overflow:hidden}
/* equal cells so switching never reflows the row — the active tab shows its
   label, the rest show their icon, and the two cross-fade in place. */
.pfi-root .wf-tab{flex:1 1 0;min-width:0;position:relative;display:flex;align-items:center;justify-content:center;height:30px;border:0;background:transparent;cursor:pointer;font:inherit;font-size:11.5px;font-weight:500;color:var(--muted);padding:0 6px;border-radius:8px;white-space:nowrap;transition:background var(--dur) var(--ease),color .14s}
.pfi-root .wf-tab:hover{color:var(--label-hover)}
.pfi-root .wf-tab.is-active{background:var(--active-bg);color:var(--active-text)}
.pfi-root .wf-tab__tx{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .2s var(--ease)}
.pfi-root .wf-tab__ic{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex:none;line-height:0;opacity:1;transition:opacity .2s var(--ease)}
.pfi-root .wf-tab__ic svg{width:16px;height:16px;display:block}
.pfi-root .wf-tab.is-active .wf-tab__tx{opacity:1}
.pfi-root .wf-tab.is-active .wf-tab__ic{opacity:0}
.pfi-root .wf-tab.is-icononly .wf-tab__tx{opacity:0}
.pfi-root .wf-tab.is-icononly .wf-tab__ic{opacity:1}
/* body cross-fade when the sub-tab changes */
@keyframes wf-subfade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.pfi-root .wf-insp__scroll.is-swap{animation:wf-subfade .26s var(--ease)}

/* ---- SCROLL (thin thumb, nav colours) ---- */
.pfi-root .wf-insp__scroll{overflow-y:auto;overflow-x:hidden;margin:6px -11px 0;padding:2px 11px 4px;flex:1;min-height:0;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}
.pfi-root .wf-insp__scroll::-webkit-scrollbar{width:5px}
.pfi-root .wf-insp__scroll::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}
.pfi-root .wf-insp__scroll::-webkit-scrollbar-track{background:transparent}

/* ---- SECTIONS / FIELDS ---- */
.pfi-root .wf-sec{margin-top:11px;background:var(--well-bg);border:1px solid var(--well-line);border-radius:var(--radius-lg);padding:13px 13px 14px;box-shadow:var(--well-shadow)}
.pfi-root .wf-sec:first-child{margin-top:2px}
.pfi-root .wf-sec__h{display:block;color:var(--label);font-size:11px;letter-spacing:.07em;font-weight:600;text-transform:uppercase;padding:0 0 11px}
.pfi-root .wf-field{margin-bottom:12px}
.pfi-root .wf-field:last-child{margin-bottom:0}
.pfi-root .wf-field > label{display:block;font-size:12px;color:var(--label);margin:0 0 6px;font-weight:500}
.pfi-root .wf-row2{display:flex;gap:9px}
.pfi-root .wf-row2 > *{flex:1;min-width:0}
.pfi-root .wf-hint{font-size:11px;line-height:1.5;color:var(--muted);margin:6px 2px 0;display:block;width:auto;height:auto;opacity:1;pointer-events:auto;overflow:visible}   /* ROUND 39: the nav's .wf-hint ICON rule (width 0, opacity 0) leaked onto this paragraph */
.pfi-root .wf-desc{font-size:12px;line-height:1.55;color:var(--muted);margin:0 2px 12px}
.pfi-root .wf-kbd{font-size:10px;font-weight:600;padding:1px 5px;border-radius:4px;background:var(--row-hover);border:1px solid var(--divider);color:var(--label)}
.pfi-root .wf-input,.pfi-root .wf-textarea{width:100%;font:inherit;font-size:13px;color:var(--text);background:var(--field-bg);border:1px solid var(--border);border-radius:var(--radius);outline:0;transition:border-color .14s ease,background-color .14s ease}
.pfi-root .wf-input{height:35px;padding:0 11px}
.pfi-root .wf-textarea{min-height:104px;padding:9px 11px;line-height:1.5;resize:none;display:block}
.pfi-root .wf-textarea--prompt{min-height:120px}
.pfi-root .wf-input::placeholder,.pfi-root .wf-textarea::placeholder{color:var(--muted)}
.pfi-root .wf-input:focus,.pfi-root .wf-textarea:focus{border-color:var(--field-bd-focus);background:var(--field-bg-focus);box-shadow:0 0 0 3px var(--focus-ring)}
/* PROMPT field merges into its carved well: the recessed well IS the typing
   surface, so the textarea drops its own border/fill (no box-in-a-box) and the
   well itself takes a gentle sage accent while you're typing. */
.pfi-root .wf-sec--field{padding:12px 14px 13px}
.pfi-root .wf-sec--field .wf-textarea--prompt{background:transparent;border:0;box-shadow:none;padding:2px 0 0;min-height:116px;resize:none}
.pfi-root .wf-sec--field .wf-textarea--prompt:focus{background:transparent;border:0;box-shadow:none}
.pfi-root .wf-sec--field .wf-textarea--prompt::placeholder{color:var(--muted)}
.pfi-root .wf-sec--field:focus-within{border-color:var(--accent-line)}

/* ---- CUSTOM SELECT → nav popover ---- */
.pfi-root .wf-csel{position:relative;width:100%}
.pfi-root .wf-csel__btn{display:flex;align-items:center;gap:8px;width:100%;height:35px;padding:0 10px 0 11px;font:inherit;font-size:13px;color:var(--text);background:var(--field-bg);border:1px solid var(--border);border-radius:var(--radius);outline:0;cursor:pointer;text-align:left;transition:border-color .14s ease,background-color .14s ease}
.pfi-root .wf-csel__btn:hover{background:var(--field-bg-focus)}
.pfi-root .wf-csel.is-open .wf-csel__btn,.pfi-root .wf-csel__btn:focus-visible{border-color:var(--field-bd-focus);background:var(--field-bg-focus);box-shadow:0 0 0 3px var(--focus-ring)}
.pfi-root .wf-csel__val{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-csel__chev{flex:none;color:var(--muted);line-height:0;transition:transform var(--dur) var(--ease)}
.pfi-root .wf-csel__chev svg{width:14px;height:14px;display:block}
.pfi-root .wf-csel.is-open .wf-csel__chev{transform:rotate(180deg)}
.pfi-root .wf-csel--sm .wf-csel__btn{height:30px;font-size:12px;padding:0 8px 0 9px}
.wf-pop.pfi-root{
  /* portaled to <body>, so it cannot inherit the panel's tokens — define
     everything here, with an OPAQUE background so nothing shows through. */
  --pop-bg:#FBFCFA; --pop-text:#1F2D26; --pop-row:rgba(60,74,67,.07); --pop-rowtext:#27543C;
  --pop-seltext:#235446; --pop-selbg:rgba(92,154,126,.15); --pop-acc:#5C9A7E; --pop-thumb:rgba(90,112,100,.30);
  position:fixed;z-index:9000;min-width:160px;padding:5px;background:var(--pop-bg);
  font-family:var(--pfi-family);
  border:1px solid rgba(60,74,67,.16);border-radius:12px;
  box-shadow:0 12px 34px rgba(40,56,48,.22),0 0 0 1px rgba(60,74,67,.06);
  max-height:264px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--pop-thumb) transparent;
  animation:wf-pop-in .14s cubic-bezier(.32,.72,0,1)}
@keyframes wf-pop-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.pfi-root .wf-pop__opt{display:flex;align-items:center;gap:9px;width:100%;padding:7px 9px;border:0;background:transparent;color:var(--pop-text);border-radius:8px;cursor:pointer;font:inherit;font-size:13px;text-align:left;transition:background .12s,color .12s}
.pfi-root .wf-pop__opt:hover,.pfi-root .wf-pop__opt.is-cursor{background:var(--pop-row);color:var(--pop-rowtext)}
.pfi-root .wf-pop__opt.is-sel{color:var(--pop-seltext);background:var(--pop-selbg);font-weight:500}
.pfi-root .wf-pop__opt .lb{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-pop__opt .ck{flex:none;color:var(--pop-acc);line-height:0;opacity:0}
.pfi-root .wf-pop__opt .ck svg{width:14px;height:14px;display:block}
.pfi-root .wf-pop__opt.is-sel .ck{opacity:1}
/* rich options (icon + label + description) — used by the Change-type menu */
.wf-pop--rich.pfi-root{padding:6px}
.pfi-root .wf-pop__opt--rich{align-items:flex-start;padding:8px 9px;gap:10px}
.pfi-root .wf-pop__ico{flex:none;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--pop-acc);background:var(--pop-selbg);margin-top:1px}
.pfi-root .wf-pop__ico svg{width:17px;height:17px;display:block}
.pfi-root .wf-pop__opt--rich .lb{display:flex;flex-direction:column;gap:2px;white-space:normal}
.pfi-root .wf-pop__opt--rich .lb b{font-size:13px;font-weight:600;line-height:1.15}
.pfi-root .wf-pop__opt--rich .lb small{font-size:11.5px;color:var(--muted);line-height:1.3}
.pfi-root .wf-pop__opt--rich .ck{align-self:center}
.pfi-root .wf-pop__opt--rich.is-sel .wf-pop__ico{background:var(--pop-acc);color:#fff}

/* ---- toggles / tools / edges / files / exec / env / footer ---- */
.pfi-root .wf-toggle{display:flex;align-items:flex-start;gap:10px;width:calc(100% + 16px);cursor:pointer;padding:8px;margin:0 -8px;border-radius:var(--radius);transition:background .12s}
.pfi-root .wf-toggle__ico{flex:none;width:18px;height:18px;color:var(--icon);line-height:0;margin-top:1px}
.pfi-root .wf-toggle__ico svg{width:18px;height:18px;display:block}
.pfi-root .wf-toggle:hover{background:var(--row-hover)}
.pfi-root .wf-toggle__tx{flex:1;min-width:0;font-size:13px;font-weight:500;color:var(--text);line-height:1.3}
.pfi-root .wf-toggle__tx small{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:2px;line-height:1.4}
.pfi-root .wf-toggle input{position:absolute;opacity:0;width:0;height:0}
.pfi-root .wf-switch{flex:none;align-self:center;position:relative;width:34px;height:20px;border-radius:999px;background:var(--track-off);transition:background var(--dur) var(--ease)}
.pfi-root .wf-switch::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(28,40,32,.28);transition:transform var(--dur) var(--ease)}
.pfi-root .wf-toggle input:checked + .wf-switch{background:var(--accent)}
.pfi-root .wf-toggle input:checked + .wf-switch::after{transform:translateX(14px)}
.pfi-root .wf-toggle input:focus-visible + .wf-switch{box-shadow:0 0 0 3px var(--focus-ring)}
.pfi-root .wf-tool .wf-switch{margin-left:auto}
.pfi-root .wf-cnx{display:flex;flex-direction:column;gap:7px}
.pfi-root .wf-cnx__row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 10px;border-radius:var(--radius);background:var(--well-bg);box-shadow:var(--well-shadow)}
.pfi-root .wf-badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;flex:none}
.pfi-root .wf-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.pfi-root .wf-badge--data{color:#3A7D5C}
.pfi-root .wf-badge--trigger{color:#9A6313}
.pfi-root .wf-cnx__src{flex:1;min-width:60px;text-align:left;border:0;background:transparent;cursor:pointer;font:inherit;font-size:12.5px;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:2px 4px;margin:0 -4px;border-radius:6px;transition:background .12s,color .12s}
.pfi-root .wf-cnx__src:hover{background:var(--row-hover);color:var(--label-hover)}
.pfi-root .wf-cnx__row .wf-csel{flex-basis:100%}
.pfi-root .wf-cnx__del{flex:none;width:26px;height:26px;border:0;background:transparent;color:var(--muted);border-radius:7px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}
.pfi-root .wf-cnx__del:hover{background:rgba(184,84,80,.10);color:var(--danger)}
.pfi-root .wf-cnx__del svg{width:14px;height:14px;display:block}
.pfi-root .wf-upload{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:18px 14px;border:1.5px dashed var(--accent-line);border-radius:12px;background:var(--field-bg);cursor:pointer;color:var(--label);transition:background .14s,border-color .14s}
.pfi-root .wf-upload:hover{background:rgba(92,154,126,.08);border-color:var(--accent)}
.pfi-root .wf-upload__ico{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;color:var(--accent);background:rgba(92,154,126,.12)}
.pfi-root .wf-upload__ico svg{width:18px;height:18px}
.pfi-root .wf-upload__t{font-size:13px;font-weight:500}
.pfi-root .wf-filelist{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.pfi-root .wf-file{display:flex;align-items:center;gap:9px;padding:8px 9px;border:1px solid var(--divider);border-radius:var(--radius);background:var(--field-bg)}
.pfi-root .wf-file__ico{flex:none;color:var(--muted);line-height:0}
.pfi-root .wf-file__ico svg{width:15px;height:15px;display:block}
.pfi-root .wf-file__n{flex:1;min-width:0;font-size:12.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-file__sz{font-size:11px;color:var(--muted);flex:none}
/* ---------- execution: workflow run monitor ---------- */
.pfi-root .wf-exec{display:flex;flex-direction:column;gap:13px}
.pfi-root .wf-exec__top{display:flex;align-items:center;gap:10px}
.pfi-root .wf-exec__sum{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pfi-root .wf-exec__sumt{font-size:13px;font-weight:600;color:var(--text)}
.pfi-root .wf-exec__sumd{font-size:11.5px;color:var(--muted)}
.pfi-root .wf-exec__sumd.is-busy{color:#9A6313}
.pfi-root .wf-exec__flow{display:flex;flex-direction:column;gap:10px}
.pfi-root .wf-exec__node{padding:12px 13px;border:1px solid var(--well-line);border-radius:var(--radius-lg);background:var(--well-bg);box-shadow:var(--well-shadow)}
.pfi-root .wf-exec__node.s-running{border-color:rgba(201,138,43,.28)}
.pfi-root .wf-exec__row{display:flex;align-items:center;gap:10px}
.pfi-root .wf-exec__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pfi-root .wf-exec__name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-exec__type{font-size:11px;color:var(--muted)}
.pfi-root .wf-exec__out{display:flex;align-items:flex-start;gap:8px;margin-top:10px;font-size:12px;line-height:1.5;color:var(--label)}
.pfi-root .wf-exec__outico{flex:none;line-height:0;color:var(--accent);margin-top:1px}.pfi-root .wf-exec__outico svg{width:15px;height:15px;display:block}
.pfi-root .wf-exec__outtx{min-width:0}
.pfi-root .wf-exec__bar{margin-top:11px;height:4px;border-radius:999px;background:rgba(70,92,80,.12);overflow:hidden}
.pfi-root .wf-exec__bar span{display:block;height:100%;width:40%;border-radius:999px;background:var(--accent);animation:wf-exec-bar 1.1s var(--ease) infinite}
@keyframes wf-exec-bar{0%{transform:translateX(-110%)}100%{transform:translateX(320%)}}
.pfi-root .wf-exec__edges{display:flex;flex-direction:column;gap:2px;margin-top:11px;padding-top:11px;border-top:1px solid var(--divider)}
.pfi-root .wf-exec__edgehd{font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;margin-bottom:4px}
.pfi-root .wf-exec__edge{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;background:transparent;cursor:pointer;font:inherit;padding:6px 7px;margin:0 -7px;border-radius:var(--radius);transition:background .12s}
.pfi-root .wf-exec__edge:hover{background:var(--row-hover)}
.pfi-root .wf-exec__edgeic{flex:none;line-height:0;color:var(--muted);opacity:.7}.pfi-root .wf-exec__edgeic svg{width:16px;height:16px;display:block}
.pfi-root .wf-exec__edgetx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--label);font-size:12px;font-weight:500}
.pfi-root .wf-exec__edgego{flex:none;line-height:0;color:var(--muted);opacity:0;transform:translateX(-3px);transition:opacity .12s,transform .12s}
.pfi-root .wf-exec__edge:hover .wf-exec__edgego{opacity:.7;transform:none}
.pfi-root .wf-exec__edgego svg{width:15px;height:15px;display:block;transform:rotate(-90deg)}
/* status as a dot + label (no pill) */
.pfi-root .wf-status{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;flex:none}
.pfi-root .wf-status__dot{flex:none;width:7px;height:7px;border-radius:50%;background:currentColor}
.pfi-root .wf-status.s-idle{color:var(--muted)}
.pfi-root .wf-status.s-completed{color:#2C6A4D}
.pfi-root .wf-status.s-running{color:#9A6313}
.pfi-root .wf-status.s-running .wf-status__dot{animation:wf-blink 1.1s ease-in-out infinite}
.pfi-root .wf-status.s-failed{color:#B0473A}
@keyframes wf-blink{0%,100%{opacity:1}50%{opacity:.3}}
/* number input with a trailing unit (e.g. "sec") */
.pfi-root .wf-unit{position:relative}
.pfi-root .wf-unit .wf-input{width:100%;padding-right:38px}
.pfi-root .wf-unit__s{position:absolute;right:11px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--muted);pointer-events:none}
.pfi-root .wf-unit--lead .wf-input{padding-right:11px;padding-left:23px}
.pfi-root .wf-unit__p{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--muted);pointer-events:none}
/* real output preview */
.pfi-root .wf-out{display:flex;flex-direction:column;gap:10px}
.pfi-root .wf-out__head{display:flex;align-items:center;gap:8px}
.pfi-root .wf-out__meta{font-size:11px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-out__body{font-size:13px;line-height:1.6;color:var(--text);background:var(--well-bg);border:1px solid var(--well-line);border-radius:var(--radius);box-shadow:var(--well-shadow);padding:12px 13px;max-height:300px;overflow:auto}
.pfi-root .wf-out__body p{margin:0 0 9px}
.pfi-root .wf-out__body p:last-child{margin-bottom:0}
.pfi-root .wf-out__media{display:flex;align-items:center;gap:11px;background:var(--well-bg);border:1px solid var(--well-line);border-radius:var(--radius);box-shadow:var(--well-shadow);padding:11px}
.pfi-root .wf-out__thumb{flex:none;width:52px;height:52px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--accent);background:rgba(92,154,126,.12);border:1px solid var(--accent-line)}
.pfi-root .wf-out__thumb svg{width:24px;height:24px;display:block}
.pfi-root .wf-out__minfo{min-width:0;display:flex;flex-direction:column;gap:3px}
.pfi-root .wf-out__mname{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-out__mcap{font-size:12px;line-height:1.5;color:var(--muted)}
/* owner round 15 (2026-10-16): the real artifact in place — the image above
   the media well (click = full size in a new tab), the well's thumb shows
   it, Open / Download under it */
.pfi-root .wf-out__preview{display:block;border:1px solid var(--well-line);border-radius:var(--radius);overflow:hidden;background:var(--well-bg);box-shadow:var(--well-shadow);line-height:0}
.pfi-root .wf-out__preview img{display:block;width:100%;max-height:300px;object-fit:contain;background:#fff}
.pfi-root .wf-out__thumb--img{overflow:hidden;padding:0;background:#fff}
.pfi-root .wf-out__thumb--img img{display:block;width:100%;height:100%;object-fit:cover}
.pfi-root .wf-out__files{flex-wrap:wrap}
/* owner round 16 (2026-10-16): the generator's facts as chips under the name */
.pfi-root .wf-out__facts{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}
.pfi-root .wf-out__fact{font-size:11px;line-height:1.4;padding:2px 8px;border-radius:999px;background:rgba(92,154,126,.10);border:1px solid var(--accent-line);color:var(--text);white-space:nowrap}
.pfi-root .wf-out__fact b{font-weight:600;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-right:5px}
.pfi-root .wf-out__files a.wf-btn{text-decoration:none}
/* ---------- execution log ---------- */
.pfi-root .wf-log{display:flex;flex-direction:column;gap:13px}
/* overview: a calm glass panel — stat strip + a soft run-time trend */
.pfi-root .wf-log__head{border:1px solid var(--well-line);border-radius:var(--radius-lg);background:var(--well-bg);box-shadow:var(--well-shadow),inset 0 -1px 0 rgba(255,255,255,.26);overflow:visible}
/* scope toggle: a quiet text+icon control (not a pill) to flip the strip between the aggregate and the last run */
.pfi-root .wf-log__kpihd{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 11px 0}
.pfi-root .wf-log__scope{font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--label)}
.pfi-root .wf-kpiswap{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;cursor:pointer;font:inherit;font-size:11px;font-weight:600;color:var(--muted);padding:3px 5px;margin:-3px -5px -3px 0;border-radius:7px;transition:color .12s,background .12s}
.pfi-root .wf-kpiswap svg{width:13px;height:13px;display:block}
.pfi-root .wf-kpiswap:hover{color:var(--accent);background:var(--row-hover)}
.pfi-root .wf-log__stats{display:flex;padding:3px}
.pfi-root .wf-log__stat{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px 11px;position:relative}
.pfi-root .wf-log__stat b{font-size:16px;font-weight:650;color:var(--text);line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.pfi-root .wf-log__stat.is-accent b{color:var(--accent)}
.pfi-root .wf-log__stat span{font-size:9.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-weight:600}
.pfi-root .wf-trend{padding:10px 13px 12px;border-top:1px solid var(--divider)}
.pfi-root .wf-trend__hd{display:flex;justify-content:space-between;align-items:baseline;font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;margin-bottom:7px}
.pfi-root .wf-trend__hd b{font-weight:680;color:var(--label);letter-spacing:0}
.pfi-root .wf-trend__svg{display:block;width:100%;height:42px}
.pfi-root .wf-trend__line{stroke:var(--accent)}
/* hover points: an HTML overlay (the SVG is stretched, so dots/labels live here
   undistorted). Dots stay hidden until you hover the chart; the hovered point
   lifts a small hint with its run time + tokens. */
.pfi-root .wf-trend__plot{position:relative}
.pfi-root .wf-trend__dots{position:absolute;inset:0;pointer-events:none}
.pfi-root .wf-trend__pt{position:absolute;width:16px;height:16px;transform:translate(-50%,-50%);pointer-events:auto;cursor:pointer;display:flex;align-items:center;justify-content:center;outline:0}
.pfi-root .wf-trend__pt::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--surface);opacity:0;transform:scale(.5);transition:opacity .14s var(--ease),transform .14s var(--ease)}
.pfi-root .wf-trend__plot:hover .wf-trend__pt::after{opacity:.4;transform:scale(.85)}
.pfi-root .wf-trend__pt:hover::after,.pfi-root .wf-trend__pt:focus-visible::after{opacity:1;transform:none}
.pfi-root .wf-trend__tip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(3px);white-space:nowrap;background:#243029;color:#fff;font-size:11px;font-weight:500;letter-spacing:0;text-transform:none;padding:5px 9px;border-radius:8px;opacity:0;pointer-events:none;box-shadow:0 6px 18px rgba(40,56,48,.28);transition:opacity .14s var(--ease),transform .14s var(--ease);z-index:4}
.pfi-root .wf-trend__pt:hover .wf-trend__tip,.pfi-root .wf-trend__pt:focus-visible .wf-trend__tip{opacity:1;transform:translateX(-50%)}
/* filter — a segmented control that mirrors the sub-tabs (cohesive, not pill-y) */
.pfi-root .wf-logseg{display:flex;gap:2px;padding:3px;background:var(--well-bg);border:1px solid var(--well-line);border-radius:11px;box-shadow:var(--well-shadow)}
.pfi-root .wf-logseg__b{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;height:30px;padding:0 6px;border:0;background:transparent;cursor:pointer;font:inherit;font-size:12px;font-weight:500;color:var(--muted);border-radius:8px;white-space:nowrap;transition:background var(--dur) var(--ease),color .14s}
.pfi-root .wf-logseg__b:hover{color:var(--label-hover)}
.pfi-root .wf-logseg__b i{font-style:normal;font-size:11px;font-weight:600;color:var(--muted);opacity:.85;transition:color .14s}
.pfi-root .wf-logseg__b.is-on{background:var(--surface);color:var(--active-text);box-shadow:0 1px 3px rgba(55,72,64,.10)}
.pfi-root .wf-logseg__b.is-on i{color:var(--active-text);opacity:1}
.pfi-root .wf-log__none{padding:22px 4px;text-align:center;font-size:12.5px;color:var(--muted)}
/* timeline of expandable run cards */
.pfi-root .wf-log__list{position:relative}
.pfi-root .wf-hrun{position:relative}
/* event separator lives only in the CONTENT column (starts past the rail) so
   it never crosses the vertical connector line */
.pfi-root .wf-hrun + .wf-hrun::after{content:"";position:absolute;left:26px;right:1px;top:0;height:1px;background:var(--divider)}
/* vertical connector rail + dots, nudged a touch right off the frame edge */
.pfi-root .wf-hrun::before{content:"";position:absolute;left:9px;top:0;bottom:0;width:2px;background:var(--divider)}
.pfi-root .wf-hrun:first-child::before{top:22px}
.pfi-root .wf-hrun:last-child::before{bottom:auto;height:22px}
.pfi-root .wf-hrun__sum{position:relative;display:flex;align-items:center;gap:11px;padding:12px 4px 12px 26px;cursor:pointer;list-style:none;outline:0;border-radius:9px;transition:background .12s}
.pfi-root .wf-hrun__sum::-webkit-details-marker{display:none}
.pfi-root .wf-hrun__sum::marker{content:""}
.pfi-root .wf-hrun__sum:hover{background:var(--row-hover)}
.pfi-root .wf-hrun__sum:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}
.pfi-root .wf-hrun__dot{position:absolute;left:4px;top:50%;transform:translateY(-50%);width:12px;height:12px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 3.5px var(--surface);z-index:1}
.pfi-root .s-completed .wf-hrun__dot{background:var(--accent)}
.pfi-root .s-failed .wf-hrun__dot{background:#C2553F}
.pfi-root .s-running .wf-hrun__dot{background:#C98A2B;animation:wf-hrun-pulse 1.5s var(--ease) infinite}
@keyframes wf-hrun-pulse{0%,100%{box-shadow:0 0 0 3.5px var(--surface),0 0 0 3.5px rgba(201,138,43,.5)}50%{box-shadow:0 0 0 3.5px var(--surface),0 0 0 8px rgba(201,138,43,0)}}
.pfi-root .wf-hrun__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pfi-root .wf-hrun__when{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--text)}
.pfi-root .wf-hrun__sub{font-size:11.5px;color:var(--muted)}
.pfi-root .s-failed .wf-hrun__sub{color:#B1503B}
.pfi-root .wf-hrun__chev{flex:none;color:var(--muted);line-height:0;transition:transform var(--dur) var(--ease)}
.pfi-root .wf-hrun__chev svg{width:16px;height:16px;display:block}
.pfi-root .wf-hrun[open] .wf-hrun__chev{transform:rotate(180deg)}
.pfi-root .wf-hrun[open]>.wf-hrun__sum{background:var(--row-hover)}
.pfi-root .wf-hrun__body{padding:3px 4px 15px 26px}
.pfi-root .wf-hrun.is-closing .wf-hrun__chev{transform:none}
.pfi-root .wf-hrun.is-closing>.wf-hrun__sum{background:transparent}
.pfi-root .wf-hrun__seclbl{font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;margin:0 0 7px}
.pfi-root .wf-spec{margin-bottom:14px}
.pfi-root .wf-spec__row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:4px 0}
.pfi-root .wf-spec__k{font-size:12px;color:var(--muted);white-space:nowrap}
.pfi-root .wf-spec__v{font-size:12.5px;font-weight:500;color:var(--text);text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-hrun__metrics{display:flex;gap:24px;margin-bottom:16px}
.pfi-root .wf-hrun__metric{display:flex;flex-direction:column;gap:3px}
.pfi-root .wf-hrun__metric b{font-size:15px;font-weight:650;color:var(--text);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.pfi-root .wf-hrun__metric span{font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600}
.pfi-root .wf-hrun__note{margin-top:13px;font-size:12px;line-height:1.6;color:var(--label);padding:1px 0 1px 12px;border-left:2px solid var(--accent-line)}
.pfi-root .wf-hrun__err{margin-top:11px;display:flex;gap:8px;align-items:flex-start;font-size:12px;line-height:1.5;color:#9B3B28;background:rgba(194,85,63,.08);border:1px solid rgba(194,85,63,.25);border-radius:var(--radius);padding:9px 11px}
.pfi-root .wf-hrun__err svg{width:16px;height:16px;flex:none;margin-top:1px}
/* ---------- environment (providers & keys) ---------- */
.pfi-root .wf-env{display:flex;flex-direction:column;gap:12px}
.pfi-root .wf-env__intro{margin:0;font-size:12.5px;line-height:1.55;color:var(--muted)}
.pfi-root .wf-env__summary{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:500;letter-spacing:.02em;color:var(--label)}
.pfi-root .wf-env__sumdot{width:7px;height:7px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 3px var(--row-hover)}
.pfi-root .wf-env__sumdot.on{background:var(--accent);box-shadow:0 0 0 3px var(--accent-line)}
.pfi-root .wf-env__list{display:flex;flex-direction:column;gap:10px}
.pfi-root .wf-env__card{padding:13px;border:1px solid var(--well-line);border-radius:var(--radius-lg);background:var(--well-bg);box-shadow:var(--well-shadow);transition:border-color .14s}
.pfi-root .wf-env__card.is-connected{border-color:rgba(92,154,126,.28)}
.pfi-root .wf-env__card.is-empty{border-style:dashed;box-shadow:var(--well-shadow)}
.pfi-root .wf-env__top{display:flex;align-items:center;gap:11px}
.pfi-root .wf-env__logo{flex:none;width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;letter-spacing:.03em;color:var(--accent);background:rgba(92,154,126,.14);border:1px solid var(--accent-line)}
.pfi-root .wf-env__card.is-empty .wf-env__logo{color:var(--muted);background:var(--row-hover);border-color:var(--divider)}
.pfi-root .wf-env__meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pfi-root .wf-env__name{font-size:13.5px;font-weight:600;color:var(--text)}
.pfi-root .wf-env__models{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-env__status{flex:none;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--muted)}
.pfi-root .wf-env__status.is-on{color:#2C6A4D}
.pfi-root .wf-env__status.is-on svg{width:14px;height:14px;display:block}
.pfi-root .wf-env__sdot{width:7px;height:7px;border-radius:50%;background:currentColor}
.pfi-root .wf-env__keyrow{display:flex;align-items:center;gap:8px;margin-top:0}
.pfi-root .wf-env__key{flex:1;min-width:0;display:flex;align-items:center;gap:7px;height:34px;padding:0 11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;letter-spacing:.03em;color:var(--label);background:var(--well-bg);border:1px solid var(--well-line);border-radius:var(--radius);box-shadow:var(--well-shadow);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-env__keyico{flex:none;line-height:0;color:var(--muted)}.pfi-root .wf-env__keyico svg{width:14px;height:14px;display:block}
.pfi-root .wf-env__models2{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin-top:11px;font-size:11.5px;color:var(--label);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.01em}
.pfi-root .wf-env__modlbl{font-family:var(--pfi-family);font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600}
.pfi-root .wf-env__connect{display:flex;gap:8px;margin-top:12px}
.pfi-root .wf-env__in{flex:1;min-width:0}
.pfi-root .wf-btn--ghost{border-color:transparent}
.pfi-root .wf-btn--sm{height:28px;padding:0 10px;font-size:12px;border-radius:8px;gap:6px}
.pfi-root .wf-btn--sm svg{width:13px;height:13px}
.pfi-root .wf-empty{padding:30px 16px;text-align:center;color:var(--muted)}
.pfi-root .wf-empty__ico{display:flex;align-items:center;justify-content:center;margin:0 auto 12px;width:46px;height:46px;border-radius:13px;color:var(--accent);background:rgba(92,154,126,.10);border:1px solid var(--accent-line)}
.pfi-root .wf-empty__ico svg{width:22px;height:22px}
.pfi-root .wf-empty h3{margin:0 0 5px;font-size:14px;font-weight:600;color:var(--text)}
.pfi-root .wf-empty p{margin:0;font-size:12.5px;line-height:1.55}
.pfi-root .wf-insp__foot{flex:none;display:flex;flex-direction:column;gap:7px;padding-top:12px;margin-top:8px;border-top:1px solid var(--divider)}
.pfi-root .wf-insp__footrow{display:flex;align-items:center;gap:7px;min-width:0}
.pfi-root .wf-insp__footrow>.wf-btn[data-foot="run"]{flex:1 1 auto;min-width:0;overflow:hidden}
.pfi-root .wf-insp__footrow>.wf-btn[data-foot="run"] svg{flex:none}
.pfi-root .wf-insp__footrow>.wf-btn--icon{flex:0 0 auto}
/* Buttons speak the system's own emphasis vocabulary (see the active
   sub-tab): the SURFACE MATERIAL ITSELF, lifted — a matte milk-glass tonal
   fill, borderless, flat. Hover brightens the milk, pressing carves it
   inward. Hierarchy is carried by tint (milk / sage milk / deep sage),
   never by chrome. */
.pfi-root .wf-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:34px;padding:0 13px;
  font:inherit;font-size:12.5px;font-weight:560;letter-spacing:.005em;color:var(--label);
  background:rgba(255,255,255,.5);border:0;border-radius:var(--radius);cursor:pointer;white-space:nowrap;
  transition:background .14s,color .14s,box-shadow .14s,transform .12s var(--ease)}
.pfi-root .wf-btn svg{width:15px;height:15px;display:block}
.pfi-root .wf-btn:hover{background:rgba(255,255,255,.74);color:var(--label-hover)}
.pfi-root .wf-btn:active{transform:translateY(1px);background:rgba(255,255,255,.44);box-shadow:inset 0 1.5px 3px rgba(40,56,48,.13)}
.pfi-root .wf-btn--icon{flex:none;width:34px;padding:0}
.pfi-root .wf-btn--ghost{background:transparent}
.pfi-root .wf-btn--ghost:hover{background:rgba(255,255,255,.5)}
.pfi-root .wf-btn--danger:hover{color:var(--danger);background:rgba(184,84,80,.12)}
/* on the (near-opaque) modal card, milk vanishes — use the ink tonal there */
.wf-modal.pfi-root .wf-btn{background:rgba(60,74,67,.07)}
.wf-modal.pfi-root .wf-btn:hover{background:rgba(60,74,67,.11)}

/* ---- CHAT / DIALOG (test the block in isolation) ---- */
.pfi-root .wf-bub{max-width:85%;padding:9px 12px;border-radius:14px;font-size:13px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}
.pfi-root .wf-bub--user{align-self:flex-end;background:rgba(92,154,126,.18);color:#1F3D2E;border:1px solid rgba(92,154,126,.32);border-bottom-right-radius:5px}
.pfi-root .wf-bub--ai{align-self:flex-start;background:var(--surface);color:var(--text);border:1px solid var(--well-line);border-bottom-left-radius:5px}
.pfi-root .wf-compose{flex:none;display:flex;align-items:flex-end;gap:7px;padding-top:11px;margin-top:8px;border-top:1px solid var(--divider)}
.pfi-root .wf-compose__in{flex:1;min-width:0;font:inherit;font-size:13px;color:var(--text);background:var(--field-bg);border:1px solid var(--border);border-radius:var(--radius);padding:9px 11px;resize:none;max-height:120px;line-height:1.45;outline:0;
  transition:border-color .14s,background-color .14s,box-shadow .14s}
.pfi-root .wf-compose__in::placeholder{color:var(--muted)}
.pfi-root .wf-compose__in:focus{border-color:var(--field-bd-focus);background:var(--field-bg-focus);box-shadow:0 0 0 3px var(--focus-ring)}
.pfi-root .wf-compose__send{flex:none;width:36px;height:36px;border:0;border-radius:var(--radius);background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .14s,transform .12s var(--ease)}
.pfi-root .wf-compose__send svg{width:17px;height:17px;display:block}
.pfi-root .wf-compose__send:hover{background:#4f8a70}
.pfi-root .wf-compose__send:active{transform:translateY(1px)}

@media (prefers-reduced-motion:reduce){
  .pfi-root .wf-insp,.wf-pop.pfi-root,.pfi-root .wf-insp.is-morphing{animation:none}
  .pfi-root .wf-insp.is-entering::after,.pfi-root .wf-insp.is-entering > *{animation:none}
  .pfi-root .wf-group{animation:none}
  .wf-modal.pfi-root,.pfi-root .wf-modal__card{transition:none}
  .wf-pw.pfi-root,.wf-sd.pfi-root{animation:none}
  .pfi-root .wf-insp.is-morphing,.pfi-root .wf-insp.is-regroup,.pfi-root .wf-group{transition:none}
  .pfi-root .wf-insp__scroll.is-swap{animation:none}
  .pfi-root .wf-switch,.pfi-root .wf-switch::after,.pfi-root .wf-tab,.pfi-root .wf-tab__tx,.pfi-root .wf-tab__ic,.pfi-root .wf-csel__chev,.pfi-root .wf-ichip,.pfi-root .wf-ichip__btn,.pfi-root .wf-ichip__tx,.pfi-root .wf-itool,.pfi-root .wf-grip__ico{transition-duration:.001ms}
}

/* ===================== build24 additions ===================== */
/* footer primary label truncates instead of pushing the icon buttons out */
.pfi-root .wf-btn__lb{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* solid (filled) buttons — used by the confirmation modal */
.pfi-root .wf-btn--solid,.wf-modal.pfi-root .wf-btn--solid{color:#fff;background:var(--cta)}
.pfi-root .wf-btn--solid:hover,.wf-modal.pfi-root .wf-btn--solid:hover{color:#fff;background:var(--cta-hover)}
.pfi-root .wf-btn--solid:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.2)}
.pfi-root .wf-btn--solid:hover{background:#4f8a70;border-color:#4f8a70;color:#fff}
.pfi-root .wf-btn--solid-danger,.wf-modal.pfi-root .wf-btn--solid-danger{color:#fff;background:#AC4B46;box-shadow:none}
.pfi-root .wf-btn--solid-danger:hover,.wf-modal.pfi-root .wf-btn--solid-danger:hover{color:#fff;background:#9E423D}
/* affirmative outline (e.g. Save changes) — same weight as the other small
   buttons, just a sage accent so it reads as the primary without a heavy fill */
.pfi-root .wf-btn--ok{color:#235740;background:rgba(92,154,126,.18);box-shadow:none}
.pfi-root .wf-btn--ok:hover{color:#1D4A36;background:rgba(92,154,126,.27)}
.pfi-root .wf-btn.is-done{color:#2C6A4D;border-color:var(--accent-line);background:rgba(92,154,126,.12)}

/* ---------- toast ---------- */
.wf-toast.pfi-root{position:fixed;left:50%;bottom:26px;transform:translate(-50%,14px);z-index:9600;
  max-width:80vw;padding:10px 16px;font-family:var(--pfi-family);font-size:12.5px;font-weight:500;
  color:#EAF2EC;background:rgba(31,45,38,.93);border:1px solid rgba(255,255,255,.12);border-radius:11px;
  box-shadow:0 14px 36px rgba(28,40,32,.32);opacity:0;pointer-events:none;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:opacity .22s var(--ease),transform .22s var(--ease)}
.wf-toast.pfi-root.is-in{opacity:1;transform:translate(-50%,0)}
/* ROUND 14 (owner round 12): the APP's toasts (state.js Toast — "Run
   started", "Stopping…", "Run completed", errors; main.css .toast-host at
   the bottom right) wear this toast's design under the flag: the dark glass,
   the serif, the kind as a left accent (info / success / warn / error).
   Flag off, main.css's white card is untouched (spec 01 / spec 28). */
body.aw-newblocks .toast-host{right:20px;bottom:20px;gap:8px}
body.aw-newblocks .toast{font-family:'EB Garamond',Georgia,serif;font-size:13px;font-weight:500;line-height:1.35;
  color:#EAF2EC;background:rgba(31,45,38,.93);border:1px solid rgba(255,255,255,.12);border-left:3px solid rgba(255,255,255,.28);
  border-radius:11px;padding:10px 16px;min-width:220px;max-width:360px;box-shadow:0 14px 36px rgba(28,40,32,.32);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
body.aw-newblocks .toast.success{border-left-color:#62AF8B}
body.aw-newblocks .toast.warn{border-left-color:#E0B25A}
body.aw-newblocks .toast.error{border-left-color:#E08A84}

/* ---------- confirmation modal ----------
   A focal card in the panel's own language: dense glass, left-aligned type,
   an inline icon header (the old centred medallion read as a stock dialog,
   not ours), the conversion shown as a carved from → to strip, the caveat in
   a carved well, and right-aligned natural-width actions. The card enters
   transform-only — the scrim owns the fade — so the blur never ramps. */
.wf-modal.pfi-root{position:fixed;inset:0;z-index:9500;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(40,52,46,.32);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;transition:opacity .18s var(--ease)}
.wf-modal.pfi-root.is-in{opacity:1}
.pfi-root .wf-modal__card{width:352px;max-width:100%;padding:16px 16px 14px;border-radius:var(--radius-lg);text-align:left;
  font-family:var(--pfi-family);color:var(--text);
  background:rgba(252,253,251,.9);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  border:1px solid var(--border);
  box-shadow:var(--shadow),0 28px 70px rgba(40,56,48,.25);
  transform:translateY(8px) scale(.98);transition:transform .22s var(--ease)}
.wf-modal.pfi-root.is-in .wf-modal__card{transform:none}
.pfi-root .wf-modal__hd{display:flex;align-items:center;gap:9px;margin:0 0 9px}
.pfi-root .wf-modal__ic{flex:none;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  color:var(--accent);background:rgba(92,154,126,.12);border:1px solid var(--accent-line)}
.pfi-root .wf-modal__ic svg{width:16px;height:16px;display:block}
.pfi-root .wf-modal__card--danger .wf-modal__ic{color:var(--danger);background:rgba(184,84,80,.09);border-color:rgba(184,84,80,.3)}
.pfi-root .wf-modal__title{font-size:14.5px;font-weight:680;letter-spacing:-.01em}
.pfi-root .wf-modal__body{font-size:12.5px;line-height:1.55;color:var(--label)}
.pfi-root .wf-modal__body p{margin:0 0 8px}.pfi-root .wf-modal__body p:last-child{margin-bottom:0}
.pfi-root .wf-modal__body b{color:var(--text);font-weight:640}
/* the from → to strip for type conversions */
.pfi-root .wf-modal__conv{display:flex;align-items:center;gap:8px;margin:10px 0;padding:9px 11px;
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius)}
.pfi-root .wf-modal__type{flex:1;min-width:0;display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--text)}
.pfi-root .wf-modal__type svg{width:15px;height:15px;flex:none;color:var(--accent)}
.pfi-root .wf-modal__type span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-modal__conv>svg{flex:none;width:14px;height:14px;color:var(--muted)}
.pfi-root .wf-modal__note{color:var(--muted);background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius);padding:9px 11px;text-align:left;margin-top:10px;font-size:12px}
.pfi-root .wf-modal__acts{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.pfi-root .wf-modal__acts .wf-btn{height:33px;padding:0 14px}
/* ---------- the review modal (planflow-review-modal.js, round 12 / 13) ----------
   The confirmation modal's card and parts, verbatim (round 13, owner round
   11 item 3 — "not really well aligned with the overall design"): the kind
   as the body's lead paragraph, the plan's steps as .wf-modal__list rows,
   the hint or a failed step's error as a .wf-modal__note well, the output
   excerpt in the body's own paragraph style inside a scroller, "Later" at
   the left of the actions row, the decisions at the right. Nothing here
   sets a font, a size or a padding of its own — spec 20 arm P diffs the
   computed styles against the confirm modal, part by part, and reads 0.
   Nothing here reaches the inspector's own review cards. */
.pfi-root .wf-modal__out{max-height:220px;overflow:auto;overscroll-behavior:contain}
.pfi-root .wf-review-modal__link{color:var(--accent);font-weight:600;text-decoration:none}
.pfi-root .wf-review-modal__link:hover{text-decoration:underline}
.pfi-root .wf-modal__acts .wf-review-modal__later{margin-right:auto}
.wf-modal.pfi-root .wf-btn--danger{color:var(--danger);background:rgba(184,84,80,.08)}
.wf-modal.pfi-root .wf-btn--danger:hover{color:var(--danger);background:rgba(184,84,80,.14)}

/* ---------- standalone chat window ---------- */
.wf-cw.pfi-root{position:fixed;z-index:8800;display:flex;flex-direction:column;max-height:min(560px,82vh);
  font-family:var(--pfi-family);color:var(--text);border-radius:var(--radius-lg);
  animation:wf-cw-in .2s var(--ease)}
@keyframes wf-cw-in{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
.pfi-root .wf-cw__head{flex:none;display:flex;align-items:center;gap:8px;padding:10px 10px 10px 13px;border-bottom:1px solid var(--divider);cursor:grab}
.pfi-root .wf-cw__head:active{cursor:grabbing}
.pfi-root .wf-cw__title{flex:1;min-width:0;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-cw__ic{flex:none;color:var(--accent);line-height:0}.pfi-root .wf-cw__ic svg{width:16px;height:16px;display:block}
.pfi-root .wf-cw__msgs{flex:1;min-height:90px;overflow-y:auto;display:flex;flex-direction:column;gap:9px;padding:13px;scrollbar-width:thin}
.pfi-root .wf-cw__empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:26px 18px;color:var(--muted)}
.pfi-root .wf-cw__empty .wf-empty__ico{display:flex;align-items:center;justify-content:center;margin:0 auto 12px;width:44px;height:44px;border-radius:13px;color:var(--accent);background:rgba(92,154,126,.10);border:1px solid var(--accent-line)}
.pfi-root .wf-cw__empty .wf-empty__ico svg{width:21px;height:21px}
.pfi-root .wf-cw__empty h3{margin:0 0 5px;font-size:13.5px;font-weight:600;color:var(--text)}
.pfi-root .wf-cw__empty p{margin:0;font-size:12px;line-height:1.55;max-width:230px}
.wf-cw.pfi-root .wf-compose{padding:11px;margin:0;border-top:1px solid var(--divider)}

/* ---------- log: change / revert entries ---------- */
.pfi-root .s-change .wf-hrun__dot{background:#7C83C0}
.pfi-root .wf-hrun__ver{flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:600;letter-spacing:.01em;line-height:1;color:var(--accent)}
.pfi-root .s-change .wf-hrun__ver{color:#6B72C0}
.pfi-root .s-failed .wf-hrun__ver{color:#B0473A}
.pfi-root .wf-hrun__title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--text)}
.pfi-root .s-failed .wf-hrun__title{color:#B0473A}
.pfi-root .wf-hrun__revert{display:inline-flex;align-items:center;gap:7px;margin-top:12px;height:32px;padding:0 12px;font:inherit;font-size:12px;font-weight:500;
  color:var(--label);background:var(--field-bg);border:1px solid var(--divider);border-radius:var(--radius);cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.pfi-root .wf-hrun__revert:hover{background:var(--row-hover);color:var(--label-hover);border-color:var(--accent-line)}
.pfi-root .wf-hrun__revert svg{width:15px;height:15px;display:block}

/* ---------- narrow inspector: header disclosure + run-as-icon ---------- */
.pfi-root .wf-disc{display:none}                       /* hidden until narrow */
.pfi-root .wf-disc svg{transition:transform var(--dur) var(--ease)}
.pfi-root .wf-insp.is-narrow .wf-disc{display:flex}
.pfi-root .wf-insp.is-narrow .wf-insp__head{flex-wrap:wrap;justify-content:flex-end;align-items:center;align-content:flex-start;min-height:0;padding-top:10px;padding-bottom:10px}
/* revealed name: ALWAYS its own full-width second row (order:5), pulled back
   to the panel's left edge (cancels the 64px badge inset). Closed it is a
   0-height row; opening grows it via max-height + opacity, so the tools row
   above never jumps and the body below slides instead of snapping. */
.pfi-root .wf-insp.is-narrow .wf-insp__headmain{display:flex;flex-direction:column;flex-basis:100%;order:5;margin:0 0 0 -62px;max-height:0;opacity:0;overflow:hidden;pointer-events:none;transition:max-height .3s var(--ease),opacity .22s var(--ease),margin-top .3s var(--ease)}
.pfi-root .wf-insp.is-narrow .wf-insp__head.is-headopen .wf-insp__headmain{max-height:52px;opacity:1;margin-top:10px;pointer-events:auto}
.pfi-root .wf-insp__head.is-headopen .wf-disc svg{transform:rotate(180deg)}
.pfi-root .wf-insp.is-narrow .wf-insp__footrow>.wf-btn:first-child{flex:0 0 auto;width:34px;padding:0}
.pfi-root .wf-insp.is-narrow .wf-insp__footrow>.wf-btn:first-child .wf-btn__lb{display:none}

/* ---------- output: edit mode + actions ---------- */
.pfi-root .wf-out__actions{display:flex;align-items:center;gap:8px}
.pfi-root .wf-out__edit{min-height:200px}

/* ---------- environment: refined connected card ---------- */
.pfi-root .wf-env__status.is-on svg{width:13px;height:13px;display:block}
.pfi-root .wf-env__divider{height:1px;background:var(--divider);margin:13px 0}
.pfi-root .wf-env__kval{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-env__keyact{flex:none;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:9px;border:1px solid var(--divider);background:var(--field-bg);color:var(--muted);cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.pfi-root .wf-env__keyact:hover{background:var(--row-hover);color:var(--label-hover);border-color:var(--accent-line)}
.pfi-root .wf-env__keyact svg{width:15px;height:15px;display:block}
.pfi-root .wf-env__keyact--danger:hover{color:var(--danger);border-color:rgba(184,84,80,.4);background:rgba(184,84,80,.08)}


/* ============================================================
   NEW (build40): upstream references · pre-flight validation ·
   live single-block run · human-review loop
   ============================================================ */

/* ---- upstream references under the prompt ---- */
.pfi-root .wf-refbar{margin-top:9px;display:flex;flex-direction:column;gap:7px}
.pfi-root .wf-refbar__row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pfi-root .wf-refbar__lbl{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;color:var(--muted)}
.pfi-root .wf-refbar__lbl svg{width:13px;height:13px;color:var(--muted)}
.pfi-root .wf-refbar__row--using{gap:5px}
.pfi-root .wf-refbar__row--using .wf-refbar__lbl{color:var(--muted)}
/* carved inline reference token — an inset well, NOT a pill */
.pfi-root .wf-ref{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;box-sizing:border-box;font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:11.5px;line-height:1;color:var(--accent);
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:6px;padding:5px 7px}
.pfi-root .wf-ref svg{width:12px;height:12px}
.pfi-root .wf-ref--ins{cursor:pointer;color:var(--label);transition:color .12s,background .12s,border-color .12s}
.pfi-root .wf-ref--ins:hover{color:var(--accent);border-color:var(--accent-line);background:rgba(92,154,126,.08)}
.pfi-root .wf-ref--ins:active{transform:translateY(.5px)}
.pfi-root .wf-ref--bad{color:var(--danger);border-color:rgba(184,84,80,.32)}

/* ---- pre-flight popup card (opens from the bordeaux side chip) ---- */
.wf-vpop.pfi-root{padding:10px 12px 11px;cursor:default}
.pfi-root .wf-vpop__hd{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:650;color:#8C3A46;margin:0 0 6px}
.pfi-root .wf-vpop__hd svg{width:14px;height:14px;flex:none}
.pfi-root .wf-vpop__row{display:flex;align-items:flex-start;gap:8px;padding:3px 0;font-size:12.5px;line-height:1.45;color:var(--text)}
.pfi-root .wf-vpop__dot{flex:none;width:5px;height:5px;border-radius:50%;background:#8C3A46;margin-top:7px}
.pfi-root .wf-vpop__tx{flex:1;min-width:0;white-space:normal}
.pfi-root .wf-vpop__act{display:inline;border:0;background:none;padding:0;margin-left:3px;font:inherit;font-size:12px;font-weight:600;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.pfi-root .wf-vpop__act:hover{text-decoration:none}

/* ---- section header row + small toggle action (e.g. Prompt → Reference) ---- */
.pfi-root .wf-sec__hd{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 0 11px}
.pfi-root .wf-sec__hd .wf-sec__h{padding:0}
.pfi-root .wf-sec__act{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border:1px solid transparent;border-radius:7px;background:none;cursor:pointer;
  font:inherit;font-size:11px;font-weight:600;color:var(--muted);transition:color .12s,background .12s,border-color .12s}
.pfi-root .wf-sec__act svg{width:13px;height:13px}
.pfi-root .wf-sec__act:hover{color:var(--accent);background:rgba(92,154,126,.07);border-color:var(--accent-line)}
.pfi-root .wf-sec__act.is-on{color:var(--accent);background:rgba(92,154,126,.10);border-color:var(--accent-line)}
/* collapsible insert-chip row revealed by the Reference toggle */
.pfi-root .wf-refins{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:2px}


/* (readiness dot removed — validation now surfaces via the side chip) */

/* ---- live single-block run (Output tab) ---- */
.pfi-root .wf-hrun-live__time{margin-left:auto;font-size:11.5px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.pfi-root .wf-hrun-live__stream{margin-top:10px;font-size:13px;line-height:1.6;color:var(--text);white-space:pre-wrap;word-break:break-word;
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius);padding:12px 13px;min-height:88px}
.pfi-root .wf-hrun-live__caret{display:inline-block;width:2px;height:1.05em;vertical-align:text-bottom;margin-left:1px;background:var(--accent);animation:wf-blink 1.05s steps(1) infinite}
.pfi-root .wf-hrun-live__media{margin-top:10px;display:flex;flex-direction:column;gap:11px;align-items:center;justify-content:center;min-height:96px;
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius);padding:18px;color:var(--muted);font-size:12.5px}
.pfi-root .wf-miniBar{width:120px;height:4px;border-radius:999px;background:rgba(70,92,80,.12);overflow:hidden}
.pfi-root .wf-miniBar span{display:block;height:100%;width:40%;border-radius:999px;background:var(--accent);animation:wf-exec-bar 1.1s var(--ease) infinite}

/* ---- human-review card (plan / output) ---- */
.pfi-root .wf-review{display:flex;flex-direction:column;gap:11px}
.pfi-root .wf-review__hd{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:650;color:var(--label)}
.pfi-root .wf-review__hdtx{flex:1;min-width:0}
.pfi-root .wf-plan__save{flex:none;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;transition:color .14s,background .14s}
.pfi-root .wf-plan__save svg{width:13px;height:13px;display:block}
.pfi-root .wf-plan__save:hover{color:var(--label-hover);background:rgba(255,255,255,.5)}
.pfi-root .wf-plan__save.is-on{color:var(--accent)}
.pfi-root .wf-plan__save.is-on svg{fill:currentColor;fill-opacity:.22}
.pfi-root .wf-review__hd svg{width:15px;height:15px;flex:none;color:#9A6313}
.pfi-root .wf-review--plan .wf-review__hd svg{color:var(--accent)}
.pfi-root .wf-review__hd .wf-out__meta{margin-left:auto}
.pfi-root .wf-review__body{background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius);padding:12px 13px;font-size:13px;line-height:1.6;color:var(--text);max-height:300px;overflow:auto}
.pfi-root .wf-review__body p{margin:0 0 9px}
.pfi-root .wf-review__body p:last-child{margin:0}
.pfi-root .wf-review__acts{display:flex;flex-wrap:nowrap;gap:7px}
.pfi-root .wf-review--plan .wf-review__acts{flex-direction:column;gap:8px}
.pfi-root .wf-review__go{display:flex;gap:8px}
.pfi-root .wf-review__go .wf-btn{flex:1}
.pfi-root .wf-review__more{display:flex;gap:6px;align-items:center}
.pfi-root .wf-review__more .wf-btn--ghost{margin-left:auto}
/* Break into blocks: outlined accent — a clear second "run" choice next to Proceed */
.pfi-root .wf-btn--split{color:#2C6A4D;background:transparent;box-shadow:inset 0 0 0 1.5px rgba(92,154,126,.36)}
.pfi-root .wf-btn--split:hover{color:#1D4A36;background:rgba(92,154,126,.10);box-shadow:inset 0 0 0 1.5px rgba(92,154,126,.52)}
.pfi-root .wf-btn--split:active{background:rgba(92,154,126,.17)}
/* Save plan: labeled toggle; lit when the plan is remembered */
.pfi-root .wf-plan__savebtn.is-on{color:var(--accent);background:rgba(92,154,126,.14)}
.pfi-root .wf-plan__savebtn.is-on:hover{background:rgba(92,154,126,.2)}
.pfi-root .wf-plan__savebtn.is-on svg{fill:currentColor;fill-opacity:.22}

/* ---- Output sub-tab flag (something waiting there) ---- */

/* ============================================================
   build41: editable/commentable plan steps · locked-collapsed group
   ============================================================ */

/* ---- plan review: editable, commentable steps ---- */
.pfi-root .wf-plan{display:flex;flex-direction:column;gap:8px}
.pfi-root .wf-plan__step{position:relative;display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border-radius:var(--radius);
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);transition:border-color .14s,box-shadow .14s}
.pfi-root .wf-plan__step:focus-within{border-color:var(--accent-line);box-shadow:0 0 0 2px rgba(92,154,126,.16)}
.pfi-root .wf-plan__n{flex:none;width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;
  font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:11px;font-weight:700;color:var(--muted);
  background:var(--surface);border:1px solid var(--well-line);margin-top:1px}
.pfi-root .wf-plan__step:focus-within .wf-plan__n{color:var(--accent);border-color:var(--accent-line)}
.pfi-root .wf-plan__main{flex:1;min-width:0}
.pfi-root .wf-plan__tx{font-size:13px;line-height:1.5;color:var(--text);outline:none;border-radius:4px;padding:1px 3px;cursor:text;word-break:break-word}
.pfi-root .wf-plan__tx:focus{box-shadow:0 0 0 2px rgba(92,154,126,.18)}
.pfi-root .wf-plan__note-wrap{display:none;margin-top:7px}
.pfi-root .wf-plan__step.has-note .wf-plan__note-wrap,.pfi-root .wf-plan__step.is-commenting .wf-plan__note-wrap{display:block}
.pfi-root .wf-plan__note{width:100%;box-sizing:border-box;resize:none;overflow:hidden;min-height:30px;
  font:inherit;font-size:12px;line-height:1.45;color:var(--text);background:var(--surface);
  border:1px solid var(--well-line);border-radius:7px;padding:6px 8px}
.pfi-root .wf-plan__note:focus{outline:none;border-color:var(--accent-line);box-shadow:0 0 0 2px rgba(92,154,126,.16)}
.pfi-root .wf-plan__note::placeholder{color:var(--muted)}
.pfi-root .wf-plan__cbtn{flex:none;width:26px;height:26px;display:flex;align-items:center;justify-content:center;
  border:1px solid transparent;border-radius:7px;background:none;cursor:pointer;color:var(--muted);transition:color .12s,background .12s,border-color .12s}
.pfi-root .wf-plan__cbtn svg{width:14px;height:14px}
.pfi-root .wf-plan__cbtn:hover{color:var(--accent);background:rgba(92,154,126,.07);border-color:var(--accent-line)}
.pfi-root .wf-plan__step.is-commenting .wf-plan__cbtn,.pfi-root .wf-plan__step.has-note .wf-plan__cbtn{color:var(--accent)}

/* ---- group control for locked + collapsed tiles ----
   Dressed EXACTLY like a collapsed tile — same glass recipe, same white badge
   card — carrying a layers glyph and a monospace count, so it reads as one of
   the tiles, just plural. Folding adds two faint card edges underneath; they
   arrive through the shadow transition rather than a snap. */
.pfi-root .wf-group{position:absolute;display:flex;align-items:center;justify-content:center;box-sizing:border-box;
  /* C4: matches the collapsed tile it stands in for — 40x40, not 52 */
  width:40px;height:40px;padding:0;cursor:pointer;font:inherit;
  /* C4 census: every other collapsed chip in the shell (brand tile,
     collapsed top bar, collapsed canvas tools, nav rail, collapsed zoom
     cluster, help tile, and now the collapsed inspector tile) wears a
     12px radius. --radius-lg resolved to 16 here, which made the one
     control that stands in for a stack of those tiles read as a
     different family. 12px, measured, not guessed. */
  background:var(--surface);border:1px solid var(--border);border-radius:12px;
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  box-shadow:var(--shadow);z-index:60;
  transition:box-shadow var(--aw-chrome-dur, .34s) var(--ease-bar),transform .12s var(--ease);
  animation:wf-group-in .3s var(--ease)}
@keyframes wf-group-in{from{transform:scale(.86) translateY(5px)}to{transform:none}}
.pfi-root .wf-group:active{transform:translateY(1px)}
.pfi-root .wf-group__badge{display:flex;width:34px;height:34px;transition:transform .14s var(--ease)}
.pfi-root .wf-group__badge svg{width:34px;height:34px;display:block}
.pfi-root .wf-group:hover .wf-group__badge{transform:scale(1.05)}
/* folded group = one clean card; its layers glyph + count already read as
   "many", so no faux stacked-card edges peek out below (those looked like a
   stray half-frame under the control) */
/* tiles in flight during a fold/fan: position + scale + fade on the morph
   curve; origin at the top edge so they shrink toward the control above */
.pfi-root .wf-insp.is-regroup{transition:left var(--aw-chrome-dur, .34s) var(--ease-bar),top var(--aw-chrome-dur, .34s) var(--ease-bar),
  transform var(--aw-chrome-dur, .34s) var(--ease-bar),opacity .24s var(--ease);
  transform-origin:50% 0;pointer-events:none;will-change:left,top,transform,opacity}

/* ============================================================
   build43: footer validate button · ask-before-plan · richer plan
   (add / discuss / regenerate) · plan execution progress
   ============================================================ */

/* ---- footer validate button: lives left of Run from here, always in the
   DOM so it can slide in/out (width + fade) as issues appear and resolve ---- */
.pfi-root .wf-vbtn{flex:none;display:inline-flex;align-items:center;justify-content:center;gap:4px;height:34px;width:54px;padding:0;box-sizing:border-box;
  font:inherit;font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;
  color:#8C3A46;background:rgba(140,58,70,.12);border:0;border-radius:var(--radius);
  cursor:pointer;overflow:hidden;white-space:nowrap;
  transition:width .3s var(--ease-bar),margin .3s var(--ease-bar),
             opacity .22s var(--ease),transform .3s var(--ease-bar),background .16s}
.pfi-root .wf-vbtn svg{width:15px;height:15px;flex:none}
.pfi-root .wf-vbtn:hover{background:rgba(140,58,70,.18)}
.pfi-root .wf-vbtn:active{transform:translateY(1px)}
.pfi-root .wf-vbtn.is-open{background:rgba(140,58,70,.18)}
.pfi-root .wf-vbtn:not(.is-on){width:0;margin-right:-7px;opacity:0;transform:scale(.7);pointer-events:none}
.pfi-root .wf-vbtn__n{line-height:1}

/* ---- the clarifying question before a plan (options + free answer) ---- */
.pfi-root .wf-ask__q{margin:0 0 4px;font-size:13px;line-height:1.55;color:var(--text)}
.pfi-root .wf-ask__opts{display:flex;flex-direction:column;gap:7px}
.pfi-root .wf-ask__opt{display:flex;align-items:flex-start;gap:9px;width:100%;text-align:left;font:inherit;font-size:12.5px;line-height:1.45;color:var(--text);
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius);
  padding:9px 11px;cursor:pointer;transition:border-color .14s,background .14s,transform .12s var(--ease)}
.pfi-root .wf-ask__opt:hover{border-color:var(--accent-line);background:rgba(92,154,126,.07)}
.pfi-root .wf-ask__opt:active{transform:translateY(1px)}
.pfi-root .wf-ask__n{flex:none;width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;
  font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:11px;font-weight:700;color:var(--muted);
  background:var(--surface);border:1px solid var(--well-line);margin-top:1px;transition:color .14s,border-color .14s}
.pfi-root .wf-ask__optx{flex:1;min-width:0}
.pfi-root .wf-ask__opt:hover .wf-ask__n{color:var(--accent);border-color:var(--accent-line)}
.pfi-root .wf-ask__or{display:flex;justify-content:center;margin:1px 0;color:var(--muted);font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.pfi-root .wf-ask__free{display:flex;align-items:flex-end;gap:7px}
.pfi-root .wf-ask__in{flex:1;min-width:0;font:inherit;font-size:13px;color:var(--text);background:var(--field-bg);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;resize:none;max-height:120px;line-height:1.45;outline:0;transition:border-color .14s,box-shadow .14s}
.pfi-root .wf-ask__in:focus{border-color:var(--field-bd-focus);box-shadow:0 0 0 3px var(--focus-ring)}
.pfi-root .wf-ask__in::placeholder{color:var(--muted)}
.pfi-root .wf-ask__send{flex:none;width:34px;height:34px;border:0;border-radius:var(--radius);background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .14s,transform .12s var(--ease)}
.pfi-root .wf-ask__send svg{width:16px;height:16px;display:block}
.pfi-root .wf-ask__send:hover{background:#4f8a70}
.pfi-root .wf-ask__send:active{transform:translateY(1px)}

/* ---- plan extensions: step buttons, ghost add-row, discussion thread ---- */
.pfi-root .wf-plan__btns{position:absolute;top:5px;right:5px;display:flex;gap:2px;padding:2px;
  background:rgba(247,250,247,.94);border-radius:9px;box-shadow:0 1px 5px rgba(40,52,44,.12);
  opacity:0;pointer-events:none;transition:opacity .15s ease}
.pfi-root .wf-plan__step:hover .wf-plan__btns,.pfi-root .wf-plan__step:focus-within .wf-plan__btns{opacity:1;pointer-events:auto}
.pfi-root .wf-plan__cbtn.is-on{color:var(--accent);background:rgba(92,154,126,.08);border-color:var(--accent-line)}
.pfi-root .wf-plan__addrow{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:8px 10px;
  font:inherit;font-size:12px;font-weight:600;color:var(--muted);background:transparent;
  border:1px solid var(--well-line);border-radius:var(--radius);cursor:pointer;
  transition:color .14s,background .14s,border-color .14s}
.pfi-root .wf-plan__addrow svg{width:14px;height:14px}
.pfi-root .wf-plan__addrow:hover{color:var(--accent);background:var(--well-bg);border-color:var(--accent-line)}
.pfi-root .wf-plan__tx:empty::before{content:attr(data-ph);color:var(--muted)}
/* per-step discussion: a LABELLED region inside the step (no box-in-box) —
   a header with its own close, the short exchange, then the rewrites as
   radio-style choices whose dot fills with a check on hover, so a message
   and a pickable option can never be confused. */
.pfi-root .wf-plan__msg{font-size:12px;line-height:1.5;max-width:90%}
.pfi-root .wf-plan__msg--user{align-self:flex-end;color:#1F3D2E;background:rgba(92,154,126,.14);border:1px solid rgba(92,154,126,.26);border-radius:9px;border-bottom-right-radius:4px;padding:6px 9px}
.pfi-root .wf-plan__msg--ai{align-self:flex-start;color:var(--label)}
.pfi-root .wf-plan__alt{display:flex;align-items:flex-start;gap:8px;width:100%;text-align:left;font:inherit;font-size:12px;line-height:1.45;color:var(--text);
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius);padding:8px 10px;cursor:pointer;
  transition:border-color .14s,background .14s}
.pfi-root .wf-plan__alt:hover{border-color:var(--accent-line);background:rgba(92,154,126,.07)}
.pfi-root .wf-plan__altdot{flex:none;width:15px;height:15px;margin-top:1px;border-radius:50%;border:1.5px solid rgba(60,74,67,.25);box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:transparent;color:#fff;transition:background .14s,border-color .14s}
.pfi-root .wf-plan__altdot svg{width:9px;height:9px;display:block;opacity:0;transition:opacity .12s}
.pfi-root .wf-plan__alt:hover .wf-plan__altdot{background:var(--accent);border-color:var(--accent)}
.pfi-root .wf-plan__alt:hover .wf-plan__altdot svg{opacity:1}

/* ---- plan execution progress (inside the live run view) ---- */
.pfi-root .wf-prog{margin-top:10px;display:flex;flex-direction:column;gap:6px;padding:10px 11px;background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius)}
.pfi-root .wf-prog__row{display:flex;align-items:flex-start;gap:8px;font-size:12px;line-height:1.45;color:var(--muted);transition:color .2s var(--ease)}
.pfi-root .wf-prog__dot{flex:none;width:15px;height:15px;margin-top:1px;border-radius:50%;border:1.5px solid var(--well-line);box-sizing:border-box;display:flex;align-items:center;justify-content:center;color:#fff;background:transparent;transition:background .2s var(--ease),border-color .2s var(--ease)}
.pfi-root .wf-prog__dot svg{width:9px;height:9px;display:block;opacity:0;transition:opacity .18s var(--ease)}
.pfi-root .wf-prog__row.is-running{color:var(--text)}
.pfi-root .wf-prog__row.is-running .wf-prog__dot{border-color:var(--accent);animation:wf-blink 1.1s ease-in-out infinite}
.pfi-root .wf-prog__row.is-done{color:var(--label)}
.pfi-root .wf-prog__row.is-done .wf-prog__dot{background:var(--accent);border-color:var(--accent)}
.pfi-root .wf-prog__row.is-done .wf-prog__dot svg{opacity:1}
.pfi-root .wf-prog__tx{flex:1;min-width:0}

/* ============================================================
   build47: PLANNING WIDGET — the inspector's planning sibling.
   Same glass, opens to the LEFT, draggable header, hosts the
   ask → plan → proceed flow plus the saved-plan source picker.
   Entrance is transform-only so the blur never ramps.
   ============================================================ */
.wf-pw.pfi-root{position:fixed;z-index:8700;display:flex;flex-direction:column;max-height:min(620px,86vh);
  font-family:var(--pfi-family);color:var(--text);
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  box-shadow:var(--shadow),0 18px 48px rgba(40,56,48,.18);overflow:hidden;
  animation:wf-pw-in .26s var(--ease)}
@keyframes wf-pw-in{from{transform:translateY(8px) scale(.985)}to{transform:none}}
.pfi-root .wf-pw__head{flex:none;display:flex;align-items:center;gap:8px;padding:10px 9px 10px 12px;border-bottom:1px solid var(--divider);cursor:grab}
.pfi-root .wf-pw__head:active{cursor:grabbing}
.pfi-root .wf-pw__hdic{flex:none;display:flex;line-height:0;color:var(--accent)}
.pfi-root .wf-pw__hdic svg{width:15px;height:15px;display:block}
.pfi-root .wf-pw__title{flex:1;min-width:0;font-size:12.5px;font-weight:650;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-pw__src{flex:none;display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 8px 0 10px;max-width:130px;
  font:inherit;font-size:11.5px;font-weight:600;color:var(--label);background:rgba(255,255,255,.5);border:0;border-radius:8px;cursor:pointer;
  transition:background .14s,color .14s}
.pfi-root .wf-pw__src:hover,.pfi-root .wf-pw__src.is-open{background:rgba(255,255,255,.74);color:var(--label-hover)}
.pfi-root .wf-pw__src span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-pw__src svg{flex:none;width:11px;height:11px;color:var(--muted)}
.pfi-root .wf-pw__close{flex:none;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;transition:color .14s,background .14s}
.pfi-root .wf-pw__close svg{width:13px;height:13px;display:block}
.pfi-root .wf-pw__close:hover{color:var(--label-hover);background:rgba(255,255,255,.5)}
.pfi-root .wf-pw__body{flex:1;min-height:0;overflow-y:auto;padding:12px 12px 13px}
.pfi-root .wf-pw__body::-webkit-scrollbar{width:9px}
.pfi-root .wf-pw__body::-webkit-scrollbar-thumb{background:rgba(60,74,67,.18);border-radius:8px;border:2.5px solid transparent;background-clip:content-box}

/* ---- saved-plan entries in the History log ---- */
.pfi-root .s-plan .wf-hrun__dot{background:var(--accent)}
.pfi-root .wf-hrun__plansteps{margin:4px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:5px;font-size:12.5px;line-height:1.5;color:var(--text)}
.pfi-root .wf-hrun__plansteps li{padding-left:2px}
.pfi-root .wf-hrun__use{display:inline-flex;align-items:center;gap:7px;margin-top:10px;height:30px;padding:0 12px;
  font:inherit;font-size:12px;font-weight:560;color:#235740;background:rgba(92,154,126,.16);border:0;border-radius:8px;cursor:pointer;
  transition:background .14s,transform .12s var(--ease)}
.pfi-root .wf-hrun__use svg{width:13px;height:13px;display:block}
.pfi-root .wf-hrun__use:hover{background:rgba(92,154,126,.25)}
.pfi-root .wf-hrun__use:active{transform:translateY(1px)}
.pfi-root .wf-hrun__use.is-sel{background:rgba(92,154,126,.3);color:#1D4A36}
.pfi-root .wf-hrun__use.is-sel:hover{background:rgba(92,154,126,.36)}

/* ============================================================
   build50: plan ⇄ blocks (group mode) · step split/delete ·
   marked planning toggle
   ============================================================ */
/* group view: the chain, one tappable row per step block */
.pfi-root .wf-grp{display:flex;flex-direction:column;gap:7px}
.pfi-root .wf-grp__rowwrap{background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);
  border-radius:var(--radius);padding:3px 5px 3px 3px;transition:border-color .14s,background .14s}
.pfi-root .wf-grp__rowwrap:hover{border-color:var(--accent-line)}
.pfi-root .wf-grp__row{display:flex;align-items:center;gap:9px;width:100%;text-align:left;font:inherit;padding:6px 5px 6px 7px;cursor:pointer;
  background:none;border:0;box-shadow:none;border-radius:calc(var(--radius) - 3px);
  transition:background .14s}
.pfi-root .wf-grp__row:hover{background:rgba(92,154,126,.07)}
.pfi-root .wf-grp__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pfi-root .wf-grp__t{font-size:12.5px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-grp__sub{font-size:11.5px;line-height:1.4;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-grp__go{flex:none;display:flex;color:var(--muted);transform:rotate(-90deg)}
.pfi-root .wf-grp__go svg{width:13px;height:13px}
.pfi-root .wf-grp__row:hover .wf-grp__go{color:var(--accent)}
.pfi-root .wf-grp__merge{width:100%;margin-top:12px}
/* locked-settings note on a group block */
.pfi-root .wf-lockednote{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;font-size:12.5px;line-height:1.55;color:var(--label);
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius)}
.pfi-root .wf-lockednote svg{flex:none;width:16px;height:16px;color:var(--accent);margin-top:1px}
.pfi-root .wf-lockednote b{color:var(--text)}
/* step delete button leans danger on hover */
.pfi-root .wf-plan__cbtn--del:hover{color:var(--danger);background:rgba(184,84,80,.1);border-color:rgba(184,84,80,.3)}
/* the planning toggle wears its selected plan */
.pfi-root .wf-toggle.is-plansel input:checked + .wf-switch{background:#2C6A4D}
.pfi-root .wf-toggle__mark{display:flex;align-items:center;gap:5px;margin:3px 0 1px;font-style:normal;font-size:11px;font-weight:600;color:#2C6A4D}
.pfi-root .wf-toggle__mark svg{width:11px;height:11px;flex:none;fill:currentColor;fill-opacity:.2}

/* ============================================================
   build56: the STEP DIALOG — third glass window for discussing
   one step; selected-alternative state.
   ============================================================ */
.wf-sd.pfi-root{position:fixed;z-index:8800;display:flex;flex-direction:column;max-height:min(540px,82vh);
  font-family:var(--pfi-family);color:var(--text);
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  box-shadow:var(--shadow),0 18px 48px rgba(40,56,48,.18);overflow:hidden;
  animation:wf-pw-in .26s var(--ease)}
.pfi-root .wf-sd__head{flex:none;display:flex;align-items:center;gap:8px;padding:10px 9px 10px 12px;border-bottom:1px solid var(--divider);cursor:grab}
.pfi-root .wf-sd__head:active{cursor:grabbing}
.pfi-root .wf-sd__body{flex:1;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px}
.pfi-root .wf-sd__body::-webkit-scrollbar{width:9px}
.pfi-root .wf-sd__body::-webkit-scrollbar-thumb{background:rgba(60,74,67,.18);border-radius:8px;border:2.5px solid transparent;background-clip:content-box}
.pfi-root .wf-sd__quote{padding:9px 11px;font-size:12.5px;line-height:1.5;color:var(--label);
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius)}
.pfi-root .wf-sd__thread{display:flex;flex-direction:column;gap:6px}
.pfi-root .wf-sd__alts{display:flex;flex-direction:column;gap:6px}
.pfi-root .wf-plan__alt.is-sel{border-color:var(--accent-line);background:rgba(92,154,126,.08)}
.pfi-root .wf-plan__alt.is-sel .wf-plan__altdot{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px var(--surface)}
.pfi-root .wf-sd__inrow{display:flex;gap:7px;align-items:flex-end}
.pfi-root .wf-sd__in{flex:1;min-width:0;resize:none;font:inherit;font-size:12.5px;line-height:1.45;color:var(--text);
  background:var(--field-bg);border:1px solid var(--border);border-radius:9px;padding:7px 9px;outline:none}
.pfi-root .wf-sd__in:focus{border-color:var(--accent-line)}
.pfi-root .wf-sd__acts{flex:none;display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--divider)}
.pfi-root .wf-sd__acts .wf-btn--ok{flex:1}
.pfi-root .wf-btn[disabled]{opacity:.45;pointer-events:none}

/* build57: the saved plan's name is editable right in the header */
.pfi-root .wf-review__hdtx--name{outline:none;border-radius:6px;padding:1px 5px;margin-left:-5px;cursor:text;transition:background .14s,box-shadow .14s}
.pfi-root .wf-review__hdtx--name:hover{background:rgba(255,255,255,.5)}
.pfi-root .wf-review__hdtx--name:focus{background:rgba(255,255,255,.7);box-shadow:0 0 0 1.5px var(--accent-line)}

/* build58: the Plans manager rows */
.pfi-root .wf-plrs{display:flex;flex-direction:column;gap:8px}
.pfi-root .wf-plr{display:flex;align-items:center;gap:10px;padding:10px 11px;background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius)}
.pfi-root .wf-plr__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pfi-root .wf-plr__name{font-size:12.5px;font-weight:650;color:var(--text);outline:none;border-radius:6px;padding:1px 5px;margin-left:-5px;cursor:text;transition:background .14s,box-shadow .14s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-plr__name:hover{background:rgba(255,255,255,.5)}
.pfi-root .wf-plr__name:focus{background:rgba(255,255,255,.7);box-shadow:0 0 0 1.5px var(--accent-line)}
.pfi-root .wf-plr__meta{font-size:11px;color:var(--muted)}
.pfi-root .wf-plr__acts{flex:none;display:flex;gap:4px}
.pfi-root .wf-plr__btn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:0;border-radius:8px;background:rgba(255,255,255,.5);color:var(--label);cursor:pointer;transition:background .14s,color .14s}
.pfi-root .wf-plr__btn svg{width:13px;height:13px}
.pfi-root .wf-plr__btn:hover{background:rgba(255,255,255,.78);color:var(--label-hover)}
.pfi-root .wf-plr__btn.is-on{background:rgba(92,154,126,.2);color:#1F6E45}
.pfi-root .wf-plr__btn--del:hover{color:var(--danger);background:rgba(184,84,80,.1)}

/* build67: a group's Output tab stacks the steps' outputs */
.pfi-root .wf-out__steps{display:flex;flex-direction:column;gap:9px}
.pfi-root .wf-out__step{padding:9px 11px;background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius)}
.pfi-root .wf-out__steph{display:flex;align-items:center;gap:7px;margin-bottom:4px}
.pfi-root .wf-out__stepn{flex:none;width:17px;height:17px;display:flex;align-items:center;justify-content:center;font:700 10px ui-monospace,Menlo,monospace;color:#5D7466;background:rgba(255,255,255,.65);border:1px solid var(--well-line);border-radius:6px}
.pfi-root .wf-out__stept{font-size:11.5px;font-weight:650;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pfi-root .wf-out__stepx{font-size:12px;line-height:1.5;color:var(--label)}

/* build80: each plan step row carries a quiet detach control */
.pfi-root .wf-grp__rowwrap{display:flex;flex-wrap:wrap;align-items:stretch;gap:6px}
.pfi-root .wf-grp__rowwrap .wf-grp__row{flex:1;min-width:0}
.pfi-root .wf-grp__detach{flex:none;align-self:center;opacity:.45}
.pfi-root .wf-grp__rowwrap:hover .wf-grp__detach{opacity:1}

/* ===== nested plans (merge dialog + sub-steps) ===== */
/* the flatten tick in the merge confirm */
.pfi-root .wf-modal__check{ display:flex; align-items:flex-start; gap:9px; margin-top:12px;
  font:500 12.5px/1.45 "Inter",system-ui,sans-serif; color:var(--ink-soft,#5C6660);
  cursor:pointer; user-select:none; }
.pfi-root .wf-modal__check input{ appearance:none; -webkit-appearance:none; flex:0 0 auto;
  width:16px; height:16px; margin-top:1px; border-radius:5px; cursor:pointer;
  background:var(--well,#E4E9E4);
  box-shadow:inset 0 1px 2px rgba(40,52,44,.14), inset 0 -1px 0 rgba(255,255,255,.55);
  transition:background .16s ease, box-shadow .16s ease; }
.pfi-root .wf-modal__check input:checked{ background:var(--accent,#3C7A5B);
  box-shadow:inset 0 1px 2px rgba(28,44,34,.32); }
.pfi-root .wf-modal__check input:checked::after{ content:""; display:block; width:9px; height:5px;
  margin:4px auto 0; border-left:2px solid #F2F5F2; border-bottom:2px solid #F2F5F2;
  transform:rotate(-45deg); }
.pfi-root .wf-modal__check input:disabled{ opacity:.45; cursor:default; }
.pfi-root .wf-modal__check input:disabled + span{ opacity:.55; }

/* the plan strip under the Prompt field: goal above, decomposition below */
.pfi-root .wf-planstrip{ display:flex; flex-wrap:wrap; align-items:center; gap:9px; margin-top:9px; padding:9px 12px;
  border-radius:10px; background:var(--well,#E4E9E4);
  box-shadow:inset 0 1px 2px rgba(40,52,44,.10), inset 0 -1px 0 rgba(255,255,255,.5); }
.pfi-root .wf-planstrip > svg{ flex:0 0 auto; width:14px; height:14px; color:var(--accent,#3C7A5B); }
.pfi-root .wf-planstrip__t{ flex:1; min-width:0; font:600 11.5px/1.3 "Inter",system-ui,sans-serif;
  color:var(--ink-soft,#5C6660); }
.pfi-root .wf-planstrip__btn{ flex:0 0 auto; padding:5px 11px; border:0; border-radius:8px;
  background:transparent; color:var(--accent,#3C7A5B); cursor:pointer;
  font:700 11px/1 "Inter",system-ui,sans-serif; transition:background .15s ease; }
.pfi-root .wf-planstrip__btn:hover{ background:rgba(60,122,91,.12); }


/* ===== sub-plans v3: one-line disclosure, threaded list ===== */
.pfi-root .wf-plan__subs{ margin:5px 0 3px -30px; padding:2px 0 3px 6px; border-radius:0;
  background:transparent; box-shadow:none;
  border-left:2px solid rgba(60,122,91,.17); }
.pfi-root .wf-plan__subs.is-folded{ margin:4px 0 1px -30px; padding:1px 0 1px 6px; border-left-color:rgba(60,122,91,.10); }
.pfi-root .wf-plan__subs .wf-plan__subs{ margin:3px 0 1px 15px; padding:1px 0 1px 6px; border-radius:0;
  background:none; box-shadow:none; border-left:2px solid rgba(60,122,91,.14); }
.pfi-root .wf-plan__subs .wf-plan__subs.is-folded{ border-left-color:rgba(60,122,91,.08); }
.pfi-root .wf-plan__subtog{ display:inline-flex; align-items:center; gap:5px; max-width:100%;
  padding:2px 6px 2px 2px; margin-left:-2px; border:0; border-radius:6px; background:transparent;
  color:rgba(60,90,72,.6); cursor:pointer; white-space:nowrap;
  font:600 10px/1 "Inter",system-ui,sans-serif; transition:background .15s ease, color .15s ease; }
.pfi-root .wf-plan__subtog:hover{ background:rgba(60,122,91,.09); color:var(--accent,#3C7A5B); }
.pfi-root .wf-plan__subcar{ display:flex; flex:0 0 auto; }
.pfi-root .wf-plan__subcar svg{ width:10px; height:10px; transition:transform .18s ease; }
.pfi-root .wf-plan__subs.is-folded .wf-plan__subcar svg{ transform:rotate(-90deg); }
.pfi-root .wf-plan__sublist{ margin:1px 0 0; }
/* notes inherited from the steps above: read-only, quiet, clearly not editable */
.pfi-root .wf-plan__inh{ margin:1px 0 5px; padding:5px 8px; border-radius:8px;
  background:rgba(92,102,96,.055); border:1px dashed rgba(92,102,96,.22); }
.pfi-root .wf-plan__inh-cap{ display:block; margin-bottom:2px;
  font:700 8px/1.4 "JetBrains Mono",ui-monospace,monospace; letter-spacing:.06em; text-transform:uppercase; color:rgba(92,102,96,.55); }
.pfi-root .wf-plan__inh-row{ display:flex; gap:6px; align-items:baseline; padding:1px 0; min-width:0; }
.pfi-root .wf-plan__inh-n{ flex:0 0 auto; padding:0 4px; border-radius:3px; background:rgba(92,102,96,.10);
  font:700 7.5px/14px "JetBrains Mono",ui-monospace,monospace; color:rgba(92,102,96,.6); }
.pfi-root .wf-plan__inh-t{ min-width:0; font:italic 500 11px/1.45 "Inter",system-ui,sans-serif; color:rgba(92,102,96,.72);
  overflow-wrap:break-word; word-break:break-word; }
/* ---- reordering: grip, arrows, drop line ---- */
.pfi-root .wf-plan__grip{ flex:0 0 auto; display:flex; align-items:center; justify-content:center;
  width:11px; align-self:stretch; margin:0 -3px 0 -6px; color:transparent; cursor:grab; touch-action:none; }
.pfi-root .wf-plan__step:hover>.wf-plan__grip, .pfi-root .wf-plan__sub:hover>.wf-plan__grip{ color:rgba(92,102,96,.42); }
.pfi-root .wf-plan__grip:hover{ color:rgba(92,102,96,.7)!important; }
.pfi-root .wf-plan__grip:active{ cursor:grabbing; }
.pfi-root .wf-plan__grip svg{ width:7px; height:13px; fill:currentColor; }
.pfi-root .wf-plan__step.is-dragrow, .pfi-root .wf-plan__sub.is-dragrow{ opacity:.35; }
body.wf-rowdrag{ user-select:none; cursor:grabbing; }
body.wf-rowdrag .pfi-root .wf-plan__tx, body.wf-rowdrag .pfi-root .wf-plan__subtx{ pointer-events:none; }
.pfi-root .wf-plan__dropline{ height:2px; border-radius:1px; margin:1px 8px;
  background:var(--accent,#3C7A5B); box-shadow:0 0 0 1px rgba(60,122,91,.14); }
.pfi-root .wf-plan__cbtn--up svg{ transform:rotate(180deg); }
.pfi-root .wf-plan__cbtn:disabled{ opacity:.25; pointer-events:none; }
.pfi-root .wf-plan__sub{ position:relative; display:flex; align-items:flex-start; gap:0; padding:2.5px 0 2.5px 27px; }
.pfi-root .wf-plan__subn{ position:absolute; left:0; top:2px; flex:0 0 auto; padding:0 5px; height:17px; border-radius:5px;
  background:rgba(60,122,91,.11); color:rgba(44,106,77,.9); cursor:grab; touch-action:none;
  font:700 9.5px/17px "JetBrains Mono",ui-monospace,monospace; }
.pfi-root .wf-plan__subn:hover{ background:rgba(60,122,91,.17); }
.pfi-root .wf-plan__subn:active{ cursor:grabbing; }
.pfi-root .wf-plan__subtx{ flex:1; min-width:0; min-height:19px; padding:1px 5px; border-radius:6px;
  font:500 12px/1.5 "Inter",system-ui,sans-serif; color:var(--ink,#33403A);
  outline:none; cursor:text; transition:background .15s ease, box-shadow .15s ease; }
.pfi-root .wf-plan__subtx:hover{ background:rgba(255,255,255,.55); }
.pfi-root .wf-plan__subtx:focus{ background:rgba(255,255,255,.85);
  box-shadow:inset 0 1px 2px rgba(40,52,44,.10); }
.pfi-root .wf-plan__subtx:empty::before{ content:attr(data-ph); color:rgba(92,102,96,.45); }
.pfi-root .wf-plan__subbtns{ position:absolute; top:-2px; right:-1px; display:flex; gap:1px; padding:2px;
  background:rgba(247,250,247,.94); border-radius:8px; box-shadow:0 1px 5px rgba(40,52,44,.12);
  opacity:0; pointer-events:none; transition:opacity .14s ease; }
.pfi-root .wf-plan__sub:hover .wf-plan__subbtns{ opacity:1; pointer-events:auto; }

.pfi-root .wf-plan__subadd{ display:flex; align-items:center; gap:5px; margin:2px 0 1px -2px;
  padding:3px 8px 3px 2px; border:0; border-radius:6px; background:transparent;
  color:rgba(60,90,72,.46); cursor:pointer; white-space:nowrap;
  font:600 10px/1 "Inter",system-ui,sans-serif; transition:color .15s ease; }
.pfi-root .wf-plan__subadd:hover{ color:var(--accent,#3C7A5B); }
.pfi-root .wf-plan__subadd svg{ width:9px; height:9px; }

/* the group card's plan tree: threaded under the step it belongs to */
.pfi-root .wf-grp__plan{ flex-basis:100%; min-width:0; position:relative; margin:3px 6px 6px 17px; padding-left:14px; }
.pfi-root .wf-grp__plan::before{ content:""; position:absolute; left:0; top:3px; bottom:3px;
  width:2px; border-radius:2px; background:rgba(60,122,91,.16); }
.pfi-root .wf-grp__plan .wf-grp__plan{ margin:1px 0 1px 7px; }
.pfi-root .wf-grp__pstep{ display:flex; align-items:baseline; gap:8px; padding:2.5px 0; min-width:0; }
.pfi-root .wf-grp__pn{ flex:0 0 auto; padding:0 5px; height:15px; border-radius:4px;
  background:rgba(60,122,91,.10); color:rgba(44,106,77,.85);
  font:700 8.5px/15px "JetBrains Mono",ui-monospace,monospace; }
.pfi-root .wf-grp__pt{ min-width:0; flex:1 1 auto; font:500 11.5px/1.45 "Inter",system-ui,sans-serif;
  color:var(--ink-soft,#5C6660); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pfi-root .wf-sec__hint{ font:600 10px/1 "JetBrains Mono",ui-monospace,monospace; color:rgba(92,102,96,.55); }

/* the strip's second line: what the objective IS once steps exist */
.pfi-root .wf-planstrip__hint{ flex-basis:100%; margin:1px 0 0 23px;
  font:500 10.5px/1.45 "Inter",system-ui,sans-serif; color:rgba(92,102,96,.72); }

/* compact objective: small by default, scrolls when the text grows */
.pfi-root .wf-sec--field .wf-textarea--obj{min-height:46px;max-height:160px;overflow-y:auto;field-sizing:content}   /* ROUND 39: grows with its text up to 160 px (it sat at the 46 px floor) */
/* ROUND 36 (owner 2026-10-23, "a small layout mess"): a field's textarea that overflows
   (the compact Objective box above, a long prompt) scrolls with the panel's own thin bar,
   never the browser's arrowed one, and keeps a gutter so the text never sits under the bar */
.pfi-root .wf-sec--field .wf-textarea{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent;scrollbar-gutter:stable;padding-right:6px}
.pfi-root .wf-sec--field .wf-textarea::-webkit-scrollbar{width:5px}
.pfi-root .wf-sec--field .wf-textarea::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}
.pfi-root .wf-sec--field .wf-textarea::-webkit-scrollbar-track{background:transparent}
/* the on-block step note shares the prompt's borderless look, just shorter */
.pfi-root .wf-sec--field .wf-textarea--note{background:transparent;border:0;box-shadow:none;padding:2px 0 0;min-height:42px;max-height:120px;overflow-y:auto;resize:none}
.pfi-root .wf-sec--field .wf-textarea--note:focus{background:transparent;border:0;box-shadow:none}
.pfi-root .wf-sec--field .wf-textarea--note::placeholder{color:var(--muted)}

/* per-row plan disclosure in the group panel: one quiet line, tree on demand */
.pfi-root .wf-grp__plantog{flex-basis:100%;display:flex;align-items:center;gap:6px;margin:0 4px 2px 13px;
  padding:3px 8px 3px 2px;border:0;border-radius:7px;background:transparent;
  color:rgba(60,90,72,.66);cursor:pointer;white-space:nowrap;
  font:600 10.5px/1 "Inter",system-ui,sans-serif;transition:background .15s ease,color .15s ease}
.pfi-root .wf-grp__plantog:hover{background:rgba(60,122,91,.09);color:var(--accent,#3C7A5B)}
.pfi-root .wf-grp__plancar{display:flex;flex:0 0 auto}
.pfi-root .wf-grp__plantog svg{width:10px;height:10px;transform:rotate(-90deg);transition:transform .18s ease}
.pfi-root .wf-grp__plantog.is-open svg{transform:rotate(0deg)}

/* sub-step notes mirror the step note: hidden until commenting or filled */
.pfi-root .wf-plan__sub{flex-wrap:wrap}
.pfi-root .wf-plan__subnote-wrap{flex-basis:100%;display:none;margin:1px 0 2px}
.pfi-root .wf-plan__sub.has-note .wf-plan__subnote-wrap,.pfi-root .wf-plan__sub.is-commenting .wf-plan__subnote-wrap{display:block}
.pfi-root .wf-plan__subnote{width:100%;box-sizing:border-box;resize:none;overflow:hidden;min-height:26px;padding:4px 7px;
  border:0;border-radius:7px;background:rgba(255,255,255,.6);box-shadow:inset 0 1px 2px rgba(40,52,44,.08);
  font:500 11px/1.5 "Inter",system-ui,sans-serif;color:var(--ink-soft,#5C6660);outline:none}
.pfi-root .wf-plan__subnote:focus{background:rgba(255,255,255,.9)}
.pfi-root .wf-plan__subnote::placeholder{color:rgba(92,102,96,.45)}
.pfi-root .wf-plan__sub.is-commenting .wf-plan__cbtn,.pfi-root .wf-plan__sub.has-note .wf-plan__cbtn{color:var(--accent)}

/* folder-in-folder action hints */
.pfi-root .wf-grp__help{ margin-top:10px; display:flex; flex-direction:column; gap:7px; }
.pfi-root .wf-grp__help .wf-hint{ margin:0; }
.pfi-root .wf-hint--plan{ margin-top:10px; }
.pfi-root .wf-hint b{ color:var(--wf-ink, #1b2b22); font-weight:600; }

/* ============================================================
   build113: plan-in-advance - footer entry, plan mode, run gate
   ============================================================ */
/* the planning entry sits on its own full-width row under the run row,
   so "Run the plan" and "Start planning / View plan" never crowd */
.pfi-root .wf-insp__foot>.wf-btn--planrow{width:100%;justify-content:center;min-width:0;overflow:hidden}
.pfi-root .wf-insp__foot>.wf-btn--planrow.is-on{color:var(--accent);background:rgba(92,154,126,.14)}
/* the run-gate warning: the list of blocks that still need a plan */
.pfi-root .wf-modal__list{margin:8px 0 2px;padding-left:18px}
.pfi-root .wf-modal__list li{margin:3px 0}

/* the plan name is editable from the FIRST review - name it, then save or
   approve; the name rides along (no more save-first-then-rename) */
.pfi-root .wf-review__hdtx--name{user-select:text;-webkit-user-select:text;cursor:text;min-width:40px;max-width:62%;white-space:nowrap;overflow:hidden;border-radius:6px;padding:1px 5px;margin:-1px 0}
.pfi-root .wf-review__hdtx--name:focus{outline:none;box-shadow:0 0 0 2px var(--accent);background:var(--surface)}
.pfi-root .wf-review__hdhint{font-size:11px;color:var(--muted);flex:none}

/* the permanent Undo pill: hidden until the first reversible action, lit
   while there is something to reverse, muted once memory is exhausted */
.wf-undopill.pfi-root{position:fixed;left:16px;bottom:16px;z-index:8600;display:flex;align-items:center;gap:7px;height:34px;padding:0 13px;
  font-family:var(--pfi-family);font-size:12px;font-weight:600;color:var(--label);
  background:var(--surface);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow);cursor:pointer;
  transition:background .12s,color .12s,opacity .18s}
.wf-undopill.pfi-root svg{width:15px;height:15px;display:block}
.wf-undopill.pfi-root:hover{background:var(--row-hover);color:var(--label-hover)}
.wf-undopill.pfi-root.is-muted{opacity:.45;cursor:default}
.wf-undopill.pfi-root.is-muted:hover{background:var(--surface);color:var(--label)}

/* group-aware execution view: the framed step chain inside a group card */
.pfi-root .wf-exec__group{margin-top:10px;display:flex;flex-direction:column;border:1px solid var(--well-line);border-radius:10px;background:var(--surface);padding:8px 9px}
.pfi-root .wf-exec__io{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted);padding:3px 3px}
.pfi-root .wf-exec__io svg{width:12px;height:12px;flex:none;opacity:.65}
.pfi-root .wf-exec__io b{color:var(--text);font-weight:600}
.pfi-root .wf-exec__step{display:flex;align-items:center;gap:9px;width:100%;padding:7px 8px;border:1px solid transparent;border-radius:9px;background:none;font:inherit;text-align:left;cursor:pointer;transition:background .12s,border-color .12s}
.pfi-root .wf-exec__step:hover{background:var(--row-hover);border-color:var(--well-line)}
.pfi-root .wf-exec__step .wf-status{gap:0}
.pfi-root .wf-exec__stepname{flex:1;min-width:0;font-size:12.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-exec__stepword{font-size:10.5px;color:var(--muted)}
.pfi-root .wf-exec__hand{align-self:flex-start;margin-left:19px;width:1px;height:11px;background:var(--well-line);position:relative}
.pfi-root .wf-exec__hand::after{content:"";position:absolute;left:-3px;bottom:-1px;border-left:3.5px solid transparent;border-right:3.5px solid transparent;border-top:4px solid var(--well-line)}
.pfi-root .wf-exec__bar--step{margin:2px 8px 4px}
.pfi-root .wf-exec__group .wf-exec__node{margin:2px 0}

/* =====================================================================
   ROUND 13 (track V) — THE RUN LOCK IN THE PANEL. planflow-inspector.js
   lockNoteHtml / applyRunLock: a run-locked block's Details and Settings
   open with this note and every field disabled; the footer's edit actions
   are disabled buttons. Appended at the end on purpose.
   ===================================================================== */
.pfi-root .wf-lock{
  display:flex; gap:8px; align-items:flex-start; margin:6px 2px 8px; padding:8px 10px;
  border:1px dashed rgba(110,128,119,.45); border-radius:9px; background:rgba(110,128,119,.08);
  color:var(--muted,#6E8077); font-size:11px; line-height:1.5;
}
.pfi-root .wf-lock svg{ width:14px; height:14px; flex:none; margin-top:2px; }
.pfi-root .is-run-locked .wf-insp__scroll [data-field][disabled],
.pfi-root .is-run-locked .wf-insp__scroll .wf-csel__btn[disabled],
.pfi-root .is-run-locked .wf-insp__scroll [data-field][contenteditable="false"]{ opacity:.68; cursor:not-allowed; }
.pfi-root .is-run-locked .wf-insp__foot .wf-btn[disabled]{ opacity:.5; cursor:not-allowed; }

/* ============================================================
   E-13 (2026-10-16): the planner is the backend — the planning
   window's head control row (the planning model, the step cap), the
   wait and the refusal, the step's PROMPT row under its title, the
   proposal's summary and cost line, the step dialog's alternatives
   as title + prompt. The panel's own language: the tokens above, the
   app face, no new colours. The model picker is a native <select>
   (the contract's control) dressed as the panel's fields.
   ============================================================ */
.pfi-root .wf-pw__ctl{flex:none;display:flex;align-items:flex-end;gap:8px;padding:8px 12px 9px;border-bottom:1px solid var(--divider);background:var(--well-bg)}
.pfi-root .wf-pw__ctlf{display:flex;flex-direction:column;gap:3px;min-width:0;margin:0}
.pfi-root .wf-pw__ctlf--model{flex:1}
.pfi-root .wf-pw__ctlf--max{flex:none;width:112px}
.pfi-root .wf-pw__ctll{font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.pfi-root .wf-pw__sel,.pfi-root .wf-pw__num{width:100%;box-sizing:border-box;height:28px;margin:0;font:inherit;font-size:12px;line-height:1.2;color:var(--text);
  background:var(--field-bg);border:1px solid var(--border);border-radius:7px;padding:0 7px;outline:0;transition:border-color .14s,box-shadow .14s}
.pfi-root .wf-pw__sel{cursor:pointer;text-overflow:ellipsis}
.pfi-root .wf-pw__sel:focus,.pfi-root .wf-pw__num:focus{border-color:var(--field-bd-focus);box-shadow:0 0 0 3px var(--focus-ring)}
.pfi-root .wf-pw__num::placeholder{color:var(--muted)}
.pfi-root .wf-pw__num::-webkit-inner-spin-button{opacity:.6}
.pfi-root .wf-ask__wait{display:flex;align-items:center;gap:8px;padding:9px 11px;font-size:12.5px;line-height:1.45;color:var(--label);
  background:var(--well-bg);border:1px solid var(--well-line);box-shadow:var(--well-shadow);border-radius:var(--radius)}
.pfi-root .wf-ask__wait .wf-status{display:flex;line-height:0}
.pfi-root .wf-plan__wait{margin:-2px 0 10px}
.pfi-root .wf-ask__err{display:flex;align-items:flex-start;gap:8px;padding:9px 11px;font-size:12.5px;line-height:1.5;color:var(--danger);
  background:rgba(184,84,80,.07);border:1px solid rgba(184,84,80,.28);border-radius:var(--radius);word-break:break-word}
.pfi-root .wf-ask__err svg{flex:none;width:15px;height:15px;margin-top:1px}
.pfi-root .wf-plan__pr{margin-top:3px;font-size:12px;line-height:1.5;color:var(--label);white-space:pre-wrap;outline:none;border-radius:4px;padding:1px 3px;cursor:text;word-break:break-word}
.pfi-root .wf-plan__pr:focus{box-shadow:0 0 0 2px rgba(92,154,126,.18);color:var(--text)}
.pfi-root .wf-plan__pr:empty::before{content:attr(data-ph);color:var(--muted);font-style:italic}
.pfi-root .wf-plan__pr--sub{font-size:11.5px;margin-top:2px}
.pfi-root .wf-plan__cost{margin:-4px 0 9px;font-size:11.5px;line-height:1.4;color:var(--muted)}
.pfi-root .wf-plan__sum{margin:-2px 0 10px;font-size:12.5px;line-height:1.5;color:var(--label)}
.pfi-root .wf-sd__quote{display:flex;flex-direction:column;gap:3px}
.pfi-root .wf-sd__quotet{font-weight:600;color:var(--text)}
.pfi-root .wf-sd__quotep{white-space:pre-wrap;word-break:break-word}
.pfi-root .wf-plan__altbody{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.pfi-root .wf-plan__altt{font-size:11.5px;font-weight:600;color:var(--label)}
.pfi-root .wf-plan__altp{white-space:pre-wrap;word-break:break-word}
/* The plan's actions stay in reach: with the planner's prompts under every
   step (and a note open) the plan outgrows the window, and Build-113's
   actions scrolled away with it. They now hold the bottom of the scrolling
   body (sticky) until the user reaches their natural place; same buttons,
   same order, the window's own sticky tone. */
.pfi-root .wf-pw__body .wf-review--plan .wf-review__acts{position:sticky;bottom:-13px;z-index:2;margin:0 -12px -13px;padding:10px 12px 13px;
  background:var(--sticky-bg);border-top:1px solid var(--divider)}

/* ROUND 41 (E-15): a plan step's file choices on its Files tab */
.pfi-root .wf-sec--pick{margin-bottom:10px}
.pfi-root .wf-file--pick{cursor:pointer;gap:8px}
.pfi-root .wf-file--pick .wf-pick{width:15px;height:15px;margin:0 2px 0 0;flex:none;accent-color:var(--cta,#2C6A4D);cursor:pointer}
.pfi-root .wf-file__from{font-size:11px;color:var(--muted);margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42%}

/* ---------- ROUND 43: the Smart settings window + the chat's new head ---------- */
.wf-ss.pfi-root{position:fixed;z-index:8800;display:flex;flex-direction:column;max-height:min(600px,84vh);
  font-family:var(--pfi-family);color:var(--text);border-radius:var(--radius-lg);
  animation:wf-cw-in .2s var(--ease)}
.pfi-root .wf-ss__head,.pfi-root .wf-cw__head{flex:none;display:flex;align-items:center;gap:10px;padding:10px 10px 10px 12px;border-bottom:1px solid var(--divider);cursor:grab}
.pfi-root .wf-ss__head:active,.pfi-root .wf-cw__head:active{cursor:grabbing}
.pfi-root .wf-ss__badge,.pfi-root .wf-cw__badge{flex:none;width:36px;height:36px;display:block}
.pfi-root .wf-ss__badge svg,.pfi-root .wf-cw__badge svg{width:36px;height:36px;display:block}
.pfi-root .wf-ss__titles,.pfi-root .wf-cw__title{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px}
.pfi-root .wf-ss__title,.pfi-root .wf-cw__name{display:block;max-width:100%;font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfi-root .wf-ss__sub,.pfi-root .wf-cw__sub{display:block;max-width:100%;font-size:11px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* round 54: the body, the tokens and the foot are ruled at the end of the sheet */
.pfi-root .is-ss-hit{outline:2px solid var(--accent);outline-offset:3px;border-radius:9px;transition:outline-color .3s}
/* round 44 (stage B): a token's choices in the panel's popover - a title row, sentence sub-lines, a last "Open on the panel" row */
.wf-pop--ss.pfi-root{max-height:min(420px,70vh)}
.pfi-root .wf-pop__hd{padding:5px 9px 6px;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#6B7A73}
.wf-pop--ss.pfi-root .wf-pop__opt{align-items:flex-start;padding:7px 9px}
.wf-pop--ss.pfi-root .wf-pop__opt .lb{display:flex;flex-direction:column;gap:2px;white-space:normal}
.wf-pop--ss.pfi-root .wf-pop__opt .lb b{font-size:13px;font-weight:600;line-height:1.15}
.wf-pop--ss.pfi-root .wf-pop__opt .lb small{font-size:11.5px;color:#6B7A73;line-height:1.3}
.wf-pop--ss.pfi-root .wf-pop__opt .ck{align-self:center}
.pfi-root .wf-pop__opt--act{margin-top:4px;border-top:1px solid rgba(60,74,67,.12);border-radius:0 0 8px 8px;color:var(--pop-acc);font-weight:500}
.pfi-root .wf-pop__opt--act .lb{white-space:nowrap}
.pfi-root .wf-pop__opt--act .ck{display:none}

/* ROUND 51 / ROUND 54: both windows wear the panel's own glass - the SAME two layers as .wf-insp, token
   for token (::before: the blur and the shadow over the full rounded rect; ::after: the surface tint and
   the border, the badge's notch carved from it). Round 54 (the owner: "the blocks behind are more
   visible ... maybe a back layer is missing"): the Smart window was not in the token list at the top of
   this sheet, so --blur, --shadow and --border were undefined on it - no blur layer at all, whatever
   tint it wore; it is in the list now, and both windows take the panel's --surface tint instead of a
   tint of their own, so the three boxes are one glass. */
.wf-ss.pfi-root::before,.wf-cw.pfi-root::before{content:"";position:absolute;inset:0;z-index:-2;border-radius:var(--radius-lg);
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);box-shadow:var(--shadow)}
.wf-ss.pfi-root::after,.wf-cw.pfi-root::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:var(--radius-lg);
  background-color:var(--surface);border:1px solid var(--border);
  -webkit-mask:url(#wf-insp-notch);mask:url(#wf-insp-notch)}
.pfi-root .wf-ss__badge,.pfi-root .wf-cw__badge{position:absolute;top:7px;left:6px;width:44px;height:44px;z-index:2;display:flex;align-items:center;justify-content:center;pointer-events:none}
.pfi-root .wf-ss__badge svg,.pfi-root .wf-cw__badge svg{width:44px;height:44px;display:block}
.pfi-root .wf-ss__head,.pfi-root .wf-cw__head{min-height:56px;padding:8px 10px 10px 64px;align-items:flex-start}
.pfi-root .wf-ss__titles,.pfi-root .wf-cw__title{padding-top:3px}
.pfi-root .wf-ss__tools{flex:none;display:flex;align-items:center;gap:2px;margin-top:-1px}
.pfi-root .wf-ss__tools .wf-iconbtn{width:28px;height:28px}
.pfi-root .wf-ss__tools .wf-iconbtn.is-on{color:var(--accent);background:var(--row-hover)}
/* ROUND 54: the description is TEXT again (the owner: "a text description like before, but nicer") - a
   section heading in the panel's style, then one short sentence per line; every phrase that depends on
   a setting is a LINK-like word (no box, no chevron: a dotted accent underline, solid on hover), so the
   lines keep the rhythm of plain text. The same text, as plain text, is what Copy carries and what
   Paste reads back. */
.pfi-root .wf-ss__body{flex:1;min-height:60px;overflow-y:auto;padding:8px 16px 4px;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}
.pfi-root .wf-ss__sec{margin:0 0 12px;padding:0 0 10px;border-bottom:1px solid var(--divider)}
.pfi-root .wf-ss__sec:last-child{border-bottom:0;margin-bottom:6px}
.pfi-root .wf-ss__h{display:block;color:var(--label);font-size:11px;letter-spacing:.07em;font-weight:600;text-transform:uppercase;padding:0 0 5px}
.pfi-root .wf-ss__p{margin:0;padding:2px 0;font-size:13.5px;line-height:1.5;color:var(--text)}
.pfi-root .wf-ss__p b{font-weight:600}
.pfi-root .wf-ss__p--q{font-style:italic;color:var(--label);padding:2px 0 2px 10px;border-left:2px solid var(--accent-line);margin:2px 0 4px;white-space:pre-wrap;overflow-wrap:anywhere}
.pfi-root .wf-ss__p--m{color:var(--muted);font-size:12.5px}
.pfi-root .wf-ss__tok{display:inline;padding:0 1px;margin:0;font-weight:600;color:var(--label-hover);background:none;border:0;border-radius:3px;box-shadow:none;cursor:pointer;
  text-decoration:underline;text-decoration-style:dotted;text-decoration-color:var(--accent);text-decoration-thickness:1.5px;text-underline-offset:3px;transition:background .12s var(--ease)}
.pfi-root .wf-ss__tok:hover,.pfi-root .wf-ss__tok:focus-visible{background:rgba(92,154,126,.14);text-decoration-style:solid;outline:none}
.pfi-root .wf-ss__tok--jump{text-decoration-color:var(--accent-line)}
.pfi-root .wf-ss__foot{flex:none;padding:8px 16px 10px;border-top:1px solid var(--divider);font-size:11.5px;color:var(--muted);line-height:1.45}
/* the paste box (round 54): the chat's compose row under the text; the proposal card is the chat's */
.wf-ss.pfi-root .wf-compose{padding:10px 12px;margin:0;border-top:1px solid var(--divider)}
.wf-ss.pfi-root .wf-compose__in{min-height:58px;max-height:160px}
.wf-ss.pfi-root .wf-cw__patch{margin:6px 0 10px}


/* ---- round 65 (the owner 6.6): a result made before a setting changed ---- */
.pfi-root .wf-out__stale{display:flex;align-items:flex-start;gap:8px;margin:6px 0 10px;padding:8px 10px;border-radius:10px;background:var(--well,rgba(0,0,0,.04));color:var(--ink-2,#5b5f66);font-size:12px;line-height:1.4}
.pfi-root .wf-out__stale svg{width:14px;height:14px;flex:0 0 auto;margin-top:1px;opacity:.8}
