/* ===== Pursue — the pre-sale section (docs/design/pursue/) =================
 *
 * Layout-only rules for the eight Pursue screens and the Deal Room. Every
 * colour, radius, spacing and shadow is a token from design-review.css §1;
 * this file introduces NO token of its own, so there is nothing to mirror in
 * theme-dark.css (DESIGN-GUIDELINES §2.2 iron rule). Components come from the
 * system: .u-btn, [role="tab"], .badge-*, .empty-state, the one card shell —
 * nothing here restyles any of them (CONTRACT-PURSUE R7).
 *
 * Item agents: add your screen's layout rules under a `.pursue-<item>` prefix
 * BELOW the shared block. A new token goes in design-review.css, light AND
 * dark, in the same change — never here.
 * ========================================================================== */

/* ---- shell: tab bar · toolbar (chip LEFT, tools/CTA RIGHT) · body -------- */
.pursue-screen { padding: 4px 2px; }
.pursue-toolbar {
  display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap;
  margin-bottom: var(--sp-4);
}
.pursue-toolbar-spacer { flex: 1 1 auto; }
/* The tools slot is ONE row: filters (label above control) and the CTA sit
   side by side, bottoms aligned, wrapping only when the row is too narrow. */
.pursue-toolbar-tools { display: flex; align-items: flex-end; gap: var(--sp-3); flex-wrap: wrap; justify-content: flex-end; }
.pursue-toolbar-tools:empty { display: none; }
.pursue-toolbar-divider { width: 1px; height: 20px; margin-bottom: 7px; background: var(--border); }

/* ---- the Deal chip: a labelled compact dropdown (§5.7 owner rule) ----- */
.pursue-chip { display: inline-flex; align-items: center; gap: var(--sp-2); }
.pursue-chip-label { font-size: 12px; font-weight: 600; color: var(--text-secondary); }
/* Every Pursue control in a toolbar, filter bar or inline form is the 34px
   control (--btn-h-sm): the height of the .u-btn beside it and of Config
   Audit Log's filters. These rules used to read var(--btn-h, 34px), but
   --btn-h exists (40px, the "regular" tier), so the fallback never applied and
   every select and input stood 6px taller than the buttons in its own row. */
.pursue-chip select {
  height: var(--btn-h-sm, 34px); padding: 0 10px; font-size: 13px; box-sizing: border-box;
  font-family: var(--font); color: var(--text-primary); background: var(--bg-card);
  border: 1px solid var(--border); border-radius: var(--radius-sm); max-width: 320px;
}
.pursue-chip-hint { font-size: 12px; color: var(--text-muted); }
/* "2 more deals aren't linked to SS Demo — link one": the env-filter hint and
   its one inline action, drawn as a link so it reads as part of the sentence. */
.pursue-chip-env-hint { white-space: nowrap; }
.pursue-chip-link {
  background: none; border: none; padding: 0; margin: 0; font: inherit; font-weight: 600;
  color: var(--accent); cursor: pointer; text-decoration: underline; text-underline-offset: 2px;
}
.pursue-chip-link:hover, .pursue-chip-link:focus-visible { color: var(--accent-light); outline-offset: 2px; }
/* the picker behind it: one button per hidden deal, name over stage */
.pursue-env-picker { display: flex; flex-direction: column; gap: var(--sp-1, 4px); max-height: 50vh; overflow: auto; }
.pursue-env-pick {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px; width: 100%; text-align: left;
  padding: 8px 10px; font: inherit; color: var(--text-primary); background: var(--bg-card);
  border: 1px solid var(--border); border-radius: var(--radius-sm); cursor: pointer;
}
.pursue-env-pick:hover, .pursue-env-pick:focus-visible { border-color: var(--accent); background: var(--accent-soft); }
.pursue-env-pick-name { font-weight: 600; font-size: 13px; }
.pursue-env-pick-meta { font-size: 12px; color: var(--text-muted); }

/* ---- one caret, one row height ------------------------------------------
 * .pursue-caret is the chevron pursue-core.js puts where a menu label wrote
 * "▾" (Print ▾, More ▾, Export ▾). Drawn here, once: a 10px stroke chevron in
 * currentColor, centred by the button's inline-flex box, so it sits on the
 * middle of the word at every size and in both themes. The group twists
 * (Library .pdl-twist, Selection [data-toggle-group]) are the same chevron,
 * rotated a quarter-turn while their group is collapsed. */
.pursue-caret, .pursue-screen .pdl-twist::before, .pursue-screen [data-toggle-group]::before {
  content: ''; display: inline-block; flex: 0 0 auto; width: 10px; height: 10px;
  background-color: currentColor; font-size: 0; line-height: 0;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M2 3.5 5 6.5 8 3.5' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 10px 10px no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M2 3.5 5 6.5 8 3.5' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 10px 10px no-repeat;
  transition: transform var(--transition, .15s);
}
.pursue-caret { margin-left: -2px; opacity: .8; }
.pursue-caret--up { transform: rotate(180deg); }
.pursue-screen .pdl-twist[aria-expanded="false"]::before,
.pursue-screen [data-toggle-group][aria-expanded="false"]::before { transform: rotate(-90deg); }
/* The twist is a bare chevron in front of the group name. ui-normalize reads
   its one-glyph label as an icon button and re-dresses it as a 30px bordered
   pill (u-btn--icon, !important); this undoes that for the twist only. The
   glyph itself is hidden (font-size 0) — ::before above is what shows. */
body .pursue-screen .pdl-twist.u-btn {
  min-width: 20px !important; min-height: 20px !important; width: 20px; height: 20px;
  padding: 0 !important; margin-right: 6px; vertical-align: middle;
  background: none !important; border: 0 !important; box-shadow: none !important;
  border-radius: var(--radius-sm) !important; color: var(--text-muted) !important; font-size: 0 !important;
}
body .pursue-screen .pdl-twist.u-btn:hover { color: var(--text-primary) !important; background: var(--bg-page) !important; }
body .pursue-screen [data-toggle-group].u-btn { font-size: 0 !important; color: var(--text-secondary) !important; }
/* One row = one button height (design-review §5): the toolbar's buttons are
   the 34px default. A module that wrote u-btn--sm there (Open room, More ⋮)
   stood 5px short of the Run / Print / Present buttons beside it. */
body .pursue-toolbar .u-btn--sm { min-height: 34px !important; padding: 0 15px !important; font-size: 13px !important; }
body .pursue-toolbar .u-btn--icon { min-width: 34px !important; min-height: 34px !important; }

/* ---- filter bar (Config Audit Log pattern: label above a 34px control) --- */
.pursue-filters { display: flex; gap: var(--sp-3); flex-wrap: wrap; align-items: flex-end; }
.pursue-filter { display: flex; flex-direction: column; gap: var(--sp-1); }
.pursue-filter > label { font-size: 12px; font-weight: 600; color: var(--text-secondary); }
/* Half the screens write the filter as <label class="pursue-filter">Area
   <select></label> (the caption is a bare text node), the other half as a div
   with a <label> child. Both get the same 12px/600 caption; the control inside
   resets to the 13px/400 value text. */
