/* Saved decks, the honest resolver, real-first Activity and Settings.
   Colours come from the theme tokens only, so all four themes follow. */

/* ---- the deck build: three real requests, one row each ---- */
.v118-build{display:grid;gap:14px;padding:22px 24px 20px}
.v118-build .default-load-v22{min-height:0;padding:6px 0 0}
.v118-build .pm-track{border-radius:2px}
.v118-build.is-failed .pm-track>i::after{display:none}
.v118-build-head{text-align:center;padding:6px 0 2px}
.v118-build-head h3{margin:0 0 6px;font-size:15px;font-weight:640;color:var(--ink)}
.v118-build-head p{margin:0;font-size:11.5px;color:var(--ink-3)}
.v118-stages{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.v118-stage{display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:10px;font-size:13px;color:var(--ink-2)}
.v118-stage small{font-size:11px;color:var(--ink-3)}
.v118-stage>i{position:relative;width:14px;height:14px;border-radius:50%;border:1.5px solid var(--line-2)}
.v118-stage.is-active{color:var(--ink)}
.v118-stage.is-active>i{border-color:color-mix(in srgb,var(--sig) 28%,transparent);border-top-color:var(--sig);animation:pm-turn var(--pm-loop-turn,1.6s) linear infinite}
.v118-stage.is-done>i{border-color:var(--sig);background:var(--sig)}
.v118-stage.is-done>i::after{content:'';position:absolute;left:4px;top:1.5px;width:3px;height:6px;border:solid var(--card);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
.v118-stage.is-failed{color:var(--ink)}
.v118-stage.is-failed>i{border-color:var(--pm-fail,#b5654a);background:color-mix(in srgb,var(--pm-fail,#b5654a) 18%,transparent)}
.v118-stage.is-failed small{color:var(--pm-fail,#b5654a)}
.v118-stage.is-skipped{color:var(--ink-3)}
.v118-stage.is-skipped>i{border-style:dashed}
.v118-error{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-2)}
.v118-actions{display:flex;flex-wrap:wrap;gap:8px}
@media (prefers-reduced-motion:reduce){.v118-stage.is-active>i{animation:none;border-color:var(--sig)}}

/* ---- notices on the Decks page, and the signed-out and error panels ---- */
.v118-note{margin:0 0 12px;padding:9px 12px;border:1px solid var(--line-2);border-radius:9px;background:var(--card-2);font-size:12px;color:var(--ink-2)}
.v118-panel p{margin:4px 0}

/* ---- Activity ---- */
.v118-empty{margin:0 0 16px}
.v118-empty h2{margin:0 0 6px;font-size:16px}
.v118-empty p{margin:0 0 14px;font-size:12.5px;color:var(--ink-2)}
.v118-empty .f26-actions{display:flex;flex-wrap:wrap;gap:8px}
.v118-questions{margin:6px 0 0;padding-left:16px;color:var(--ink-2)}
.v118-questions li.is-open{color:var(--ink)}
.v118-questions small{color:var(--sig)}

/* ---- Settings ---- */
.v118-sctl{display:grid!important;gap:4px;justify-items:end}
.v118-field-note{min-height:0;font-size:11px;color:var(--ink-3)}
.v118-field-note:empty{display:none}
.v118-field-note.is-error{color:var(--pm-fail,#b5654a)}
.v118-readonly{font-size:12.5px;color:var(--ink-2)}
.v118-signoff{min-width:min(320px,100%);resize:vertical;font:inherit}
.v118-signed-out{margin:4px 0 10px}

@media (max-width:640px){
  .v118-sctl{justify-items:stretch}
  .v118-signoff{min-width:0;width:100%}
}

/* ---- the deal step confirms which records to search ---- */
.v118-segment{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;font-size:12px;color:var(--ink-3)}
.v118-segment button{padding:6px 12px;border:1px solid var(--line-2);border-radius:999px;background:transparent;color:var(--ink-2);font:inherit;font-size:12px;cursor:pointer}
.v118-segment button[aria-pressed="true"]{border-color:var(--sig);background:var(--sig-bg);color:var(--ink)}

/* Activity rows in a narrow list: who and the arrow on one line, when below, so a
   name is never squeezed to one word per line. A container query, because the
   interface-scale dial rescales media queries and they no longer track a phone. */
.f26-activity-list{container-type:inline-size}
@container (max-width:520px){
  .f26-activity{grid-template-columns:minmax(0,1fr) auto!important;row-gap:8px!important}
  .f26-activity .f26-activity-when{grid-column:1/-1;grid-row:2;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
  .f26-activity .arw{grid-column:2;grid-row:1}
}

/* ---- Stop link asks first ("ruling 103" review, 14 Oct 2026): a confirm in place, in Sent links. It says what
   happens; Stop link there stops the link, Keep it live puts the button back. ---- */
.stop-confirm{display:grid;gap:8px;margin-top:6px;padding:10px 12px;border:1px solid var(--card-edge,var(--line-2));border-radius:10px;background:var(--card-2,var(--card))}
.stop-confirm p{margin:0;font-size:13px;line-height:1.45;color:var(--ink)}
.stop-confirm-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.stop-confirm-actions button{min-height:36px;justify-content:center;text-align:center}
.deck16-existing-actions:has(.stop-confirm){flex-wrap:wrap}
.deck16-existing-actions .stop-confirm{flex:1 1 100%}
