/* v111 — night build Oct 7–8 2026 (plan B4 · B5 · B8 · B9, the WORK and CONTROL builder). Tokens only.
   · .xs-*   the steps of a Dottpace run on an action (pages/lactions.js execSection), Review rollback and Resume (the same row), Stop new work's banner
   · .mm-go  Memory's structured rows — the fact lives in its setting; the row opens it (ui/memory.js)
   · .stg-warn a settings line that warns (the seat note in Invite, a failed export)
   Loaded by pages/lactions.js (one <link>, added once) until app/index.html links it after v110-motion.css. */

/* ---------- the run's line ---------- */
.xs-sum{display:flex;align-items:flex-start;gap:8px;margin:0 0 10px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.xs-sum svg{flex:none;margin-top:3px;color:var(--fg-3)}
.xs-sum b{font-weight:var(--w-semibold);color:var(--fg)}
.xs-sum.t-green svg{color:var(--pos-ink)}
.xs-sum.t-orange svg{color:var(--warn-ink)}
.xs-sum.t-blue svg{color:var(--info-ink)}

/* ---------- one row per step ---------- */
.xs-list{list-style:none;margin:0;padding:0;border:1px solid var(--ln-3);border-radius:var(--r-8)}
.xs-r{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:4px 10px;align-items:start;padding:10px 12px;border-top:1px solid var(--ln-3)}
.xs-r:first-child{border-top:0}
.xs-ic{display:flex;margin-top:2px;color:var(--fg-4)}
.xs-r.is-applied .xs-ic,.xs-r.is-rb-available .xs-ic{color:var(--pos-ink)}
.xs-r.is-failed .xs-ic{color:var(--neg-ink)}
.xs-r.is-access .xs-ic,.xs-r.is-unknown .xs-ic,.xs-r.is-rb-conflicting .xs-ic,.xs-r.is-rb-review .xs-ic{color:var(--warn-ink)}
.xs-r.is-running .xs-ic,.xs-r.is-retrying .xs-ic{color:var(--info-ink)}
.xs-r.is-running .xs-ic svg{animation:xs-spin var(--dur-spin) linear infinite}
@keyframes xs-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.xs-r.is-running .xs-ic svg{animation:none}}
.xs-b{min-width:0}
.xs-t{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}
.xs-l{min-width:0;font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--fg);overflow-wrap:anywhere}
.xs-n{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.xs-m,.xs-w,.xs-rb{margin:2px 0 0;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow-wrap:anywhere}
.xs-w{color:var(--fg-2)}
.xs-rb{display:flex;align-items:flex-start;gap:6px}
.xs-rb svg{flex:none;margin-top:2px}
.xs-rb b{font-weight:var(--w-semibold);color:var(--fg-2)}
.xs-rb.is-conflicting b,.xs-rb.is-review b{color:var(--warn-ink)}
.xs-a{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.xs-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.xs-acts:empty{display:none}
.btn.xs-danger{background:var(--st-red-bg);color:var(--neg-ink)}
@media (hover:hover){.btn.xs-danger:hover{background:color-mix(in srgb,var(--c-red) 18%,var(--bg))}}

/* ---------- Stop new work: the banner while it's on ---------- */
.xs-stop{display:flex;align-items:flex-start;gap:10px;margin:0 0 14px;padding:12px 14px;border-radius:var(--r-12);border:1px solid color-mix(in srgb,var(--c-orange) 45%,var(--bd-tl));background:var(--bg-4);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.xs-stop>svg{flex:none;margin-top:2px;color:var(--warn-ink)}
.xs-stop b{font-weight:var(--w-semibold);color:var(--fg)}
.xs-stop .btn{flex:none}
.fd .xs-stop{margin:0 0 12px}

/* ---------- Memory: a structured fact opens its setting ---------- */
.mm-r.is-struct .mm-s{display:flex;flex-wrap:wrap;gap:2px 6px}
.mm-go{flex:none;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.mm-old{margin:2px 0 0;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--warn-ink)}
.mm-note{margin:0 0 10px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}

/* ---------- settings: a line that warns ---------- */
.stg-warn{display:flex;align-items:flex-start;gap:8px;color:var(--warn-ink)}
.stg-warn svg{flex:none;margin-top:3px}

@media (max-width:640px){
  .xs-r{grid-template-columns:20px minmax(0,1fr)}
  .xs-a{grid-column:2;justify-content:flex-start}
  .xs-stop{flex-wrap:wrap}
  .xs-stop .grow{flex:1 1 calc(100% - 30px)}
  .xs-stop .btn{margin-left:26px}
  .mm-r.is-struct{flex-wrap:wrap}
  .mm-r.is-struct .mm-go{margin-left:auto}
}

/* ---------- Plans & billing: the four dates inside "Cancel your plan?" (B9) ---------- */
.pp-cx .pp-lc{margin:8px 0 10px}
.pp-cx.is-done{display:block}
@media (max-width:640px){.pp-cx{flex-wrap:wrap}.pp-cx .pp-cxb{width:100%}}

/* loop fix (C6 · visual): on a phone each fact of an approval row reads label | value, and the value's second line starts under the value — the value
   keeps its place beside the label (it used to wrap under it at the left while its sub-line stayed in the second column, so rows looked staggered) */
@container pg (max-width:760px){
  .apq-row > :nth-child(n+4):nth-child(-n+7) > :is(.k,.apq-who){flex:1 1 0;min-width:0}
  .apq .apq-row > :nth-child(n+4):nth-child(-n+7)[data-label]::before{width:104px;white-space:normal}   /* a long label ("Expected · Minimum (useful)") wraps in its column */
}

/* ---------- P6 L6: the Plan board's "+N made by Dottpace inside Website pages — see Results" (pages/lactions.js alsoLine) ---------- */
.kb-also{display:block;margin-top:2px;padding:6px 8px;border-radius:var(--r-8);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);text-decoration:none;text-wrap:pretty}
.kb-also svg{display:inline-block;vertical-align:-2px;margin-left:2px;color:var(--fg-4)}
@media (hover:hover){.kb-also:hover{background:var(--bg);color:var(--fg-2)}}
.kb-board.is-one .kb-also{grid-column:1/-1}
/* ---------- loop fix (round 1, Oct 8) ---------- */
/* the measuring facts share the box's width — a full-width "Reading so far" row kept auto-fit from collapsing its empty tracks (4 cells in 60% of it) */
.fd-res.is-cols{grid-template-columns:repeat(var(--rc,4),minmax(0,1fr))}
@container pg (max-width:760px){.fd-res.is-cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Results: a harm alert keeps "Being measured" teal, with its alert mark beside it */
.r-vchip{display:inline-flex;align-items:center;gap:4px}
.r-alert{display:inline-flex;color:var(--st-red-fg)}
/* the action bar: "Nothing starts until it is approved." is its own line under the buttons — never a fragment beside the two that wrapped, and
   without the Ask panel's padding (.ap-note is also its class) that set it 5px off the buttons' centre */
.fd-acts > .ap-note{flex:1 1 100%;order:99;padding:0;margin-top:-2px;font-size:var(--t-co);line-height:var(--lh-co)}
.kb-hd > .kb-due{white-space:nowrap;margin-left:auto}
/* Dottpace as the assignee: since identity v1.0 its avatar is the Matte Black tile (ui/brand.js dpMark · styles/v119-identity.css) — never a bare glyph */