label.pursue-filter { font-size: 12px; font-weight: 600; color: var(--text-secondary); }
.pursue-filter select, .pursue-filter input:not([type="checkbox"]):not([type="radio"]) {
  height: var(--btn-h-sm, 34px); box-sizing: border-box; font-weight: 400;
  padding: 0 10px; font-size: 13px; font-family: var(--font);
  color: var(--text-primary); background: var(--bg-card);
  border: 1px solid var(--border); border-radius: var(--radius-sm); min-width: 140px;
}
/* A checkbox filter sits inline with its label, bottom-aligned with the 34px
   controls beside it — the column layout + input sizing above would otherwise
   stretch the box to 140×34 and drop its label underneath. */
.pursue-filter--check, label.pursue-filter.pursue-filter--check { flex-direction: row; align-items: center; gap: 6px;
  min-height: var(--btn-h-sm, 34px); font-size: 13px; font-weight: 400; color: var(--text-primary); cursor: pointer; white-space: nowrap; }
.pursue-filter--check input { margin: 0; }

/* ---- pipeline tiles: User Pools' stat tiles, each a filter button -------- */
.pursue-tiles { display: flex; gap: var(--sp-3); flex-wrap: wrap; margin-bottom: var(--sp-4); }
.pursue-tile {
  appearance: none; text-align: left; cursor: pointer; min-width: 120px;
  background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius);
  padding: var(--sp-3) var(--sp-4); font-family: var(--font); color: var(--text-primary);
  box-shadow: var(--shadow-sm);
}
/* §13.1's blanket `#content-area button { border-radius: var(--btn-radius) }`
   (999px) outranks a bare class, so the filter tiles were drawn as capsules.
   A tile is a card, not a button: give it the card radius back. */
#content-area .pursue-tile { border-radius: var(--radius); }
.pursue-tile[aria-pressed="true"] { border-color: var(--accent); box-shadow: inset 3px 0 0 var(--accent); }
.pursue-tile-n { font-size: 21px; font-weight: 700; font-variant-numeric: tabular-nums; }
.pursue-tile-k { font-size: 11px; color: var(--text-muted); margin-top: var(--sp-1); }

/* ---- card grid (user-pools.js:100-133 constants, verbatim) --------------- */
.pursue-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 380px));
  gap: var(--sp-4); justify-content: start;
}
.pursue-group { margin-bottom: var(--sp-5); }
.pursue-group-head {
  display: flex; align-items: center; gap: var(--sp-2); margin-bottom: var(--sp-3);
  font-size: 11px; font-weight: 600; letter-spacing: 0.4px; text-transform: uppercase; color: var(--text-secondary);
}
.pursue-group-head::after { content: ''; flex: 1; height: 1px; background: var(--border-light); }
.pursuit-card {
  background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px;
  padding: var(--sp-4); display: flex; flex-direction: column; gap: var(--sp-3); min-height: 210px;
  box-shadow: var(--shadow-sm); min-width: 0;
}
.pursuit-card-title {
  display: flex; align-items: center; gap: var(--sp-2);
}
.pursuit-card-name {
  font-weight: var(--fw-item); font-size: var(--fs-item); flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-primary);
}
.pursuit-card dl {
  margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 4px 10px;
  font-size: 12px; color: var(--text-secondary);
}
.pursuit-card dt { color: var(--text-muted); }
.pursuit-card dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.pursuit-artifacts {
  display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-3); font-size: 12px; color: var(--text-secondary);
}
.pursuit-artifact { text-decoration: none; color: inherit; font-variant-numeric: tabular-nums; }
.pursuit-artifact[data-empty="true"] { color: var(--text-muted); }
.pursuit-card-foot {
  display: flex; gap: var(--sp-2); align-items: center; padding-top: var(--sp-3);
  border-top: 1px solid var(--border-light); margin-top: auto; flex-wrap: wrap;
}
.pursue-display-id { font-family: var(--mono); font-size: 11px; color: var(--text-muted); }

/* ---- the room ------------------------------------------------------------ */
.pursuit-room-head { display: flex; flex-direction: column; gap: var(--sp-2); margin-bottom: var(--sp-4); }
.pursuit-room-title { display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.pursuit-room-name { font-size: var(--fs-item); font-weight: var(--fw-item); color: var(--text-primary); }
.pursuit-room-meta { font-size: 13px; color: var(--text-secondary); }
.pursuit-room-actions { display: flex; gap: var(--sp-2); align-items: center; flex-wrap: wrap; }
.pursuit-back { font-size: 13px; color: var(--accent); text-decoration: none; }
.pursuit-overview { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--sp-4); }
@media (max-width: 900px) { .pursuit-overview { grid-template-columns: minmax(0, 1fr); } }
.pursuit-panel {
  background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius);
  padding: var(--sp-4); box-shadow: var(--shadow-sm); min-width: 0;
}
.pursuit-panel-eyebrow {
  font-size: 11px; font-weight: 600; letter-spacing: 0.4px; text-transform: uppercase;
  color: var(--text-secondary); margin-bottom: var(--sp-3);
}
.pursuit-artifact-row {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) auto auto; gap: var(--sp-3);
  align-items: center; padding: var(--sp-2) 0; border-bottom: 1px solid var(--border-light); font-size: 13px;
}
.pursuit-artifact-row:last-child { border-bottom: none; }
.pursuit-artifact-kind { color: var(--text-secondary); }
.pursuit-artifact-open { color: var(--accent); text-decoration: none; }
.pursuit-table-wrap { overflow-x: auto; }
.pursuit-table { width: 100%; border-collapse: collapse; }
.pursuit-table th {
  text-align: left; font-size: 11px; font-weight: 600; letter-spacing: 0.4px; text-transform: uppercase;
  color: var(--text-secondary); padding: 10px 12px; border-bottom: 1px solid var(--border); background: var(--bg-card);
  position: sticky; top: 0;
}
.pursuit-table td { font-size: 13px; padding: 10px 12px; border-bottom: 1px solid var(--border-light); color: var(--text-primary); }
.pursuit-table tr:hover td { background: var(--accent-soft); }
.pursuit-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.pursuit-overdue { color: var(--danger); }
.pursuit-done { color: var(--text-muted); text-decoration: line-through; }
.pursuit-inline-form {
  border-left: 3px solid var(--accent); background: var(--bg-page); border-radius: var(--radius-sm);
  padding: var(--sp-3) var(--sp-4); margin-top: var(--sp-3);
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--sp-3);
}
.pursuit-inline-form .field { margin: 0; }
.pursuit-inline-form .field > label { display: block; font-size: 12px; font-weight: 600; color: var(--text-secondary); margin-bottom: var(--sp-1); }
.pursuit-inline-form input:not([type="checkbox"]):not([type="radio"]), .pursuit-inline-form select, .pursuit-notes textarea,
.pursue-modal-form input:not([type="checkbox"]):not([type="radio"]), .pursue-modal-form select, .pursue-modal-form textarea {
  width: 100%; min-height: var(--btn-h, 40px); padding: 0 10px; font-size: 13px; font-family: var(--font);
  color: var(--text-primary); background: var(--bg-card);
  border: 1px solid var(--border); border-radius: var(--radius-sm); box-sizing: border-box;
}
.pursuit-notes textarea, .pursue-modal-form textarea { padding: 8px 10px; min-height: 72px; }
/* Modal fields keep the 40px tier UI.field gives every other modal; an inline
   form sits in a panel beside 34px buttons, so it takes the control tier. */
