/* ─── Replace pass (2026-09-30): Buy replacement (Acquisitions) and Review & send (Fulfillment) ───
   Layout "B" of the approved preview: a wide modal with three columns, the check
   matrix, then the footer or decision block. Portal tokens from fulfillment.css;
   Acquisitions uses the Complete sheet's cyan, Fulfillment the portal purple.
   Sits under the issue sheets (z 90+) so "+ Add new account" opens on top. */
.prp-modal, .prp-btn-acq {
  --prp-acq: #0e7490; --prp-acq-strong: #155e75; --prp-acq-bg: #ecfeff; --prp-acq-border: #a5f3fc;
}

/* row: actions and stage badges */
.prp-btn-acq { background:var(--prp-acq); color:#fff; border-color:var(--prp-acq); font-weight:600; }
.prp-btn-acq:hover:not(:disabled) { background:var(--prp-acq-strong); border-color:var(--prp-acq-strong); }
.prp-btn-ful { background:var(--purple); color:#fff; border-color:var(--purple); font-weight:600; }
.prp-btn-ful:hover:not(:disabled) { background:#6d28d9; border-color:#6d28d9; }
.prp-btn-go { background:var(--green-ink); color:#fff; border-color:var(--green-ink); font-weight:600; }
.prp-btn-go:hover:not(:disabled) { background:var(--green-ink-strong); border-color:var(--green-ink-strong); }
.prp-btn-back { background:var(--surface); color:#c2410c; border-color:#fdba74; font-weight:600; }
.prp-btn-back:hover:not(:disabled) { background:#fff7ed; }
.prp-awaiting { font-size:11px; color:var(--text-muted); white-space:nowrap; }
.status-badge.prp-needs { background:var(--amber-bg); color:var(--amber-ink); border:1px solid var(--amber-border); }
.status-badge.prp-sent-back { background:var(--red-bg); color:var(--red-ink); border:1px solid #fecaca; }
.order-badge.prp-decision { background:var(--purple-bg); color:var(--purple); border-color:var(--purple-border); }
.order-badge.prp-approved, .order-badge.prp-sent { background:var(--green-bg); color:var(--green-ink); border-color:var(--green-border); }
/* Delivery Info sheet: the older approve/revoke gives way while a replacement is open */
.review-decision.prp-review-locked { background:var(--purple-bg); border-color:var(--purple-border); color:var(--text); }
.review-decision.prp-review-locked .issue-error:not(:empty) { margin-top:6px; }

/* shell */
#pass-replacement-root[hidden] { display:none; }
.prp-backdrop { position:fixed; inset:0; z-index:88; background:rgba(15,23,42,0.42); backdrop-filter:blur(3px); }
.prp-modal {
  position:fixed; z-index:89; left:50%; top:50%; transform:translate(-50%, -50%);
  width:min(1120px, calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow:auto;
  background:var(--surface); border-radius:12px; box-shadow:0 24px 60px rgba(15,23,42,0.32);
  font-size:13px; color:var(--text);
}
.prp-modal.acq { border-top:4px solid var(--prp-acq); }
.prp-modal.ful { border-top:4px solid var(--purple); }
.prp-head { display:flex; align-items:flex-start; gap:12px; padding:14px 22px; border-bottom:1px solid var(--border); }
.prp-head-main { min-width:0; flex:1; }
.prp-head h2 { font-size:18px; line-height:1.25; margin-top:2px; }
.prp-kicker { font-size:10.5px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; }
.prp-kicker.acq { color:var(--prp-acq); }
.prp-kicker.ful { color:var(--purple); }
.prp-order-line { margin-top:2px; font-size:12.5px; color:var(--text-muted); overflow-wrap:anywhere; }
.prp-close { background:none; border:none; cursor:pointer; color:var(--text-faint); font-size:24px; line-height:1; padding:0 2px; }
.prp-close:hover { color:var(--text); }
#pass-replacement-notice:not(:empty) { padding:12px 22px 0; display:grid; gap:8px; }

/* the three columns */
.prp-cmp { display:grid; grid-template-columns:0.85fr 0.85fr 1.35fr; gap:12px; padding:14px 22px 4px; align-items:start; }
.prp-col { min-width:0; border:1px solid var(--border); border-radius:10px; padding:12px 14px; }
.prp-col.order { background:#f8fafc; }
.prp-col.old { background:#fafafa; }
.prp-col.new.acq { border-color:var(--prp-acq-border); background:#f6feff; }
.prp-col.new.ful { border-color:var(--purple-border); background:#fbfaff; }
.prp-col h3 { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:8px; font-size:12px; letter-spacing:0.05em; text-transform:uppercase; color:var(--text-muted); }
.prp-kv { display:grid; grid-template-columns:auto 1fr; gap:4px 12px; font-size:12.5px; }
.prp-kv dt { color:var(--text-faint); }
.prp-kv dd { font-weight:500; overflow-wrap:anywhere; }
.prp-kv a { color:var(--accent); }
.prp-tag { font-size:10.5px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; padding:2px 7px; border-radius:4px; }
.prp-tag.retiring { background:#f3f4f6; color:var(--text-muted); }
.prp-tag.new { background:var(--blue-bg); color:var(--accent-hover); }
.prp-tag.ro { background:var(--purple-bg); color:var(--purple); }
.prp-mono { font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:12.5px; }
.prp-strike { text-decoration:line-through; text-decoration-color:#9ca3af; }
.prp-faint { color:var(--text-faint); font-weight:400; }
.prp-note { margin-top:8px; font-size:11.5px; font-style:italic; color:var(--text-faint); }
.prp-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* replacement purchase form: the Complete sheet's fields, two per row */
.prp-same-as { margin-bottom:10px; padding:6px 10px; font-size:11.5px; color:var(--prp-acq); background:var(--prp-acq-bg); border:1px solid var(--prp-acq-border); border-radius:8px; }
.prp-form { display:grid; grid-template-columns:1fr 1fr; gap:10px 12px; }
.prp-form .prp-full { grid-column:1 / -1; }
.prp-form .parking-field[hidden] { display:none; }
.prp-form label { display:block; margin-bottom:5px; font-size:11px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; color:var(--prp-acq); }
.prp-form .parking-field input:not([type="file"]), .prp-form .parking-field select { padding:8px 11px; font-size:13.5px; }
.prp-form .parking-field input[type="file"] { width:100%; font:inherit; font-size:12.5px; }
.prp-form .parking-field input.prp-bad, .prp-form .parking-account-picker.prp-bad .parking-account-card { border-color:var(--red); background:#fffafa; }
.prp-err { font-size:11.5px; color:var(--red-ink); }
.prp-err:not(:empty) { margin-top:4px; }

/* check matrix */
.prp-matrix { margin:12px 22px 0; border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.prp-matrix-head { display:flex; align-items:center; flex-wrap:wrap; gap:6px 10px; padding:8px 12px; background:var(--surface-2); font-size:12px; color:var(--text-muted); }
.prp-matrix-head b { color:var(--text); }
.prp-spacer { flex:1; }
.prp-table-wrap { overflow-x:auto; }
.prp-table { width:100%; min-width:620px; border-collapse:collapse; font-size:12.5px; font-variant-numeric:tabular-nums; }
.prp-table th { padding:8px 10px; text-align:left; font-size:11px; font-weight:600; letter-spacing:0.05em; text-transform:uppercase; color:var(--text-muted); border-bottom:1px solid var(--border); background:var(--surface); white-space:nowrap; }
.prp-table td { padding:9px 10px; border-bottom:1px solid var(--border); vertical-align:top; line-height:1.3; overflow-wrap:anywhere; }
.prp-table tr:last-child td { border-bottom:none; }
.prp-table td.prp-st { width:34px; text-align:center; }
.prp-row.fail td { background:#fffafa; }
.prp-row.decide td { background:#fffdf5; }
.prp-sub { display:block; margin-top:2px; font-size:11.5px; color:var(--text-muted); }
.prp-sub.fail { color:var(--red-ink); }
.prp-sub.decide { color:var(--amber-ink); }
.prp-new.pass { color:var(--green-ink); font-weight:600; }
.prp-new.fail { color:var(--red-ink); font-weight:600; }
.prp-new.wait, .prp-new.spin { color:var(--text-faint); }
.prp-ico { width:20px; height:20px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; color:#fff; }
.prp-ico.pass { background:var(--green); }
.prp-ico.fail { background:var(--red); }
.prp-ico.decide { background:var(--amber); }
.prp-ico.info { background:var(--accent); font-style:italic; }
.prp-row.info td { background:#f8fbff; }
.prp-sub.info { color:#1e3a8a; }
.prp-new.info { color:var(--text-muted); }
.prp-ico.na { background:#94a3b8; }
.prp-ico.wait { background:#e2e8f0; }
.prp-ico.spin { background:none; border:2px solid #cbd5e1; border-top-color:var(--accent); animation:spin 0.7s linear infinite; }

/* footer (Acquisitions) and decision block (Fulfillment) */
.prp-foot { display:flex; align-items:center; flex-wrap:wrap; gap:10px 12px; padding:14px 22px 18px; }
.prp-foot-msg { flex:1 1 100%; display:grid; gap:8px; }
.prp-foot-error:empty { display:none; }
.prp-foot-error { flex:1 1 100%; margin-top:0; }
.prp-alert { border-radius:10px; padding:9px 12px; font-size:12.5px; }
.prp-alert.red { background:var(--red-bg); border:1px solid #fecaca; color:#7f1d1d; }
.prp-alert.amber { background:var(--amber-bg); border:1px solid var(--amber-border); color:#78350f; }
.prp-alert.green { background:var(--green-bg); border:1px solid var(--green-border); color:#064e3b; }
.prp-alert.blue { background:var(--blue-bg); border:1px solid var(--blue-border); color:#1e3a8a; }
.prp-alert.prp-inset { margin:8px 12px; }
.prp-hint { font-size:12px; color:var(--text-muted); }
.prp-lock { display:inline-flex; align-items:center; gap:6px; padding:6px 10px; font-size:12px; color:var(--text-muted); background:#fafafa; border:1px dashed #cbd5e1; border-radius:8px; }
.prp-decision { margin:12px 22px 0; padding:12px 14px; border:1px solid var(--border); border-radius:10px; background:#f8fafc; display:grid; gap:8px; }
.prp-decision h4, .prp-trail h4 { font-size:11px; letter-spacing:0.05em; text-transform:uppercase; color:var(--text-faint); }
.prp-row-controls { display:flex; align-items:center; flex-wrap:wrap; gap:8px 10px; }
.prp-row-controls select, .prp-row-controls input[type="text"] {
  min-width:min(340px, 100%); max-width:100%; padding:7px 10px; font:inherit; font-size:13px;
  border:1px solid var(--border); border-radius:8px; background:var(--surface); color:var(--text);
}
.prp-confirm { display:flex; align-items:flex-start; gap:10px; padding:9px 12px; font-size:12.5px; border:1px solid var(--amber-border); background:var(--amber-bg); border-radius:10px; cursor:pointer; }
.prp-confirm input { width:16px; height:16px; margin-top:2px; flex:none; }
.prp-confirm.done { border-color:var(--green-border); background:var(--green-bg); }
.prp-decision .issue-error { min-height:0; margin-top:0; }

/* trail and done states */
.prp-trail { margin:12px 22px 0; font-size:12px; }
.prp-trail h4 { margin-bottom:4px; }
.prp-trail-row { display:grid; grid-template-columns:110px 150px 1fr; gap:8px; padding:4px 0; border-top:1px solid #eef1f5; }
.prp-trail-row.muted { color:var(--text-faint); }
.prp-trail-at { color:var(--text-faint); }
.prp-trail-who { font-weight:600; }
.prp-trail-who small { font-weight:500; color:var(--text-faint); }
.prp-done { padding:18px 22px 4px; }
.prp-done h3 { margin-bottom:6px; font-size:18px; }
.prp-done-line { margin-bottom:10px; color:var(--text-muted); }
.prp-tl { list-style:none; margin:4px 0 10px; }
.prp-tl li { position:relative; padding:0 0 11px 22px; font-size:12.5px; }
.prp-tl li::before { content:''; position:absolute; left:6px; top:14px; bottom:-2px; width:2px; background:#e5e7eb; }
.prp-tl li:last-child::before { display:none; }
.prp-dot { position:absolute; left:0; top:4px; width:14px; height:14px; border-radius:50%; background:var(--surface); border:3px solid #cbd5e1; }
.prp-tl li.good .prp-dot { border-color:var(--green); }
.prp-tl li.now .prp-dot { border-color:var(--accent); background:var(--accent); }
.prp-tl li.muted { color:var(--text-faint); }
.prp-when { margin-right:6px; font-size:11.5px; color:var(--text-faint); }

@media (max-width:900px) {
  .prp-cmp { grid-template-columns:1fr; }
}
@media (max-width:560px) {
  .prp-modal { width:100vw; max-height:100dvh; border-radius:0; }
  .prp-head, .prp-foot { padding-left:14px; padding-right:14px; }
  .prp-cmp { padding:12px 14px 4px; }
  .prp-matrix, .prp-decision, .prp-trail { margin-left:14px; margin-right:14px; }
  .prp-form { grid-template-columns:1fr; }
  .prp-trail-row { grid-template-columns:1fr; gap:0; }
  .prp-lock { flex:1 1 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .prp-ico.spin { animation:none; }
}

/* Delivery tab: replacements waiting for Fulfillment's review (2026-10-06) */
.prp-review-banner { display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; margin-top:10px; padding:9px 12px;
  border:1px solid var(--purple-border); background:var(--purple-bg); border-radius:10px; font-size:13px; color:var(--text); }
.prp-review-banner[hidden] { display:none; }
.prp-review-banner.only { border-style:dashed; }
.prp-rb-icon { flex:none; width:20px; height:20px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  background:var(--purple); color:#fff; font-size:12px; font-weight:800; }
.prp-rb-text { flex:1 1 240px; min-width:0; display:grid; gap:1px; }
.prp-rb-sub { font-size:12px; color:var(--text-muted); }
