/* widgets/alfred-board — scoped .abw- styles for the Alfred Build Board & Docket popout.
   Linked from index.html <head>; no other stylesheet touches .abw-. */
.abw-sec{border:1px solid #f0ede3;border-radius:12px;background:#fff;margin:0 0 12px;overflow:hidden}
.abw-shead{display:flex;align-items:center;gap:8px;padding:9px 12px;background:#f7f6f0;font:700 var(--fs-label,11px) Inter;letter-spacing:.08em;text-transform:uppercase;color:#6b7669}
.abw-scount{font:700 10px Inter;letter-spacing:0;background:#e7e2d4;color:#5b6b5e;border-radius:99px;padding:1px 7px}
.abw-scap{margin-left:auto;font:400 10.5px Inter;letter-spacing:0;text-transform:none;color:#9aa39b}
/* COURT SPLIT headers (Craig 7/19 4:10p) — a bolder banner than the type-group .abw-shead: 'Your
   court' carries the gold accent (it's Craig's), 'Marianne & Sergio' stays quiet slate (their ball,
   never alarm ink). The nested .abw-shead type groups sit inside 'Your court'. */
.abw-courthead{display:flex;align-items:center;gap:8px;padding:11px 13px;font:800 var(--fs-label,11px) Inter;letter-spacing:.09em;text-transform:uppercase}
.abw-court-craig .abw-courthead,.abw-courthead.abw-court-craig{background:#fbf3df;color:#8a5a0f;border-left:4px solid #e0a92e}
.abw-courthead.abw-court-team{background:#eef1f4;color:#55636f;border-left:4px solid #c9d0d8}
.abw-courthead .abw-scount{color:#3a2b05}
.abw-court-team .abw-scount{color:#3f4a55}
.abw-court-craig{margin-bottom:0}
/* team-court rows — quiet, inert (a teammate's ball; Craig acts on nothing here) */
.abw-team-row{background:#fbfcfd}
.abw-teamchip{background:#e3e8ee;color:#4a5763}
.abw-tcount{font:700 10px Inter;color:#8a5a0f;background:#f7ecd0;border-radius:99px;padding:0 6px;margin-left:4px}
.abw-row{border-top:1px solid #f0ede3;padding:9px 12px;cursor:default}
/* CLICK AFFORDANCE (Craig 7/16: "are all of these buttons clickable?") — only rows that
   actually go somewhere get pointer + hover + chevron; everything else stays inert. */
.abw-row.abw-click{cursor:pointer}
.abw-row.abw-click:hover{background:#f2f6f2}
.abw-row.abw-click:focus-visible{outline:2px solid var(--brand-mid,#306844);outline-offset:-2px}
/* THE LANDING (Craig 7/27): a Court Strip row opens The Study ON its item — abOpenNeedsAt
   scrolls that row to center and marks it, so Craig can see WHICH row he arrived at in a room
   that may hold twenty. One calm gold pulse that fades, the strip's own glow vocabulary; never
   a persistent highlight, which would read as a state the item is in rather than where he is. */
.abw-row.abw-nu-land{animation:abNuLand 1.9s ease-out 1}
@keyframes abNuLand{0%{background:#fdf3da;box-shadow:inset 3px 0 0 var(--motm-warning,#b87a14)}
  70%{background:#fdf8ea;box-shadow:inset 3px 0 0 var(--motm-warning,#b87a14)}
  100%{background:transparent;box-shadow:inset 3px 0 0 rgba(184,122,20,0)}}
@media (prefers-reduced-motion:reduce){
  .abw-row.abw-nu-land{animation:none;background:#fdf8ea;box-shadow:inset 3px 0 0 var(--motm-warning,#b87a14)} }
/* abOpenCardAt's landing mark (Craig 7/30, COMING UP's OWED band deep-links). Same gold vocabulary,
   but STATIC and re-applied for ~2s: the Rulings record rebuilds its row nodes on its own cadence,
   so the one-shot keyframe above is wiped within ~200ms on that path, and a keyframe restarted on
   every rebuild strobes. It still fades out — by removal, not by animation — so it stays "where you
   are" and never reads as a state the card is in. */
.abw-row.abw-ap-land{background:#fdf8ea;box-shadow:inset 3px 0 0 var(--motm-warning,#b87a14);
  transition:background .18s ease-out}
.abw-chev{flex:none;font:700 15px/1 Inter;color:#9db3a2;margin:1px 0 0 2px}
.abw-row.abw-click:hover .abw-chev{color:var(--brand-deep,#1f4a2d)}
.abw-mut{opacity:.72}
.abw-line{display:flex;align-items:flex-start;gap:10px}
.abw-ask{flex:1;min-width:0;font:600 var(--fs-body,13.5px) Inter;color:#1a1d1c;line-height:1.35}
.abw-lk{color:#4f46e5;text-decoration:none;font-weight:700}
.abw-what{font:400 12.5px Inter;color:#5b6b5e;line-height:1.45;margin:3px 0 0}
.abw-wake{display:inline-flex;align-items:center;gap:5px;margin:5px 0 0;font:600 11px Inter;color:#8a5a0f;background:#fdf6e5;border:1px solid #ecd9a8;border-radius:8px;padding:3px 9px}
.abw-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:4px 0 0;font:500 var(--fs-micro,10px) Inter;letter-spacing:.02em;color:#9aa39b}
.abw-job{font:500 10px ui-monospace,"SF Mono",Menlo,monospace;color:#8a8f8a;background:#f3f2ec;border-radius:5px;padding:1px 6px}
.abw-ws{flex:none;font:700 9px Inter;letter-spacing:.05em;border-radius:5px;padding:2px 7px;background:var(--brand-mist,#eef3ee);color:var(--brand-mid,#306844);margin-top:1px}
.abw-chip{flex:none;font:700 9.5px Inter;letter-spacing:.03em;border-radius:999px;padding:3px 10px;white-space:nowrap}
.abw-chip.ext{border:1.5px dashed #c9c4b4}
/* FULL-WIDTH HITBOX (Craig 7/22 12:16p "The Shipped dropdown was way too finicky. I barely
   missed the click"): the whole bar is the toggle — generous padding top-to-bottom, a card
   surface so the target reads as clickable, no 2px sliver to miss. */
.abw-shipsum{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;font:700 var(--fs-label,11px) Inter;letter-spacing:.08em;text-transform:uppercase;color:#6b7669;padding:12px 14px;border:1px solid #ece8db;border-radius:12px;background:#faf9f4;transition:border-color .12s,background .12s}
.abw-shipsum:hover{border-color:#c7bfa8;background:#f5f3ea;color:var(--brand-deep,#1f4a2d)}
.abw-shipsum::-webkit-details-marker{display:none}
details[open]>.abw-shipsum{border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:-1px}
/* the open Shipped record is 173+ rows — pin its 'THE RECORD' bar just under the frozen header
   (Craig 7/22 "scroll through these") so the label + count stay anchored the whole way down.
   --abw-hdr-h is measured live in abPaint (header height varies by tab). */
.abw-shiprec[open]>.abw-shipsum{position:sticky;top:calc(var(--abw-hdr-h,86px) - 1px);z-index:5;box-shadow:0 6px 12px -10px rgba(0,0,0,.3)}
/* APPROVALS cards (7/16: staged drafts surfaced above the Docket) */
.abw-ap-sum{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.abw-ap-ctx{margin:8px 0 0;font:500 11.5px Inter;color:#6b7669;line-height:1.4;background:#f7f6f0;border-radius:8px;padding:7px 10px}
/* Their message / Draft reply blocks (Craig 7/16): full inbound text in-card, scroll-capped */
.abw-ap-lbl{margin:10px 0 0;font:700 var(--fs-label,11px) Inter;letter-spacing:.08em;text-transform:uppercase;color:#6b7669}
.abw-ap-lblnote{font:500 var(--fs-micro,10px) Inter;letter-spacing:.02em;text-transform:none;color:#9aa39b}
.abw-ap-inb{margin:4px 0 0;font:400 12.5px Inter;color:#1a1d1c;line-height:1.55;white-space:pre-wrap;background:#f7f6f0;border:1px solid #e9e6da;border-radius:8px;padding:10px 12px;max-height:340px;overflow:auto}
.abw-ap-text{margin:4px 0 0;font:400 12.5px Inter;color:#1a1d1c;line-height:1.55;white-space:pre-wrap;background:#fbfaf6;border:1px solid #f0ede3;border-radius:8px;padding:10px 12px}
/* PW Monitoring — Scheduled & Published in-place expand. Default cursor:text inside the
   reader (the row itself is the clickable button); the body carries the Content popout's
   own #ops-modal .csp-* skin, so only the frame lives here. */
.abw-pwpost-body{margin:12px 0 2px;border-top:1px solid #f0ede3;padding-top:14px;cursor:default;text-align:left}
.abw-row.abw-pwpost.open{background:#f7faf7}
/* ── BOARD + DOCKET expand-in-place (Craig 7/17: the board lives inside the glass — every row
   is fg-alfred-seat-board and opens its full story right here). Mirrors the PW-monitoring skin. */
.abw-row.fg-alfred-seat-board.open{background:#f7faf7}
.abw-chev{transition:transform .14s ease}
.abw-row.fg-alfred-seat-board.open .abw-chev{transform:rotate(90deg);color:var(--brand-deep,#1f4a2d)}
.abw-brd-full{margin:12px 0 2px;border-top:1px solid #f0ede3;padding-top:14px;cursor:default;text-align:left}
.abw-brd-detail{display:flex;flex-direction:column;gap:12px}
.abw-inline-rdr{border:1px solid #f0ede3;border-radius:10px;overflow:hidden;background:#fbfaf6}
.abw-inline-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid #f0ede3;font:700 var(--fs-label,11px) Inter;letter-spacing:.06em;text-transform:uppercase;color:#6b7669}
.abw-inline-bar a{font:600 11px Inter;letter-spacing:0;text-transform:none;color:var(--brand-mid,#306844);text-decoration:none}
.abw-inline-bar a:hover{text-decoration:underline}
.abw-doc-inline{padding:14px 16px;max-height:520px;overflow:auto}
.abw-doc-inline .abw-frame{height:min(52vh,480px);border-radius:8px}
.abw-ap-actions{display:flex;gap:8px;margin:10px 0 2px}
.abw-ap-go{font:700 11px Inter;letter-spacing:.05em;border:0;border-radius:8px;padding:8px 14px;cursor:pointer;background:var(--brand-deep,#1f4a2d);color:var(--brand-haze,#eef6ef)}
.abw-ap-go:hover{background:var(--brand-deep-hover,#2a5f3c)}
.abw-ap-rev{font:700 11px Inter;letter-spacing:.05em;border:1px solid #d9d4c4;border-radius:8px;padding:8px 14px;cursor:pointer;background:#fff;color:#6b7669}
.abw-ap-rev:hover{background:#f7f6f0}
.abw-ap-go:disabled,.abw-ap-rev:disabled{opacity:.55;cursor:default}
.abw-ap-done{margin:8px 0 0;font:600 11.5px Inter;color:var(--brand-deep,#1f4a2d)}
/* ── MALFORMED / FAILED (Craig 7/25 — the click that went nowhere) ──────────────────────────
   Both live only on the approvals rail, which is Craig's own court, so alarm colour is honest
   here. MALFORMED is amber (someone has to fix this card) — it replaces the approve button, so
   the card is readable but not clickable. FAILED is alarm (your click did not land) and is
   PERSISTENT: the 2.6s toast is exactly what got missed, so this one stays put. */
.abw-ap-malformed{margin:10px 0 2px;padding:10px 12px;border:1px solid #e6cf94;border-left:3px solid #e0a92e;
  border-radius:8px;background:#fdf6e4;color:#7a4a06;font:500 var(--fs-body,12px)/1.5 Inter}
.abw-ap-malformed b{font-weight:700}
.abw-ap-failed{margin:10px 0 2px;padding:10px 12px;border:1px solid #e3bcb8;border-left:3px solid #a8342c;
  border-radius:8px;background:#fdf1f0;color:#8a2822;font:500 var(--fs-body,12px)/1.5 Inter}
.abw-ap-failed b{font-weight:700}
.abw-ap-failnote{display:inline-block;margin-top:4px;font:500 var(--fs-micro,10.5px)/1.45 Inter;color:#9a5a52}
/* ── REVISE EDITOR + TEXT RAIL (Craig 7/27) ─────────────────────────────────────────────────
   REVISE opens IN the card and the card stays put — the editor is calm green, not alarm, because
   editing a draft is normal work, not a failure. The bounce-to-HQ button is deliberately the
   quietest control in the row: it is the only one here that takes the card off his screen. */
.abw-ap-edit{margin:10px 0 2px;padding:10px 12px;border:1px solid var(--brand-line,#b9d8b4);
  border-left:3px solid var(--brand-mid,#306844);border-radius:8px;background:#f7fbf7}
.abw-ap-ta{display:block;width:100%;box-sizing:border-box;margin:4px 0 0;padding:10px 12px;
  border:1px solid #cfd8cd;border-radius:8px;background:#fff;color:#1a1d1c;
  font:400 12.5px/1.55 Inter;resize:vertical;min-height:150px}
.abw-ap-ta:focus{outline:0;border-color:var(--brand-mid,#306844);box-shadow:0 0 0 3px rgba(48,104,68,.12)}
.abw-ap-edacts{display:flex;gap:8px;margin:10px 0 0;flex-wrap:wrap;align-items:center}
.abw-ap-bounce{font:600 10.5px Inter;letter-spacing:.04em;border:1px solid #e2ddd0;border-radius:8px;
  padding:7px 12px;cursor:pointer;background:transparent;color:#8a8578;margin-left:auto}
.abw-ap-bounce:hover{background:#f5f3ec;color:#6b6558}
.abw-ap-ednote{margin:8px 0 0;font:500 var(--fs-micro,10.5px)/1.45 Inter;color:#5c7a63}
.abw-ap-note{margin:10px 0 2px;padding:9px 12px;border-radius:8px;font:500 var(--fs-body,12px)/1.5 Inter}
.abw-ap-note.ok{border:1px solid var(--brand-line,#b9d8b4);border-left:3px solid var(--brand-ok,#15803d);
  background:#eef7f0;color:var(--brand-deep,#1f4a2d)}
.abw-ap-note.bad{border:1px solid #e6cf94;border-left:3px solid #e0a92e;background:#fdf6e4;color:#7a4a06}
/* CLOSE-GATE STORY (Craig 7/27): the open tasks holding a close, printed on the row with their
   Double ids — the row used to hand him 160 truncated characters and a generic destination. */
.abw-gate-tasks{margin:6px 0 2px;padding:8px 11px;border:1px solid var(--brand-line,#dfe6df);
  border-left:3px solid var(--signal,#3e7d5c);border-radius:8px;background:#fbfdfb}
.abw-gate-task{font:500 var(--fs-body,12px)/1.55 Inter;color:var(--canopy,#1e3b2f);margin:2px 0}
.abw-gate-task b{font-weight:800}
.abw-gate-tmeta{display:block;margin-left:14px;font:500 var(--fs-micro,10.5px)/1.45 Inter;color:#6d7f72}
.abw-gate-who{margin:8px 0 2px;font:500 var(--fs-label,11px)/1.5 Inter;color:#55636f}
.abw-gate-who b{font-weight:800;color:var(--canopy,#1e3b2f)}
.abw-ap-txt-btn{font:700 11px Inter;letter-spacing:.05em;border:1px solid #cfd8cd;border-radius:8px;
  padding:8px 14px;cursor:pointer;background:#fff;color:var(--brand-deep,#1f4a2d)}
.abw-ap-txt-btn:hover{background:#eef7f0}
.abw-ap-txt-btn.off,.abw-ap-txt-btn:disabled{opacity:.5;cursor:default;color:#8a8578;background:#f7f6f0}
/* OPEN AS DOC (Craig 11:57a 7/27) — reads the card out as a document. Secondary weight: it is a
   READ, never an act, so it never wears --action green. .doc-quiet is the lifecycle/content
   variant — a receipt row must not look like it is still asking. */
.abw-ap-doc{font:700 var(--fs-label,11px) Inter;letter-spacing:.05em;border:1px solid #d9d4c4;
  border-radius:8px;padding:8px 14px;cursor:pointer;background:#fff;color:var(--canopy,#1e3b2f)}
.abw-ap-doc:hover{background:#f7f6f0}
.abw-ap-doc:disabled{opacity:.55;cursor:default}
.abw-ap-doc.doc-quiet{border-color:#e4e0d3;color:#6b7669;padding:5px 10px;
  font:600 var(--fs-micro,10px) Inter}
.abw-ap-doc.doc-quiet:hover{color:var(--canopy,#1e3b2f);background:#f7f6f0}
.abw-ap-txt{margin:10px 0 2px;padding:11px 13px;border:1px solid #cfd8cd;border-left:3px solid var(--brand-mid,#306844);
  border-radius:8px;background:#f4f9f5}
.abw-ap-txhead{font:700 var(--fs-label,11.5px) Inter;color:var(--brand-deep,#1f4a2d)}
.abw-ap-txwho{margin:5px 0 0;font:500 var(--fs-body,12px)/1.5 Inter;color:#1a1d1c}
.abw-ap-txwhy{margin:5px 0 0;font:500 var(--fs-micro,10.5px)/1.5 Inter;color:#55636f}
.abw-ap-txacts{display:flex;gap:8px;margin:9px 0 0;flex-wrap:wrap}
/* ── STICKY HEADER + TABS (Craig 7/16: "you can't see the header when I scroll…
   I don't see tabs to switch") — pins inside the scrolling .ops-modal-body. ── */
.abw-hdr{position:sticky;top:0;z-index:6;background:#fff;padding:2px 0 0;margin:0 0 12px;border-bottom:1px solid #ece8db;box-shadow:0 8px 14px -12px rgba(0,0,0,.28)}
.abw-h1{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 8px}
.abw-title{font:700 20px Fraunces,Georgia,serif;color:var(--brand-deep,#1f4a2d)}
.abw-sub{font:400 12px Inter;color:#6b7a6f;margin:-4px 0 10px}
.abw-tabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 7px}
.abw-tab{display:inline-flex;align-items:center;gap:6px;font:700 12px Inter;letter-spacing:.03em;border:1px solid #e2ddcd;border-radius:99px;background:#fff;color:#6b7669;padding:6px 13px;cursor:pointer}
.abw-tab:hover{border-color:#a8bcab;color:var(--brand-deep,#1f4a2d)}
.abw-tab.on{background:var(--brand-deep,#1f4a2d);border-color:var(--brand-deep,#1f4a2d);color:var(--brand-haze,#eef6ef)}
/* Wakes pointer (Craig 7/22): not a tab — a thin count-chip that jumps to the machine widget's ⏰ Wakes */
.abw-wakeptr{background:#fbf3df;border-color:#ecd9a8;color:#8a5a0f;font-weight:700}
.abw-wakeptr:hover{border-color:#e0a92e;color:#6b4708;background:#faeecb}
.abw-wakeptr-arrow{font-weight:800;opacity:.7;letter-spacing:0}
.abw-tbadge{font:700 10px Inter;letter-spacing:0;border-radius:99px;padding:1px 7px;background:#eceff2;color:#55636f}
.abw-tbadge.gold{background:#e0a92e;color:#3a2b05}
/* Approvals court-record channel filter chips (Craig 7/22) — a lighter pill than the tab pills */
.abw-fchips{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:2px 0 10px}
.abw-fchip{font:700 11px Inter;letter-spacing:.02em;border:1px solid #e2ddcd;border-radius:99px;background:#fff;color:#6b7669;padding:4px 11px;cursor:pointer}
.abw-fchip:hover{border-color:#a8bcab;color:var(--brand-deep,#1f4a2d)}
.abw-fchip.on{background:var(--brand-deep,#1f4a2d);border-color:var(--brand-deep,#1f4a2d);color:var(--brand-haze,#eef6ef)}
.abw-tbadge.amber{background:#fef3c7;color:#b45309}
.abw-tab.on .abw-tbadge{background:rgba(255,255,255,.22);color:var(--brand-haze,#eef6ef)}
.abw-tab.on .abw-tbadge.gold{background:#e0a92e;color:#3a2b05}
.abw-tab.on .abw-tbadge.amber{background:#fef3c7;color:#b45309}
.abw-wsrow{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:0 0 7px}
.abw-wspill{font:600 11px Inter;border:1px solid #e7e2d4;border-radius:99px;background:#faf9f4;color:#6b7669;padding:3px 10px;cursor:pointer}
.abw-wspill:hover{border-color:#a8bcab;color:var(--brand-deep,#1f4a2d)}
.abw-wspill.on{background:var(--brand-mist,#eef3ee);border-color:var(--brand-mid,#306844);color:var(--brand-deep,#1f4a2d);font-weight:700}
.abw-wsn{color:#9aa39b;font-weight:600}
.abw-wspill.on .abw-wsn{color:#4d7a5c}
/* CLEAR ALL (Craig 8/5) — the bar at the top of the Needs-you room. It states the number, then
   offers the one button that empties it. Calm slate, never gold: gold means "this needs you", and
   a utility that REMOVES things must not wear the color of the things it removes. */
.abw-clearbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:#f7f8f7;border:1px solid #e7eae7;border-radius:10px;padding:8px 12px;margin:0 0 12px}
.abw-cb-n{font:700 12.5px Inter;color:#5b6b5e}
.abw-cb-w{font:400 11.5px Inter;color:#9aa39b}
.abw-cb-x{margin-left:auto;flex:none;font:600 11.5px Inter;color:#6b7669;background:#fff;
  border:1px solid #dfe3df;border-radius:999px;padding:4px 12px;cursor:pointer;white-space:nowrap;
  transition:color .12s,background .12s,border-color .12s}
.abw-cb-x:hover{color:#8a5a0f;background:#faf5e8;border-color:#e6d9bb}
.abw-cb-x:focus-visible{outline:2px solid var(--motm-warning,#b87a14);outline-offset:1px}
.abw-cb-x:disabled{opacity:.6;cursor:default}
/* "IT LIVES SOMEWHERE ELSE" (Craig 8/5 admission policy). Slate, never gold — the whole point of
   this block is that the work inside it is NOT in his court, and gold is the ink that means it is.
   It names the count and carries the one door to the surface that owns the rows. */
.abw-elsewhere{background:#f7f8f7;border:1px solid #e7eae7;border-radius:10px;padding:10px 13px;margin:10px 0 0}
.abw-else-l{font:600 12.5px Inter;color:#5b6b5e}
.abw-else-w{font:400 11.5px Inter;color:#8f978f;margin:3px 0 7px;line-height:1.5}
.abw-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font:500 10.5px Inter;color:#8f978f;padding:2px 0 8px}
.abw-legend b{font-weight:700;color:#6b7669}
.abw-legend .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:-1px}
/* DESK BANNER REMOVED ENTIRELY 2026-07-26 (Craig's Study ruling) — the .abw-desk* skin went with
   it. What stands in its place is one quiet as-of line off payload.generated_at: the SAME clock the
   Court Strip states, deliberately drawn as a whisper (10.5px, grey, no card, no border) because the
   thing it replaced was a card loud enough to read as content. */
.abw-asof{font:500 10.5px Inter;color:#9aa39b;margin:-6px 0 10px;letter-spacing:.02em}
/* SOURCE + COURT CHIPS (Craig 7/26 — WHY's job, folded into the row it explains).
   The source chip is a DOOR (deep-link-every-go-look), so it is drawn as a button and says so on
   hover; a source with nowhere to go renders .dead — flat, no arrow, no pointer, and the tooltip
   admits it rather than dressing a no-op as a link. The court chip is court-honest: gold ink is
   Craig's alone (set inline from _COURT_INK), every other court is calm slate. */
.abw-chiprow{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:6px 0 0}
.abw-srcchip{flex:none;display:inline-flex;align-items:center;gap:4px;font:600 9.5px Inter;letter-spacing:.03em;
  background:#f4f6f4;border:1px solid #e3e8e4;color:#6b7669;border-radius:999px;padding:3px 9px;cursor:pointer;
  transition:background .1s,border-color .1s,color .1s}
.abw-srcchip:hover{background:#eaf3ec;border-color:var(--signal,#3e7d5c);color:var(--signal,#3e7d5c)}
.abw-srcchip .abw-srcgo{font-size:9px;opacity:.75}
.abw-srcchip.dead{cursor:default;background:#f7f7f5;border-style:dashed;border-color:#e0e0da;color:#a3a9a3}
.abw-courtchip{flex:none;font:700 8.5px Inter;letter-spacing:.05em;border-radius:4px;padding:2px 7px;line-height:1.6}
/* FOLDED APPROVALS (Craig 7/26): 'an approval awaiting his word IS a needs-you' — so the row
   wears the one gold edge the court vocabulary already means by 'yours to call'. */
.abw-row.abw-gold{background:#fffdf6;border-left:3px solid #e0a92e;padding-left:9px}
/* the FIX NOW one-tap, migrated off the retired drawer and onto the row itself */
.abw-fixrow{margin:7px 0 0;display:flex}
/* the uncounted tail — visible so nothing hides, calm so it never reads as an ask */
.abw-sec.abw-uncounted{opacity:.9}
.abw-row.abw-unc{background:#fbfcfd;cursor:default}
.abw-row.abw-unc .abw-ask{font-weight:500;color:#4a5763}
.abw-sec-gap{height:18px}
.abw-inlink{color:var(--brand-mid,#306844);font-weight:600;text-decoration:none;border-bottom:1px solid #cfe3d3;cursor:pointer}
.abw-inlink:hover{border-bottom-color:var(--brand-mid,#306844)}
/* PARKED group (triage 7/16): collapsed by default, muted rows, no gold inside — ever */
.abw-parkhead{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;background:#f4f3ec;padding:9px 12px;cursor:pointer;font:700 var(--fs-label,11px) Inter;letter-spacing:.08em;text-transform:uppercase;color:#8a8f88}
.abw-parkhead:hover{background:#efeee5;color:#6b7669}
.abw-parkhead .tw{flex:none;font-size:9px;transition:transform .12s;display:inline-block;margin-right:-2px}
.abw-parkhead.open .tw{transform:rotate(90deg)}
.abw-zero{padding:22px 16px;text-align:center;color:#9aa39b;font:500 13px Inter;background:#fff;border:1px solid #f0ede3;border-radius:12px;margin:0 0 12px}
/* IN-GLASS READER (one-screen law): linked docket rows render their doc right here */
.abw-rdrhdr{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:2px 0 10px}
.abw-back{flex:none;font:700 11.5px Inter;border:1px solid #d9d4c4;border-radius:8px;background:#fff;color:var(--brand-mid,#306844);padding:7px 12px;cursor:pointer}
.abw-back:hover{background:#f2f6f2;border-color:#a8bcab}
.abw-rdrttl{flex:1;min-width:200px;font:700 15px Fraunces,Georgia,serif;color:var(--brand-deep,#1f4a2d);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.abw-rdrfile{flex:none;font:600 11.5px Inter;color:#2456a6;text-decoration:none}
.abw-rdrfile:hover{text-decoration:underline}
.abw-doc{background:#fbfaf6;border:1px solid #f0ede3;border-radius:12px;padding:22px 26px;min-height:180px}
.abw-docload{color:#9aa39b;font:500 13px Inter;text-align:center;padding:28px 0}
.abw-docerr{color:#6b7669;font:500 13px Inter;line-height:1.6}
.abw-docerr a{color:#2456a6}
.abw-pre{white-space:pre-wrap;font:400 12.5px/1.55 ui-monospace,Menlo,monospace;color:#2c302e;margin:0}
.abw-frame{width:100%;height:min(70vh,760px);border:0;border-radius:8px;background:#fff}
/* markdown inside the reader — light, matches the Brain reading pane */
.abw-md{font:400 14.5px/1.62 Inter;color:#2c302e;word-break:break-word;max-width:760px;margin:0 auto}
.abw-md p{margin:0 0 13px}
.abw-md h1{font:600 22px/1.25 Fraunces,Georgia,serif;color:var(--brand-deep,#1f4a2d);margin:26px 0 10px}
.abw-md h1:first-child,.abw-md h2:first-child{margin-top:0}
.abw-md h2{font:600 19px/1.25 Fraunces,Georgia,serif;color:var(--brand-deep,#1f4a2d);margin:24px 0 9px}
.abw-md h3{font:700 15.5px Inter;color:#1a1d1c;margin:20px 0 8px}
.abw-md h4{font:700 13.5px Inter;color:#1a1d1c;margin:18px 0 6px}
.abw-md ul,.abw-md ol{margin:0 0 13px;padding-left:24px}
.abw-md li{margin:4px 0}
.abw-md code{background:#efe9db;border-radius:5px;padding:1.5px 6px;font:500 12.3px ui-monospace,Menlo,monospace;color:var(--brand-deep,#1f4a2d)}
.abw-md pre{background:#22262a;color:#e6e9ec;border-radius:10px;padding:13px 15px;overflow-x:auto;margin:0 0 15px;font:400 12.3px/1.55 ui-monospace,Menlo,monospace}
.abw-md pre code{background:none;padding:0;color:inherit;font:inherit}
.abw-md blockquote{border-left:3px solid #d7d0bf;margin:0 0 13px;padding:2px 0 2px 15px;color:#525854}
.abw-md hr{border:0;border-top:1px solid #e7e2d4;margin:20px 0}
.abw-md .tblwrap{overflow-x:auto;margin:0 0 15px}
.abw-md table{border-collapse:collapse;font-size:13px}
.abw-md th{background:#f1ede2;font:600 12px Inter;text-align:left}
.abw-md th,.abw-md td{border:1px solid #e2dccb;padding:6px 10px;vertical-align:top}
.abw-md a{color:var(--brand-mid,#306844)}
/* TAKE-ME-THERE (deep links 7/16): inline row pill + big detail-card jump — action green,
   it's a door Craig opens, not an alarm */
.abw-go{flex:none;font:700 10.5px Inter;letter-spacing:.03em;border:1px solid var(--brand-deep,#1f4a2d);border-radius:999px;background:var(--brand-deep,#1f4a2d);color:var(--brand-haze,#eef6ef);padding:3px 11px;cursor:pointer;white-space:nowrap}
.abw-go:hover{background:var(--brand-deep-hover,#2a5f3c)}
/* FULL-STORY CARD (7/16: every docket row acts on click) */
.abw-detail{display:flex;flex-direction:column;gap:12px}
.abw-det-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.abw-det-meta{font:500 var(--fs-micro,10px) Inter;letter-spacing:.02em;color:#9aa39b}
.abw-det-what{font:400 14px Inter;color:#2c302e;line-height:1.6;max-width:720px}
.abw-det-go{font:700 12px Inter;letter-spacing:.04em;border:0;border-radius:9px;background:var(--brand-deep,#1f4a2d);color:var(--brand-haze,#eef6ef);padding:9px 16px;cursor:pointer;align-self:flex-start}
.abw-det-go:hover{background:var(--brand-deep-hover,#2a5f3c)}
.abw-det-go.big{font-size:13px;padding:11px 20px}
.abw-det-sec{border:1px solid #ece8db;border-radius:10px;background:#fff;padding:12px 14px}
.abw-det-lbl{font:700 var(--fs-label,11px) Inter;letter-spacing:.08em;text-transform:uppercase;color:#6b7669;margin:0 0 8px}
.abw-det-job{font:500 12.5px Inter;color:#2c302e;line-height:1.5;margin:0 0 6px}
.abw-det-wrapsum{font:400 12px Inter;color:#5b6b5e;line-height:1.55;background:#f7f6f0;border-radius:8px;padding:8px 11px;margin:6px 0 0;white-space:pre-wrap}
.abw-det-wrapsum.wrapmd{white-space:normal;max-height:280px;overflow:auto}   /* markdown-rendered wrap; scroll inside */
.abw-det-hop{font:600 11px Inter;border:1px solid #d9d4c4;border-radius:8px;background:#fff;color:var(--brand-mid,#306844);padding:6px 11px;cursor:pointer;margin:4px 0 0}
.abw-det-hop:hover{background:#f2f6f2;border-color:#a8bcab}
.abw-det-auth{background:#fdf6ea;border:1px solid #e3c878;border-radius:9px;padding:9px 12px;margin:0 0 8px}
.abw-det-authttl{font:700 12px Inter;color:#8a5a0f;margin:0 0 4px}
.abw-det-authscr{font:400 11.5px Inter;color:#5b6b5e;line-height:1.5;margin:0 0 7px}
.abw-det-authbtns{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.abw-det-authbtns .abw-det-go{padding:6px 12px;font-size:11px}
.abw-det-login{font:600 11px Inter;background:#fff;border:1px solid #e3c878;color:var(--motm-warning,#b87a14);border-radius:8px;padding:6px 10px;text-decoration:none;display:inline-block}
.abw-det-resume{font:600 11px Inter;background:#fff;border:1px solid #e3c878;color:var(--brand-deep,#1f4a2d);border-radius:8px;padding:6px 10px;cursor:pointer}
.abw-det-src{font:400 11px Inter;color:#9aa39b;line-height:1.55;border-top:1px solid #efece1;padding-top:10px}
/* DOCKET ACTION ROW (Craig 7/16 7:53p: the card closes its own loop) — the gold button is
   the ONE click that answers the gold ask; the needs-words pill stays honest, never a fake
   button; dismiss is quiet — retiring a row is bookkeeping, not a celebration */
.abw-act{flex:none;font:700 10.5px Inter;letter-spacing:.03em;border:1px solid #c98f16;border-radius:999px;background:#e0a92e;color:#3a2b05;padding:3px 11px;cursor:pointer;white-space:nowrap}
.abw-act:hover{background:#eab73d}
.abw-act:disabled{opacity:.55;cursor:default}
.abw-actdone{flex:none;font:700 10.5px Inter;color:var(--brand-deep,#1f4a2d);white-space:nowrap}
.abw-words{flex:none;font:600 10px Inter;color:#9aa39b;border:1px dashed #d9d4c4;border-radius:999px;padding:3px 10px;white-space:nowrap}
.abw-words.big{font-size:12px;padding:8px 14px;white-space:normal}
.abw-det-act{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.abw-det-go.gold{background:#e0a92e;color:#3a2b05}
.abw-det-go.gold:hover{background:#eab73d}
.abw-det-go:disabled{opacity:.55;cursor:default}
.abw-dismiss{font:600 11px Inter;border:1px solid #d9d4c4;border-radius:8px;background:#fff;color:#6b7669;padding:8px 13px;cursor:pointer}
.abw-dismiss:hover{background:#f7f6f0}
.abw-dismiss:disabled{opacity:.55;cursor:default}
/* DUAL CHECK-OFF (Craig 7/16): every Builds row wears two check slots — ✓ Builder fills at
   verify (wrap landed), ✓✓ Alfred fills at shipped (HQ verified). Empty slots stay visible
   so builder-done-awaiting-validation vs fully-green reads at a glance. Green = verified
   only — an unfilled slot is hollow gray, never a color. */
.abw-dual{flex:none;display:inline-flex;gap:4px;margin-top:1px}
.abw-ck{font:700 9px Inter;letter-spacing:.03em;border:1px dashed #d9d4c4;border-radius:999px;padding:2px 8px;color:#b3b0a4;background:#fff;white-space:nowrap}
.abw-ck.on{border:1px solid #bcd9c4;background:var(--brand-tint-cool,#dbeee0);color:var(--brand-deep,#1f4a2d)}
/* nothing-to-sign-yet (Craig 7/22): queued/building rows have no signatures pending — one calm
   muted label, never two hollow slots that read as missing signatures. */
.abw-dual.awaiting{font:600 9px Inter;letter-spacing:.03em;color:#a9ad9f;background:#f6f5ef;border:1px solid #eceadd;border-radius:999px;padding:2px 8px;white-space:nowrap;text-transform:none}
/* APPROVAL LIFECYCLE (Craig 7/16 7:31p "I thought I approved these?") — gate line gray-honest
   (waiting on a gate, not on Craig), sent-today group collapses like the shipped record */
.abw-gate{display:inline-flex;align-items:center;gap:5px;margin:5px 0 0;font:600 11px Inter;color:#55636f;background:#f1f3f5;border:1px solid #dde2e7;border-radius:8px;padding:3px 9px;line-height:1.4}
.abw-sentwrap{margin:14px 0 0}
.abw-sentwrap>summary{padding:2px 0}
/* RETIRED (Craig 7/24) — decided-against history. Slate, not green: this is 'we killed it', which
   must never read as '✓ SENT' (we did it). Struck title + ✕ chip say it at a glance; the reason
   is the point, so it's carried in full. Court-honest: no alarm color — a closed decision is calm. */
.abw-retiredwrap{margin:14px 0 0}
.abw-retiredwrap>summary{padding:2px 0}
.abw-retsum{color:#6a7078}
.abw-retsum:hover{border-color:#c3c8ce;background:#f4f5f6;color:#3d434a}
.abw-retcount{background:#e4e6e9;color:#5a616a}
.abw-retitle{text-decoration:line-through;text-decoration-thickness:1px;text-decoration-color:#9aa0a8;opacity:.72}
.abw-retchip{background:#eceef1;color:#5a616a;border:1px solid #dcdfe4}
.abw-retreason{color:#4a5058;font-style:italic;border-left:2px solid #cfd3d9;padding-left:9px;margin-top:5px}
/* ALFRED seat badge — gold, court-honest: approvals ARE Craig's court */
.ab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 5px;margin-left:6px;border-radius:999px;background:#e0a92e;color:#3a2b05;font:700 10px Inter;line-height:1;vertical-align:1px}
.ab-badge.dot{position:absolute;top:-5px;right:-5px;margin:0;border:1.5px solid #fff}
/* PENNYWORTH SCOPE (Craig 7/16 5:45p) — the PW seat opens the same engine scoped to the
   second company. PW gold (#a4770d) is identity only, matching the Max (PW) chip canon. */
.abw-pwtag{display:inline-flex;align-items:center;font:700 10px Inter;letter-spacing:.06em;border-radius:6px;padding:2px 7px;margin-left:8px;background:#f9f0da;color:#a4770d;vertical-align:2px}
.abw-livedot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--brand-leaf,#3fae52);margin-right:7px;vertical-align:1px;animation:fsPillDot 1.6s ease infinite}
/* CONVERSATION PUSH (Craig 7/17) — every needs-you/docket card carries both doors: a quiet
   ✎ note and the one-click 💬 push into the live HQ chat. Calm ink only — the in-conversation
   chip is a state, never an alarm; the chat door wears the mint boundary, not gold. */
.abw-pushrow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:7px;min-width:0}
.abw-push{display:inline-flex;align-items:center;gap:7px;flex-wrap:wrap;min-width:0}
.abw-push-note,.abw-push-chat{font:600 10.5px Inter;border:1px solid #d9d4c4;border-radius:999px;background:#fff;color:#6b7669;padding:4px 11px;cursor:pointer;white-space:nowrap}
.abw-push-note:hover,.abw-push-chat:hover{border-color:#a8bcab;color:var(--brand-deep,#1f4a2d);background:#f2f6f2}
.abw-push-chat{border-color:#bcd9c4;color:var(--brand-deep,#1f4a2d)}
.abw-push-note:disabled,.abw-push-chat:disabled,.abw-push-send:disabled{opacity:.55;cursor:default}
.abw-push-ok{font:600 11px Inter;color:var(--brand-deep,#1f4a2d);white-space:nowrap}
.abw-inconv{display:inline-flex;align-items:center;font:700 10.5px Inter;letter-spacing:.02em;border:1px solid #bcd9c4;border-radius:999px;background:var(--brand-tint-cool,#dbeee0);color:var(--brand-deep,#1f4a2d);padding:4px 12px;white-space:nowrap}
.abw-composer{flex-basis:100%;min-width:0;display:flex;flex-direction:column;gap:6px;background:#fbfaf6;border:1px solid #ece8db;border-radius:9px;padding:9px 10px;cursor:default}
/* display:flex would beat the UA's [hidden] rule — without this the composer renders open */
.abw-composer[hidden],.abw-push-ok[hidden]{display:none}
.abw-composer textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:56px;font:400 12.5px/1.5 Inter;color:#1a1d1c;background:#fff;border:1px solid #e2ddcd;border-radius:8px;padding:8px 10px;outline:none}
.abw-composer textarea:focus{border-color:var(--brand-mid,#306844)}
.abw-composer-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.abw-push-send{font:700 11px Inter;letter-spacing:.03em;border:0;border-radius:8px;background:var(--brand-deep,#1f4a2d);color:var(--brand-haze,#eef6ef);padding:7px 14px;cursor:pointer}
.abw-push-send:hover{background:var(--brand-deep-hover,#2a5f3c)}
.abw-push-cancel{font:600 11px Inter;border:1px solid #d9d4c4;border-radius:8px;background:#fff;color:#6b7669;padding:7px 12px;cursor:pointer}
.abw-push-cancel:hover{background:#f7f6f0}
.abw-push-hint{font:400 10.5px Inter;color:#9aa39b}
/* Monitoring stat tiles — community pulse numbers, type tokens per the design law */
.abw-stats{display:flex;gap:10px;flex-wrap:wrap;padding:12px;border-top:1px solid #f0ede3}
.abw-stat{flex:1 1 120px;min-width:110px;background:#fbfaf6;border:1px solid #f0ede3;border-radius:10px;padding:10px 12px}
.abw-stat-n{font:700 var(--fs-num,20px) Fraunces,Georgia,serif;color:#1a1d1c;line-height:1.1}
.abw-stat-l{margin-top:3px;font:600 var(--fs-micro,10px) Inter;letter-spacing:.05em;text-transform:uppercase;color:#9aa39b}

/* Pointer strip (7/17 one-place law): a calm hand-off card — the Docket points at the
   Needs-you tab, PW surfaces point at the ALFRED pill. Quiet tan, never gold: the pointer
   itself asks nothing, it just shows the door. */
.abw-ptr{background:#faf7ef;border:1px solid #e8e1cc;border-left:4px solid #d9c98f;border-radius:10px;padding:11px 14px;margin:0 0 12px;font:500 12.5px/1.55 Inter;color:#6b6353;cursor:pointer}
.abw-ptr:hover{border-color:#d1b878;background:#f8f3e4}
.abw-empty{padding:20px 14px;font:400 12.5px/1.6 Inter;color:#8a9089;text-align:center}

/* Chat tab CSS RETIRED 2026-07-23 (Firmglass audit R-b) — the .acw- chat surface was removed. */
.abw-ptr b{color:#8a5a0f}

/* ── APPROVALS HISTORY (Craig 7/28 2:50p: "all of my approvals disappear... find historical
   with searching easily") — the full-corpus, filterable, searchable record that lives at the
   foot of the Rulings approval record and never itself disappears. Reuses .abw-shipsum (the
   collapsible-bar language) and .abw-fchips/.abw-fchip (the existing channel-filter chip
   language) as-is; only the search input and outer spacing are new. */
.abw-histwrap{margin:14px 0 0}
.abw-histhead{gap:8px}
.abw-histsearch{flex:1 1 220px;min-width:160px;font:400 12.5px Inter;color:#1a1d1c;background:#fff;
  border:1px solid #e2ddcd;border-radius:8px;padding:6px 10px;outline:none}
.abw-histsearch:focus{border-color:var(--brand-mid,#306844);box-shadow:0 0 0 3px rgba(48,104,68,.12)}
.abw-histrow .abw-ap-ctx{margin-top:8px}

/* ── COMMITMENTS (Craig 7/17 9:19p: 'the things pending that we have to circle back on') ──
   Court-honest: amber = calm attention, never alarm red. Overdue circle-backs wear a soft
   amber calm-glow (a gentle, slow breath — presence, not panic); on-track ones stay neutral. */
.abw-cm-intro{font:500 12px/1.55 Inter;color:#6b7669;background:#faf8f1;border:1px solid #f0ede3;border-radius:10px;padding:9px 12px;margin:0 0 12px}
.abw-cm .abw-line{align-items:center}
.abw-cm-age{flex:none;font:700 10.5px Inter;letter-spacing:.02em;color:#8a918d;background:#f1f0ea;border-radius:99px;padding:2px 9px;white-space:nowrap}
.abw-cm-age.over{color:#b45309;background:#fef3c7}
.abw-cm-src{color:#9aa39b;font-weight:600}
/* the amber calm-glow — a soft inset+outset amber wash with a slow, low-amplitude breath */
.abw-cm-glow{background:linear-gradient(0deg,#fffdf6,#fffdf6);box-shadow:inset 3px 0 0 #e0a92e,0 0 0 0 rgba(224,169,46,.0);animation:abwCalmGlow 3.6s ease-in-out infinite}
@keyframes abwCalmGlow{0%,100%{box-shadow:inset 3px 0 0 #e0a92e,0 0 0 0 rgba(224,169,46,0)}50%{box-shadow:inset 3px 0 0 #e0a92e,0 0 10px 1px rgba(224,169,46,.28)}}
/* overdue commitment rows surfaced in the Needs-you tab / drawer — a quiet amber left edge */
.abw-cm-over{border-left:3px solid #e0a92e}

/* ── CRAIG'S ASKS ROWS (2026-07-29 iteration — readability + live state) ────────────────────
   Content-reader scale (Craig 7/28 item 2, #ops-modal .csp-body: 15.5px/1.75): the ask is
   Craig's own words, browsed in seconds — it earns the same reading size as a sit-and-read
   post, never the dense --fs-body feed default. Fixed px, not var(--fs-body,...), for the
   same reason the reader's sizes are fixed: a future global tightening of feed rows must
   never silently shrink Craig's own words back down. */
.abw-row.abw-ca{padding:13px 12px 12px}
.abw-ca .abw-line{align-items:flex-start;gap:10px}
.abw-ca-face{flex:none;width:26px;height:26px;border-radius:50%;object-fit:cover;background:#f3f1ea;border:1px solid #e7e2d4;margin-top:2px}
.abw-ca .abw-ask{font:700 15.5px/1.5 Inter;color:#1a1d1c}
.abw-ca .abw-what{font-size:13px;line-height:1.6;margin-top:6px}
.abw-ca .abw-meta{margin-top:8px;gap:8px;font-size:11px}
.abw-ca-who{font:600 11px Inter;letter-spacing:.02em;color:#7a827b}
/* the live link — deep-links a queued/running ask to its Mission Feed job row, or opens a
   done/needs-you ask's evidence file straight from the card (the same :9876 Finder-open
   bridge the statement rail uses). Only rendered when a real target resolved — no dead chrome. */
.abw-ca-live{display:inline-flex;align-items:center;gap:4px;font:600 11.5px Inter;color:var(--signal,#3e7d5c);
  text-decoration:none;border:1px solid #d6e6db;border-radius:999px;padding:2px 9px;white-space:nowrap;
  background:#fff;cursor:pointer;transition:border-color .12s}
.abw-ca-live:hover{border-color:var(--brand-line,#b9d8b4)}
.abw-row.abw-ca.abw-click:hover{background:#f7faf7}
@media (prefers-reduced-motion:reduce){ .abw-cm-glow{animation:none;box-shadow:inset 3px 0 0 #e0a92e,0 0 8px 1px rgba(224,169,46,.22)} }

/* ── ✕ PER-ROW DISMISS (Craig 8/4 8:44a: "I want a way to delete things in My Study") ──────────
   Quiet by default and only ever confident on hover — this button retires a record at the
   SOURCE, so it must never sit on the row louder than the row's own ask. Court-honest: no gold
   (gold asks something of Craig; this answers), and the hover is steel, not alarm — alarm is
   Craig-court only, and a dismiss he chose is not an alarm. Sized to the same flex:none pill
   slot the chips and ✓ verbs already occupy on .abw-line. */
.abw-x{flex:none;font:700 12px/1 Inter;border:1px solid transparent;border-radius:999px;
  background:transparent;color:#a9b3ab;padding:3px 7px;cursor:pointer;white-space:nowrap;
  transition:color .12s,background .12s,border-color .12s}
.abw-x:hover{color:#5c6a60;background:#eef1ee;border-color:#d9ded9}
.abw-x:focus-visible{outline:2px solid var(--signal,#3e7d5c);outline-offset:1px}
.abw-x:disabled{opacity:.5;cursor:default}
.abw-ca .abw-x{margin-top:3px}
/* THE VEIL LAPSED AND THE ROW CAME BACK. Craig dismissed this and the engine did not retire it —
   that is a broken promise, and it says so on the row rather than in a toast that has faded. */
.abw-dm-stuck{margin:6px 0 0;font:600 var(--fs-micro,11px) Inter;color:#8a5a0f;background:#fdf6e6;
  border:1px solid #f0dfb4;border-radius:8px;padding:6px 9px;line-height:1.4}