.pursuit-inline-form input:not([type="checkbox"]):not([type="radio"]), .pursuit-inline-form select { min-height: var(--btn-h-sm, 34px); }
/* A page-level table of inputs (Estimator › Rates) is a grid of row cells:
   the control tier, not the modal one. */
.pursue-modal-form td input:not([type="checkbox"]):not([type="radio"]), .pursue-modal-form td select { min-height: var(--btn-h-sm, 34px); }
.pursuit-inline-form-actions { grid-column: 1 / -1; display: flex; gap: var(--sp-2); justify-content: flex-end; }
.pursuit-note { padding: var(--sp-3) 0; border-bottom: 1px solid var(--border-light); font-size: 13px; }
.pursuit-note-when { font-size: 11px; color: var(--text-muted); margin-bottom: var(--sp-1); }
.pursuit-caption { font-size: 12px; color: var(--text-muted); }
.pursuit-timeline {
  border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; background: var(--bg-card);
}
.pursuit-timeline-row { display: flex; gap: 8px; align-items: baseline; padding: 3px 0; font-size: 11.5px; }
.pursuit-timeline-row[data-done="false"] { opacity: .42; }
.pursuit-timeline-when { font-size: 10px; color: var(--text-secondary); }
.pursue-modal-form .field { margin-bottom: var(--sp-4); }
.pursue-modal-form .field > label { display: block; font-size: 12px; font-weight: 600; color: var(--text-secondary); margin-bottom: var(--sp-1); }
.pursue-modal-form .field-help { font-size: 12px; color: var(--text-muted); margin-top: var(--sp-1); }
.pursue-modal-form .field-error { font-size: 12px; color: var(--danger); margin-top: var(--sp-1); }
.pursue-modal-form .is-invalid { border-color: var(--danger); }
.pursue-modal-form .field-optional { font-size: 11px; font-weight: 500; color: var(--text-muted); margin-left: var(--sp-1); }
.pursue-checks { display: flex; gap: var(--sp-4); flex-wrap: wrap; font-size: 13px; color: var(--text-primary); }
.pursue-checks label { display: inline-flex; align-items: center; gap: var(--sp-1); }
.pursue-check-list label { display: flex; align-items: flex-start; gap: var(--sp-2); font-size: 13px; padding: var(--sp-1) 0; color: var(--text-primary); }
.pursue-check-list label[data-disabled="true"] { color: var(--text-muted); }
.pursue-check-reason { font-size: 12px; color: var(--text-muted); }
.pursue-disclosure {
  margin: 6px 0 12px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--bg-page);
}
.pursue-disclosure > summary {
  cursor: pointer; font-size: 13px; font-weight: 600; color: var(--text-primary); padding: 10px 12px;
  display: flex; align-items: center; gap: 8px; list-style: none;
}
.pursue-disclosure-body { padding: 0 12px 12px; }
.pursue-disclosure-help { font-size: 12px; color: var(--text-muted); line-height: 1.45; margin: 0 0 10px; }
.pursue-swatches { display: flex; gap: var(--sp-1); align-items: center; }
.pursue-swatch { width: 22px; height: 22px; border-radius: 6px; border: 1px solid var(--border); }
.pursue-logo-preview { max-height: 32px; max-width: 140px; }
.pursue-url {
  display: flex; gap: var(--sp-2); align-items: center; font-family: var(--mono); font-size: 12px;
  color: var(--text-primary); background: var(--bg-page); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: var(--sp-2) var(--sp-3); overflow-wrap: anywhere;
}
.pursue-share-row { padding: var(--sp-3) 0; border-bottom: 1px solid var(--border-light); }
.pursue-share-row:last-child { border-bottom: none; }
.pursue-share-head { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: var(--sp-2); }
.pursue-convert-steps { display: flex; gap: var(--sp-3); font-size: 12px; color: var(--text-muted); margin-bottom: var(--sp-3); }
.pursue-convert-steps [aria-current="step"] { color: var(--accent); font-weight: 600; }
.pursue-notice {
  font-size: 13px; color: var(--text-primary); background: var(--bg-page); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: var(--sp-3) var(--sp-4);
}
.pursue-notice[data-tone="danger"] { border-color: var(--danger); }
.pursue-skeleton {
  height: 22px; border-radius: 6px; background: var(--border-light);
}

/* ---- engagement (pursue-engagement.js — the ONE renderer, X4) ------------ */
.pe-summary { display: flex; gap: var(--sp-3); flex-wrap: wrap; font-size: 13px; color: var(--text-primary); margin-bottom: var(--sp-3); font-variant-numeric: tabular-nums; }
.pe-summary span + span::before { content: '·'; color: var(--text-muted); margin-right: var(--sp-3); }
.pe-bars { display: grid; grid-template-columns: minmax(80px, auto) minmax(0, 1fr) auto; gap: var(--sp-1) var(--sp-3); align-items: center; font-size: 12px; }
.pe-bar-label { color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pe-bar-track { height: 10px; background: var(--border-light); border-radius: 99px; overflow: hidden; }
.pe-bar { height: 100%; background: var(--accent); border-radius: 99px; }
.pe-bar-val { font-variant-numeric: tabular-nums; color: var(--text-primary); text-align: right; }
.pe-empty { font-size: 13px; color: var(--text-muted); }
.pe-foot { font-size: 12px; color: var(--text-muted); margin-top: var(--sp-2); }

/* ---- 375 px: one column, nothing scrolls sideways ------------------------ */
@media (max-width: 480px) {
  /* The tools slot right-aligns on a desktop row; on a phone it wraps under
     the chip, so it starts at the left edge and its filters share the width
     instead of stepping down the right-hand side one by one. */
  .pursue-toolbar-spacer { display: none; }
  .pursue-toolbar-tools, .pursue-filters { justify-content: flex-start; width: 100%; }
  .pursue-filter:not(.pursue-filter--check) { flex: 1 1 140px; min-width: 0; }
  .pursue-filter select, .pursue-filter input:not([type="checkbox"]):not([type="radio"]) { width: 100%; }
  .pursue-toolbar-divider { display: none; }
  .pursue-grid { grid-template-columns: minmax(0, 1fr); }
  .pursue-tile { min-width: calc(50% - var(--sp-2)); flex: 1 1 calc(50% - var(--sp-2)); }
  .pursue-chip select, .pursue-filter select, .pursue-filter input { max-width: 100%; min-width: 0; }
  .pursuit-artifact-row { grid-template-columns: minmax(0, 1fr) auto; }
  .pursuit-artifact-row > :nth-child(2) { grid-column: 1 / -1; }
}

/* ── Presentations: Studio / runner / Backstage (moved from pursue-presentations.js) ── */
.pp-studio{display:grid;grid-template-columns:220px minmax(0,1fr) 300px;gap:var(--sp-4);align-items:start}
@media (max-width:1100px){.pp-studio{grid-template-columns:1fr}}
.pp-rail{display:grid;gap:var(--sp-2)}
.pp-rail-item{display:grid;grid-template-columns:22px 1fr;gap:var(--sp-2);align-items:start;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);cursor:pointer;text-align:left;font:inherit;color:var(--text-primary)}
#content-area .pp-rail-item{border-radius:var(--radius-sm)} /* a slide-list row, not a §13.1 pill button */
.pp-rail-item[aria-current="true"]{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.pp-rail-n{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums}
.pp-rail-k{font-size:11px;color:var(--text-muted)}
.pp-canvas{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);min-height:360px;overflow:hidden}
.pp-canvas iframe{width:100%;height:480px;border:0;display:block;background:var(--bg-secondary)}
.pp-inspector{display:grid;gap:var(--sp-3)}
.pp-takes{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--sp-3)}
.pp-take{border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-3);background:var(--bg-card);display:grid;gap:var(--sp-2)}
.pp-take ol{margin:0;padding-left:18px;font-size:13px}
.pp-composer{display:grid;gap:var(--sp-2);margin-bottom:var(--sp-4)}
.pp-composer textarea{width:100%;min-height:72px;font:inherit;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--text-primary)}
.pp-composer-row{display:flex;gap:var(--sp-3);flex-wrap:wrap;align-items:center}
.pursue-present{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;height:calc(100vh - 120px);min-height:420px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;outline:none}
body.is-chromeless .pursue-present{height:100vh;border:0;border-radius:0}
.pursue-present-bar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border)}
.pursue-present-title{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pursue-present-progress{font-variant-numeric:tabular-nums;color:var(--text-secondary);font-size:13px}
.pursue-present-tools{margin-left:auto;display:flex;gap:var(--sp-1);flex-wrap:wrap}
.pursue-present-stage{position:relative;min-height:0}
.pursue-present-stage iframe{width:100%;height:100%;border:0;display:block}
.pursue-present-black{position:absolute;inset:0;background:var(--text)}
.pursue-present-notes{padding:var(--sp-3);border-top:1px solid var(--border);font-size:14px;color:var(--text-primary);white-space:pre-wrap;max-height:160px;overflow:auto}
.pursue-present-track{height:4px;background:var(--bg-secondary)}
.pursue-present-fill{height:100%;background:var(--accent);transition:width .3s}
.pursue-backstage{display:grid;gap:var(--sp-4);padding:var(--sp-4);min-height:100vh;background:var(--bg);color:var(--text-primary)}
.pursue-backstage-head{display:flex;gap:var(--sp-4);align-items:baseline;font-variant-numeric:tabular-nums}
.pursue-backstage-pos{font-size:28px;font-weight:700}
.pursue-backstage-clock{font-size:22px;color:var(--text-secondary)}
.pursue-backstage-title{font-size:26px;font-weight:700;margin-bottom:var(--sp-2)}
.pursue-backstage-notes{font-size:20px;line-height:1.45;max-width:60rem}
.pursue-backstage-next{color:var(--text-secondary);font-size:18px}
.pursue-backstage-keys{display:flex;gap:var(--sp-2);flex-wrap:wrap}
.pp-cards{display:grid;gap:var(--sp-3)}
.pp-card{border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-5);background:var(--bg-card);display:grid;gap:var(--sp-3)}
.pp-card[hidden]{display:none}
.pp-card-eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent));font-weight:600}
.pp-card-title{font-size:22px;font-weight:700}
.pp-card-title--big{font-size:clamp(28px,4vw,48px)}
.pp-card-sub{color:var(--text-secondary);font-size:18px;margin:0}
.pp-card-value{font-size:clamp(32px,6vw,72px);font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--accent))}
.pp-card-shots{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.pp-card-shots figure{margin:0;display:grid;gap:var(--sp-1)}
.pp-card-shots img,.pp-card-slides img{width:100%;border-radius:var(--radius-sm);border:1px solid var(--border)}
.pp-card-slides{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-2)}
.pp-card-points{margin:0;padding-left:20px;display:grid;gap:var(--sp-1);font-size:18px}
.pp-card-attribution{color:var(--text-secondary)}
.pp-no-model{margin-bottom:var(--sp-3)}

/* ---- deal-room ---- */
/* The list is one table (Agents vocabulary): the deal cell carries the name,
   the display id and the artifact strip; the last cell is Open + the one ⋮. */
.pursuit-deals td { vertical-align: top; }
.pursuit-deal-cell { min-width: 260px; width: 38%; }
.pursuit-deals th:nth-child(4), .pursuit-deals td:nth-child(4) { min-width: 170px; }   /* Next step reads as a sentence at 1024 too */
.pursuit-deal-name { font-weight: 600; color: var(--text-primary); overflow-wrap: anywhere; }
.pursuit-deal-name .pursue-display-id { white-space: nowrap; }
.pursuit-deal-cell .pursuit-artifacts { margin-top: var(--sp-1); }
.pursuit-row-actions { white-space: nowrap; text-align: right; }
.pursuit-row-actions .u-btn + .u-btn { margin-left: var(--sp-1); }
.pursuit-artifact-row .pursuit-artifact-open { justify-self: end; }
/* The shell's `.pursue-modal-form input` rule (34px, full width) also hits
   checkboxes; the section / product / target checklists want a plain box. */
.pursue-modal-form .pursue-check-list input[type="checkbox"], .pursue-modal-form .pursue-checks input[type="checkbox"],
.pursue-modal-form .field > label > input[type="checkbox"] { width: auto; min-height: 0; padding: 0; flex: 0 0 auto; margin-top: 2px; }
/* ---- end deal-room ---- */

/* ---- roi ---- */
/* Pursue › ROI (frontend/js/pursue-roi.js): the Models grid tiles, the stage
   (New Study stepper anatomy), the Review panels and the set page. Tokens only;
   the portal's few rules are injected by the module because share.html does
   not load this file. */
.pursue-roi-tiles{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.pursue-roi-tile{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:150px;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text);text-align:left;cursor:pointer}
.pursue-roi-tile[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}
.pursue-roi-tile small{color:var(--text-muted);font-size:12px}
/* The tile is written as a .u-btn, whose §14 geometry is !important: it drew
   the two-line tile as a one-line 34px capsule and painted over the pressed
   state with the neutral fill. Restore the tile's own card shape and state. */
body .u-btn.pursue-roi-tile{display:flex !important;flex-direction:column !important;align-items:flex-start !important;justify-content:flex-start !important;min-height:0 !important;padding:var(--sp-3) !important;border-radius:var(--radius) !important;white-space:normal !important;line-height:1.3 !important;text-align:left}
body .u-btn.pursue-roi-tile[aria-pressed="true"]{border-color:var(--accent) !important;background:var(--accent-soft) !important;box-shadow:inset 0 0 0 1px var(--accent) !important;transform:none !important}
.pursue-roi-stage{display:flex;flex-direction:column;min-height:60vh;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);overflow:hidden}
.pursue-roi-stage-head{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border-light);flex-wrap:wrap}
.pursue-roi-stage-head .pursue-roi-title{font-weight:var(--fw-item,600);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pursue-roi-progress{height:4px;background:var(--border-light)}
.pursue-roi-progress>i{display:block;height:100%;background:var(--accent)}
.pursue-roi-progress-label{font-size:12px;color:var(--text-muted);white-space:nowrap}
.pursue-roi-stage-body{flex:1 1 auto;overflow:auto;padding:var(--sp-4);max-height:calc(100vh - 300px)}
.pursue-roi-eyebrow{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-1)}
.pursue-roi-card-title{font-size:var(--fs-item,18px);font-weight:var(--fw-item,600);margin:0 0 var(--sp-1)}
.pursue-roi-hint{color:var(--text-secondary);margin:0 0 var(--sp-4)}
.pursue-roi-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-3) var(--sp-4)}
.pursue-roi-field{display:flex;flex-direction:column;gap:4px;padding-left:var(--sp-2);border-left:3px solid transparent}
.pursue-roi-field[data-prov="derived"]{border-left-color:var(--partial)}
.pursue-roi-field[data-prov="confirmed"]{border-left-color:var(--pass-ink)}
.pursue-roi-field label{display:flex;justify-content:space-between;gap:var(--sp-2);font-size:13px;color:var(--text-primary)}
.pursue-roi-field input[type=number],.pursue-roi-rate input[type=number]{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--text);font:inherit;font-variant-numeric:tabular-nums}
.pursue-roi-field input[type=number]:focus{outline:2px solid var(--accent);outline-offset:1px}
.pursue-roi-prov{font-size:12px;white-space:nowrap;color:var(--text-muted)}
.pursue-roi-prov[data-tone="yours"]{color:var(--accent)}
.pursue-roi-prov[data-tone="derived"]{color:var(--partial)}
.pursue-roi-prov[data-tone="confirmed"]{color:var(--pass-ink)}
.pursue-roi-how{font-size:12px;color:var(--text-muted)}
.pursue-roi-how[data-tone="derived"]{color:var(--partial)}
.pursue-roi-field-actions{display:flex;gap:var(--sp-1)}
.pursue-roi-stage-foot{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border-light);background:var(--bg-card);flex-wrap:wrap}
/* The chip is a button that opens the Review; it reads as text in the footer. */
.pursue-roi-chip{flex:1 1 auto;min-width:0;justify-content:flex-start;text-align:left;font-variant-numeric:tabular-nums;color:var(--text-primary)}
.pursue-roi-chip b{font-weight:var(--fw-item,600)}
.pursue-roi-chip[data-unsaved="true"]::after{content:" · unsaved";color:var(--warning)}
.pursue-roi-nav{display:flex;gap:var(--sp-2);margin-left:auto;align-items:center}
.pursue-roi-hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-3);margin:var(--sp-3) 0}
.pursue-roi-hero-head{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.pursue-roi-stat{padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}
.pursue-roi-stat .pursue-tile-k{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}
.pursue-roi-stat .pursue-tile-n{font-size:22px;font-weight:var(--fw-item,600);color:var(--accent)}
.pursue-roi-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--sp-4);align-items:start}
.pursue-roi-gap{margin-top:var(--sp-4)}
.pursue-roi-gap-sm{margin-top:var(--sp-3)}
.pursue-roi-panel{border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-3);background:var(--bg-card);min-width:0}
.pursue-roi-panel .pursuit-panel-eyebrow,.pursue-roi-panel .pursue-roi-eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:var(--sp-2)}
.pursue-roi-panel .pursuit-table-wrap,.pursue-roi-table-wrap{overflow-x:auto}
.pursue-roi-muted{color:var(--text-secondary);font-size:13px;margin:var(--sp-1) 0}
.pursue-roi-totals{display:grid;gap:4px;margin:var(--sp-2) 0 0;font-size:13px}
.pursue-roi-totals div{display:flex;justify-content:space-between;gap:var(--sp-2)}
.pursue-roi-totals dt{color:var(--text-secondary)}
.pursue-roi-totals dd{margin:0;font-variant-numeric:tabular-nums;font-weight:var(--fw-item,600)}
.pursue-roi-table td:nth-child(n+2),.pursue-roi-table th:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}
.pursue-roi-table.is-text td,.pursue-roi-table.is-text th{text-align:left}
.pursue-roi-table tr.is-sum td{font-weight:var(--fw-item,600);border-top:1px solid var(--border)}
.pursue-roi-table th[data-base="true"],.pursue-roi-table td[data-base="true"]{background:var(--accent-soft);color:var(--text-primary)}
.pursue-roi-rate{display:flex;align-items:center;gap:4px;justify-content:flex-end}
.pursue-roi-rate input[type=number]{width:84px}
.pursue-roi-rate[data-edited="true"] input{border-color:var(--warning)}
.pursue-roi-review-foot{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-top:var(--sp-4)}
.pursue-roi-setting{margin-top:var(--sp-2)}
.pursue-roi-bars{display:grid;gap:6px}
.pursue-roi-bar{display:grid;grid-template-columns:minmax(120px,1fr) 2fr auto;gap:var(--sp-2);align-items:center;font-size:13px}
.pursue-roi-bar i{display:block;height:10px;border-radius:999px;background:var(--accent)}
.pursue-roi-bar-track{height:10px;background:var(--border-light);border-radius:999px;overflow:hidden}
.pursue-roi-notice{margin:var(--sp-3) 0}
.pursue-roi-version-list{display:flex;flex-direction:column;gap:6px}
.pursue-roi-version{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;font-size:13px}
.pursue-roi-formula{font-family:var(--mono);font-size:12px;color:var(--text-secondary);word-break:break-word}
.pursue-roi-set-form textarea,.pursue-roi-set-form input[type=text]{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--text);font:inherit}
.pursue-roi-set-form textarea{font-family:var(--mono);font-size:12px;min-height:44px}
.pursue-roi-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2)}
@media (max-width: 480px){.pursue-roi-stage-body{max-height:none;padding:var(--sp-3)}.pursue-roi-fields{grid-template-columns:1fr}.pursue-roi-tile{min-width:0;flex:1 1 45%}}
/* ---- end roi ---- */

/* ---- demo ---- */
.pursue-split{display:flex;gap:var(--sp-4);align-items:flex-start}
.pursue-split>.pursuit-table-wrap{flex:1 1 auto;min-width:0}
.pursue-pane{flex:0 0 0;width:0;overflow:hidden;transition:width .15s}
.pursue-pane.is-open{flex:0 0 440px;width:440px;overflow:visible;position:sticky;top:var(--sp-3);max-height:calc(100vh - 120px);display:flex;flex-direction:column}
.pursue-pane.is-open>.pursuit-card{display:flex;flex-direction:column;min-height:0;max-height:100%}
.pursue-pane .pursuit-card-name{white-space:normal;overflow:visible;text-overflow:clip}
/* the open pane takes the room the before · after column used; the list keeps name, tier and steps readable */
.pursue-split:has(.pursue-pane.is-open)>.pursuit-table-wrap .pursuit-table :is(th,td):nth-child(4){display:none}
.pursue-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--sp-2);margin-top:var(--sp-3)}
.pursue-thumb{display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit}
.pursue-thumb img{width:100%;aspect-ratio:4/3;object-fit:contain;border:1px solid var(--border);border-radius:var(--radius-sm,6px);background:var(--bg-page)}
.pursue-thumb:hover img{border-color:var(--accent)}
.pursue-pane-body{margin-top:var(--sp-3);min-height:0;flex:1 1 auto;overflow:auto}
.pursuit-table tr.pursue-group td{background:var(--bg-page);color:var(--text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:6px 12px}
.pursuit-table tr.pursue-group--sub td{text-transform:none;letter-spacing:0;font-weight:600;padding-left:24px;background:transparent}
.pursuit-table tr.pursue-discussion td{background:var(--bg-page);text-transform:none}
.pursuit-table tr.pursue-discussion td:first-child{border-left:3px solid var(--accent)}
.pursuit-table tr.is-selected td{background:var(--accent-soft)}
.pursuit-table tr[data-act="open"]{cursor:pointer}
.pursue-footnote{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin-top:var(--sp-3);color:var(--text-muted);font-size:12px}
.pursue-checklist{margin:6px 0 0;padding-left:18px;font-size:13px}
.pursue-checklist em{color:var(--text-muted);font-style:italic}
.pursue-rows{display:none}.pursue-rows.is-open{display:block}
.pursue-script .pursue-line{padding:2px 0;font-size:14px}.pursue-line-nav{font-weight:600;margin-top:8px}.pursue-line-step{padding-left:14px}.pursue-line-note{padding-left:28px;color:var(--text-muted);font-size:13px}.pursue-line-summary{margin-top:8px;color:var(--text-muted)}
.pursue-value{font-size:1.15em;letter-spacing:.02em}
.pursue-script-large .pursue-line{font-size:22px;padding:6px 0}.pursue-script-large .pursue-value{font-size:1.4em;font-family:var(--mono)}
/* Print ▾ / Present ▾ / More ▾ menus: the same panel as the kit's ⋮ menu
   (ui-kit.js S.MENU / S.MENU_ITEM) — 4px below the button, radius-sm, 4px
   inset, 7×10 rounded items — so the two menus on one toolbar match. */
.pursue-menu{position:relative;display:inline-block}.pursue-menu-list{display:none;position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:200px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:var(--sp-1)}
.pursue-menu-list.is-open{display:block}.pursue-menu-list a{display:block;padding:7px 10px;border-radius:var(--radius-sm);color:var(--text-primary);text-decoration:none;font-size:13px;line-height:1.35}.pursue-menu-list a:hover{background:var(--accent-soft)}
.pursue-board-head{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin:var(--sp-3) 0}
.pursue-system{margin:var(--sp-2) 0;border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px}.pursue-system summary{cursor:pointer;font-size:13px}
.pursue-sysrow{margin-top:8px;font-size:13px}
.pursue-sheet-head{margin-bottom:var(--sp-3)}
.pursue-move{white-space:nowrap}
.pursue-picklist{max-height:50vh;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px}
.pursue-pick{display:flex;gap:8px;align-items:center;padding:4px 0;font-size:13px}.pursue-picklist .pursue-group{color:var(--text-muted);font-size:12px;text-transform:uppercase;margin-top:8px}
.pursue-files{list-style:none;padding:0;margin:0}.pursue-files li{padding:4px 0}
.pursue-presenter{display:flex;flex-direction:column;min-height:85vh;padding:var(--sp-4)}
.pursue-presenter-head,.pursue-presenter-foot{display:flex;gap:var(--sp-3);align-items:center;color:var(--text-muted);font-size:13px}
.pursue-presenter-title{font-size:30px;font-weight:600;margin:var(--sp-3) 0;color:var(--text-primary)}
.pursue-presenter-notes{margin-top:auto;padding:var(--sp-3);background:var(--bg-page);border-radius:var(--radius);font-size:16px}
body.is-chromeless .pursue-presenter{min-height:95vh}
/* recording report (R2) */
.pursue-rec-head{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin:var(--sp-3) 0}
.pursue-rec-step{border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;margin-bottom:var(--sp-2)}
.pursue-rec-step>summary{display:flex;gap:var(--sp-2);align-items:center;cursor:pointer;font-size:14px}
.pursue-rec-step table{margin-top:var(--sp-2)}
.pursue-rec-panes{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.pursue-rec-panes pre{max-height:240px;overflow:auto;font-family:var(--mono);font-size:12px;background:var(--bg-page);border-radius:var(--radius-sm);padding:8px;white-space:pre-wrap;word-break:break-word}
.pursue-rec-shots{display:flex;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-2)}
.pursue-rec-shots figure{margin:0;max-width:220px}.pursue-rec-shots img{max-width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-page);min-height:60px}
/* compare environments (R13) */
.pursue-cmp-table .pursue-cmp-cell{white-space:nowrap}
.pursue-cmp-lines{display:none}.pursue-cmp-lines.is-open{display:table-row}
.pursue-cmp-lines td{background:var(--bg-page)}
/* walkthrough (D42) */
.pursue-walk{display:flex;flex-direction:column;min-height:90vh;padding:var(--sp-3)}
.pursue-walk-head{display:flex;gap:var(--sp-3);align-items:center;color:var(--text-muted);font-size:13px;margin-bottom:var(--sp-3)}
.pursue-walk-cards{flex:1 1 auto;min-height:0}
body.is-chromeless .pursue-walk{min-height:97vh}
/* Stacked on a phone, the list must stretch to the column (flex-start let it
   grow to the table's own width and pushed the whole tab sideways), and a
   table drawn without a .pursuit-table-wrap scrolls inside itself. */
@media (max-width: 480px){.pursue-split{flex-direction:column;align-items:stretch}.pursue-split>.pursuit-table-wrap{width:100%}
.pursue-screen :not(.pursuit-table-wrap)>table.pursuit-table{display:block;overflow-x:auto;max-width:100%}.pursue-pane.is-open{flex:1 1 auto;width:100%;position:static;max-height:none}.pursue-rec-panes{grid-template-columns:1fr}}
/* demo authoring (pursue-demo-authoring.js): Edit scenario, To record, Import inbox */
.pursue-au-part{margin:var(--sp-4) 0 var(--sp-1);display:flex;gap:var(--sp-2);align-items:baseline}
.pursue-au-steps td{vertical-align:top}
.pursue-au-tools{white-space:nowrap;text-align:right}
.pursue-au-unconfirmed td:first-child{box-shadow:inset 3px 0 0 var(--partial)}
.pursue-au-prov{color:var(--text-secondary);font-size:12px;font-weight:600;margin-top:4px}
.pursue-au-missing{color:var(--danger);font-size:12px;margin-top:4px}
.pursue-au-off td{opacity:.55}
.pursue-au-chip{display:inline-block;padding:1px 6px;border:1px solid var(--border);border-radius:var(--radius-sm,6px);font-size:12px;margin:1px 0}
.pursue-au-mini{border-collapse:collapse;font-size:12px}.pursue-au-mini :is(th,td){padding:2px 6px;border-bottom:1px solid var(--border);text-align:left}
.pursue-au-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-2) var(--sp-3)}
.pursue-au-kind{display:flex;gap:var(--sp-4);flex-wrap:wrap}
.pursue-au-shots{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.pursue-au-shot{display:flex;flex-direction:column;gap:4px}
.pursue-au-shot img,.pursue-au-noshot{width:100%;aspect-ratio:4/3;object-fit:contain;border:1px solid var(--border);border-radius:var(--radius-sm,6px);background:var(--bg-page)}
.pursue-au-noshot{display:flex;align-items:center;justify-content:center;aspect-ratio:auto;height:72px}
.pursue-au-span{grid-column:1/-1}
.pursue-au-group{margin-bottom:var(--sp-5)}
.pursue-au-grouphead{display:flex;gap:var(--sp-3);align-items:center;margin-bottom:var(--sp-2)}
.pursue-au-rec{margin-bottom:var(--sp-3)}
.pursue-au-notes{color:var(--text-secondary)}
.pursue-au-summary{margin:0 0 var(--sp-3)}
.pursue-au-detail td{background:var(--bg-page)}
@media (max-width: 480px){.pursue-au-shots{grid-template-columns:1fr}.pursue-au-tools{white-space:normal}}
/* ---- end demo ---- */

/* ── Deal Room › Profile and Demo › Personalize (docs/design/pursue/12-personalization.md) ── */
.pursue-profile, .pursue-personalize { display: flex; flex-direction: column; gap: var(--sp-4); }
.pursue-profile-name { font-size: 18px; font-weight: 600; color: var(--text-primary); display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
.pursue-profile-desc { margin: var(--sp-2) 0; color: var(--text-primary); max-width: 72ch; }
.pursue-profile-facts { margin-top: var(--sp-3); }
.pursue-profile-actions { display: flex; gap: var(--sp-2); flex-wrap: wrap; align-items: center; margin-top: var(--sp-3); }
.pursue-profile-actions:empty { display: none; }
.pursue-profile-status, .pursue-profile-note { margin-top: var(--sp-2); }
.pursue-profile-table td { vertical-align: top; }
.pursue-profile-table .pursue-row-actions { white-space: nowrap; text-align: right; }
.pursue-profile-table .pursue-row-actions > * { margin-left: var(--sp-1); }
.pursue-evidence { margin-top: var(--sp-1); max-width: 56ch; }
.pursue-profile-map { height: 300px; border-radius: var(--radius); overflow: hidden; margin-bottom: var(--sp-2); background: var(--bg-sidebar); border: 1px solid var(--border-light); }
.pursue-profile-pages td { font-size: 12px; }
.pursue-profile-form { margin-top: var(--sp-3); }

.pursue-personalize-head { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--sp-3); flex-wrap: wrap; margin-bottom: var(--sp-3); }
.pursue-personalize-tiles { margin: 0; }
.pursue-backdrop-chip { display: inline-flex; align-items: center; gap: var(--sp-2); }
.pursue-backdrop-swatch { width: 56px; height: 24px; border-radius: 6px; border: 1px solid var(--border-light); display: inline-block; }
.pursue-personalize-tools { display: flex; gap: var(--sp-2); align-items: center; flex-wrap: wrap; margin: var(--sp-3) 0; }
.pursue-item-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--sp-3); }
.pursue-item-card { border: 1px solid var(--border-light); border-radius: var(--radius); background: var(--bg-card); overflow: hidden; display: flex; flex-direction: column; }
.pursue-item-card.is-off { opacity: 0.55; }
.pursue-item-thumb { aspect-ratio: 1 / 1; background: var(--bg-secondary); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.pursue-item-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pursue-item-thumb.is-missing img { display: none; }
.pursue-item-noimg { font-size: 28px; color: var(--text-muted); }
.pursue-item-body { padding: var(--sp-2) var(--sp-3) var(--sp-3); display: flex; flex-direction: column; gap: 4px; }
.pursue-item-pick { display: flex; align-items: center; gap: var(--sp-2); font-size: 12px; color: var(--text-muted); }
.pursue-item-sku { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.pursue-item-name { font-weight: 600; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.pursue-item-badges { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 4px; }
.pursue-item-actions { display: flex; justify-content: space-between; align-items: center; margin-top: var(--sp-2); }
.pursue-pack-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--sp-4); }
.pursue-pack-table td code { font-size: 12px; }
.pursue-apply-row { display: flex; gap: var(--sp-2); align-items: center; flex-wrap: wrap; margin-top: var(--sp-3); }
/* Apply to a run sheet: the select used to be a bare 20px browser control
   beside a 34px button; it is the toolbar's control, its label the chip's. */
.pursue-apply-row > label { font-size: 12px; font-weight: 600; color: var(--text-secondary); }
.pursue-apply-row select {
  min-width: 240px; height: var(--btn-h-sm, 34px); padding: 0 10px; box-sizing: border-box;
  font-size: 13px; font-family: var(--font); color: var(--text-primary); background: var(--bg-card);
  border: 1px solid var(--border); border-radius: var(--radius-sm);
}
.pursue-applied { border-top: 1px solid var(--border-light); padding-top: var(--sp-2); margin-top: var(--sp-3); display: flex; flex-direction: column; gap: var(--sp-2); }
.pursue-applied-list { margin-top: var(--sp-2); }

/* Demo › Refresh data (frontend/js/pursue-demo-data.js) */
.pursue-dd-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--sp-3); margin-top: var(--sp-3); }
.pursue-dd-foot { display: flex; justify-content: flex-end; gap: var(--sp-2); border-top: 1px solid var(--border-light); padding-top: var(--sp-3); margin-top: var(--sp-4); }
.pursue-dd-pre { font-family: var(--mono); font-size: 12px; max-height: 260px; overflow: auto; background: var(--bg); border: 1px solid var(--border-light); border-radius: var(--radius); padding: var(--sp-2); white-space: pre; }
/* ---- demo library (pursue-demo-library.js) ---- */
.pdl-purpose{margin:0 0 var(--sp-3);color:var(--text-secondary)}
.pdl-deal{margin:0 0 var(--sp-2)}
/* the Library's deal heading (drawn only when a deal is chosen in the chip) */
.pdl-deal-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-1) var(--sp-3);padding:10px 12px;margin-bottom:var(--sp-3);background:var(--bg-card);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius)}
.pdl-deal-name{font-size:15px;color:var(--text-primary)}
.pdl-deal-k{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em;margin-right:2px}
.pdl-deal-meta{font-size:13px;color:var(--text-secondary)}
.pdl-deal-next{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-top:2px}
.pdl-deal-filter{align-self:center}
.pdl-nosheet{margin-left:6px;font-style:italic}
.pdl-deal-empty{margin-top:var(--sp-2)}
.pdl-bar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;padding:8px 12px;margin-bottom:var(--sp-2);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius)}
.pdl-bar-count{font-weight:600;color:var(--text-primary);margin-right:var(--sp-2)}
/* tags: Library filter chips (pursue-demo.js) and row badges (pursue-demo-library.js) */
.pdemo-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:var(--sp-2)}
.pdemo-tags .pursue-chip-label{margin-right:2px}
.pdemo-tag{font:inherit;font-size:12px;padding:2px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg-card);color:var(--text-secondary);cursor:pointer}
.pdemo-tag:hover{border-color:var(--accent);color:var(--text-primary)}
.pdemo-tag.is-on{background:var(--accent-soft);border-color:var(--accent);color:var(--text-primary);font-weight:600}
.pdemo-tag:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.pdemo-tag-n{color:var(--text-muted);font-weight:400;margin-left:2px}
.pdl-tags{display:inline-flex;flex-wrap:wrap;gap:4px;margin-left:6px;vertical-align:middle}
.pdl-tag{font-size:11px;padding:0 6px;border-radius:999px;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border);white-space:nowrap}
.pdl-tag-remove{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}
.pdl-tag-remove legend{font-weight:600;margin-bottom:4px}
.pdl-last{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-bottom:var(--sp-2)}
.pdl-last>div{flex-basis:100%}
.pdl-table .pdl-check{width:32px;text-align:center}
.pdl-table .pdl-order{width:72px;text-align:right;white-space:nowrap}
.pdl-table tr.is-picked td{background:var(--accent-soft)}
.pdl-table tr.pdl-group td{cursor:default}
.pdl-twist{background:none;border:0;padding:0;color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.pdl-count{color:var(--text-muted);font-weight:400;margin-left:4px}
.pdl-grip{color:var(--text-muted);cursor:grab;margin-right:6px;user-select:none}
.pdl-table tr[draggable="true"]:hover .pdl-grip{color:var(--text-primary)}
.pdl-table tr.pdl-dragging{opacity:.5}
.pdl-table tr.pdl-drop-before td{box-shadow:inset 0 2px 0 var(--accent)}
.pdl-table tr.pdl-drop-after td{box-shadow:inset 0 -2px 0 var(--accent)}
.pdl-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle;background:var(--text-disabled)}
.pdl-dot[data-state="ready"]{background:var(--pass)}
.pdl-dot[data-state="warning"]{background:var(--warning)}
.pdl-dot[data-state="not_ready"],.pdl-dot[data-state="blocked"]{background:var(--fail)}
.pdl-dot[data-state="used"],.pdl-dot[data-state="checking"]{background:var(--accent)}
.pdl-ready{white-space:nowrap}
.pdl-muted{color:var(--text-muted)}
.pdl-readiness .pursuit-caption{display:block;margin-left:14px}
.pursue-pane .pursuit-card-title:has(.pdl-pane-actions){flex-wrap:wrap}
.pdl-pane-actions{display:flex;gap:6px;align-items:center;order:3;flex-basis:100%;margin-top:var(--sp-2)}
.pdl-pane-status{margin:var(--sp-2) 0;font-size:13px}
.pdl-pane-status .pursue-checklist{margin:4px 0 0}
.pdl-templates{margin-top:var(--sp-5)}
.pdl-section-title{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0 0 4px}
.pdl-res{border-top:1px solid var(--border-light);padding:8px 0}
.pdl-res summary{cursor:pointer}
.pdl-sys,.pdl-names{margin:4px 0 var(--sp-3);padding-left:18px}
.pursue-split:has(.pursue-pane.is-open)>.pursuit-table-wrap .pdl-table :is(th,td):nth-child(4){display:revert}
.pursue-split:has(.pursue-pane.is-open)>.pursuit-table-wrap .pdl-table :is(th,td):nth-child(5){display:none}
/* Pursue › Demo run reports (pursue-demo-runs.js) — layout only, tokens only */
.pdr-head{margin-bottom:var(--sp-3)}.pdr-head .pursuit-card-title{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}
.pdr-section{border:1px solid var(--border);border-radius:var(--radius);margin:var(--sp-2) 0;background:var(--bg-card)}
.pdr-section>summary{cursor:pointer;padding:10px 14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px}
.pdr-body{padding:0 14px 12px}
.pdr-phase{margin:12px 0 4px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary)}
.pdr-checks,.pdr-steps,.pdr-punch{margin:4px 0 0;padding-left:18px;font-size:13px}.pdr-checks li,.pdr-steps li,.pdr-punch li{margin:4px 0}
.pdr-ok{color:var(--pass-ink)}.pdr-bad{color:var(--danger)}.pdr-warn{color:var(--warning)}.pdr-skip{color:var(--text-muted)}
.pdr-found{font-size:13px;color:var(--text-secondary)}.pdr-found strong code{color:var(--danger)}
.pdr-problem{font-size:13px;color:var(--danger)}
.pdr-ref{font-family:var(--mono);font-size:12px;color:var(--text-muted)}
.pdr-prompt{margin:6px 0;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-page)}
.pdr-used{display:inline-block;margin:2px 6px 2px 0;font-size:12px}
.pdr-bar{height:6px;border-radius:var(--radius-sm);background:var(--border-light);overflow:hidden;margin:8px 0}.pdr-bar span{display:block;height:100%;background:var(--accent)}
.pdr-rehearsal{margin:var(--sp-3) 0;padding:12px 14px}.pdr-times{margin-top:8px}
.pdr-compare{margin:var(--sp-2) 0}
/* Run sheet rows: Run and Visual stay out, everything else lives in the row's ⋮ menu */
.pursue-sheet-table td.pursue-row-actions,.pursue-sheet-table th.pursue-row-actions{white-space:nowrap;text-align:right;width:1%}
.pursue-row-actions>.u-btn+.u-btn,.pursue-row-actions>.u-btn+.pursue-row-menu{margin-left:var(--sp-1)}
.pursue-ready-cell>a{white-space:nowrap}
.pursue-menu-list a.is-danger{color:var(--danger)}
.pursue-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ── Deal Room › Documents (07 §4.9) — tokens only, dark-safe ─────────── */
.pursuit-doc-help { font-size: 13px; color: var(--text-secondary); line-height: 1.5; margin: 0 0 var(--sp-3); max-width: 72ch; }
.pursuit-doc-title { background: none; border: 0; padding: 0; font: inherit; font-size: 13px; font-weight: 600; color: var(--text-primary); cursor: pointer; text-align: left; }
.pursuit-doc-title:hover { color: var(--accent); text-decoration: underline; }
.pursuit-doc-says { max-width: 36ch; }
.pursuit-doc-line { font-size: 12px; color: var(--text-secondary); margin-top: var(--sp-1); line-height: 1.4; }
.pursuit-doc-actions { white-space: nowrap; display: flex; gap: var(--sp-1); align-items: center; justify-content: flex-end; }
.pursuit-doc-detail-row td { background: var(--bg-page); }
.pursuit-doc-detail { padding: var(--sp-2) 0; display: flex; flex-direction: column; gap: var(--sp-2); }
.pursuit-doc-summary { font-size: 13px; color: var(--text-primary); line-height: 1.5; margin: 0; max-width: 80ch; }
.pursuit-doc-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--sp-2) var(--sp-4); margin: 0; }
.pursuit-doc-facts dt { font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--text-muted); }
.pursuit-doc-facts dd { margin: 0; font-size: 13px; color: var(--text-primary); }
.pursuit-doc-asks { margin: 0; padding-left: 18px; font-size: 13px; color: var(--text-primary); line-height: 1.5; }
.pursuit-doc-upload { margin-top: var(--sp-3); display: flex; gap: var(--sp-2); align-items: center; flex-wrap: wrap; }
.pursuit-doc-picked { display: flex; gap: var(--sp-1); flex-wrap: wrap; margin-top: var(--sp-1); }
.pursuit-doc-chip { font-size: 12px; color: var(--text-primary); background: var(--bg-page); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 2px 8px; }
.pursuit-doc-table { table-layout: fixed; }
.pursuit-doc-table th:nth-child(1) { width: 22%; }
.pursuit-doc-table th:nth-child(2) { width: 13%; }
.pursuit-doc-table th:nth-child(3) { width: 32%; }
.pursuit-doc-table th:nth-child(4) { width: 13%; }
.pursuit-doc-table td { vertical-align: top; overflow-wrap: anywhere; }
.pursuit-doc-says { max-width: none; }
.pursuit-doc-actions { flex-wrap: wrap; }
