/*
 * What the customer sees of a Request (Services plan 2026-09-19-004 U11;
 * origin spec §7, §14.1). The stylesheet of public/request-view.js, shared by
 * the client portal, the Desk and the provider's "What the customer sees".
 *
 * ONE fixed layout. A provider's brand reaches it ONLY through the custom
 * properties the server computes from three tenant-selected colour seeds (src/services/brand.ts):
 * --brand-primary, --brand-on-primary, --brand-soft, --brand-border,
 * --brand-hover, --brand-ink. The attention seed drives "your move" in the
 * portal; the item status semantics remain platform-owned.
 *
 * The block below is the ONLY place a literal colour appears: the fallbacks
 * of a shell that defines no brand (the Desk, the provider drawer) and the
 * fixed neutrals. Everything after it is a variable.
 */
.rv {
  --rv-primary: var(--brand-primary, #14b8a6);
  --rv-on-primary: var(--brand-on-primary, #000000);
  --rv-soft: var(--brand-soft, #e8f8f6);
  --rv-border: var(--brand-border, #b9eae4);
  --rv-hover: var(--brand-hover, #12a292);
  --rv-ink: var(--brand-ink, #0b6b61);
  --rv-you: var(--your-move, #a86608);
  --rv-you-ink: var(--your-move-ink, #ffffff);
  --rv-accepted: var(--status-accepted, #1f7a4d);
  --rv-returned: var(--status-returned, #b3261e);
  --rv-checking: var(--status-checking, #5b6472);
  --rv-requested: var(--status-requested, #a86608);
  --rv-text: #16202a;
  --rv-muted: #566273;
  --rv-line: #dfe4ea;
  --rv-surface: #ffffff;
  --rv-desk-logo-ink: #ffffff;
  --rv-ahead: #d5dbe3;
  --rv-danger: #b3261e;
  --rv-focus: #1a4fd6;
  --rv-done-bg: color-mix(in srgb, var(--rv-accepted) 12%, var(--rv-surface));
  --rv-quiet-bg: color-mix(in srgb, var(--rv-muted) 8%, var(--rv-surface));
  --rv-ok: var(--rv-accepted);
  --rv-radius: 12px;
  /* Plan 2026-09-30-020 U5: the round ring (public/round-ring.css) reads
     only these, mapped to the brand: our move in the primary, the client's
     in the your-move colour, the track in the brand line, and the check on
     an approved round in the on-primary colour over the primary. */
  --rv-you-soft: color-mix(in srgb, var(--rv-you) 14%, var(--rv-surface));
  --rv-you-text: var(--rv-you);
  --ring-us: var(--rv-primary);
  --ring-client: var(--rv-you);
  --ring-client-ink: var(--rv-you-text);
  --ring-track: var(--rv-line);
  --ring-done: var(--rv-primary);
  --ring-on: var(--rv-on-primary);
  color: var(--rv-text);
  font-size: 1rem;
  line-height: 1.5;
}

.rv *, .rv *::before, .rv *::after { box-sizing: border-box; }
.rv-detail-links { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; }
.rv-detail-links a { display:inline-flex; padding:7px 10px; border:1px solid var(--rv-line); border-radius:8px; text-decoration:none; background:var(--rv-surface); color:var(--rv-text); font-size:13px; font-weight:600; }
.rv-detail-links a[aria-current="page"] { background:var(--rv-quiet-bg); border-color:var(--rv-ink); }
.rv-details { min-width:240px; }
.rv-details .rv-repeat-btn { display:block; margin-top:12px; }
.rv-progress-tiles { display:flex; flex-wrap:wrap; gap:12px; margin:18px 0; }
.rv-progress-tiles > div { display:grid; gap:4px; flex:1; min-width:140px; padding:16px; background:var(--rv-surface); border:1px solid var(--rv-line); border-radius:var(--rv-radius); }
.rv-progress-tiles strong { font-size:24px; }
.rv-progress-tiles .rv-progress-empty strong { font-size:16px; }
.rv-progress-tiles span { color:var(--rv-muted); font-size:13px; }
.rv-plan-filters { display:flex; flex-wrap:wrap; align-items:end; gap:10px; margin-bottom:16px; }
.rv-plan-filters label { display:grid; gap:4px; font-size:13px; }
.rv-plan-filters .rv-secondary-btn { min-height:36px; padding:8px 12px; border:1px solid var(--rv-line); border-radius:8px; background:var(--rv-surface); color:var(--rv-text); font:inherit; font-size:13px; cursor:pointer; }
.rv-plan-filters select { max-width:280px; padding:8px; border:1px solid var(--rv-line); border-radius:6px; color:var(--rv-text); background:var(--rv-surface); }
.rv-plan-table { min-width:550px; }
.rv-plan-table td, .rv-plan-table th { padding:14px; border-bottom:1px solid var(--rv-line); color:var(--rv-text); }
.rv-plan-table .rv-plan-group { background:var(--rv-quiet-bg); }
.rv .rv-plan-table tbody th { font-family:inherit; font-size:15px; text-transform:none; letter-spacing:normal; }
.rv-plan-activity td:first-child { padding-left:42px; }
.rv-plan-link { background:none; border:0; color:var(--rv-ink); font:inherit; text-align:left; cursor:pointer; padding:4px; display:inline-block; }
.rv-plan-link:hover { text-decoration:underline; }
.rv-plan-fold { width:28px; height:28px; border:1px solid var(--rv-line); border-radius:6px; background:var(--rv-surface); color:var(--rv-text); margin-right:8px; cursor:pointer; }
.rv-plan-layout { display:flex; align-items:start; gap:24px; }
.rv-shared-plan { flex:1; min-width:0; }
.rv-plan-layout > aside { flex:0 0 340px; }
.rv .rv-tracker-wrap { max-width:100%; overflow:auto; }
.rv .rv-tracker-table { min-width:550px; }
@media(max-width:900px) { .rv-plan-layout { flex-direction:column; } .rv-plan-layout > aside, .rv-shared-plan { width:100%; flex:auto; } }
@media(max-width:640px) {
  /* Trackers stay compact tables, scrollable inside the viewport, not tall cards. */
  .rv .rv-tracker-table { display:table; }
  .rv .rv-tracker-table tbody { display:table-row-group; }
  .rv .rv-tracker-table thead { display:table-header-group; position:static; width:auto; height:auto; overflow:visible; clip:auto; }
  .rv .rv-tracker-table tr { display:table-row; width:auto; padding:0; }
  .rv .rv-tracker-table td, .rv .rv-tracker-table th { display:table-cell; width:auto; padding:12px 14px; margin:0; }
}
.rv h1, .rv h2, .rv h3, .rv p { margin: 0; }
.rv a { color: var(--rv-ink); }
.rv :focus-visible { outline: 3px solid var(--rv-focus); outline-offset: 2px; border-radius: 4px; }
/* These headings receive programmatic focus after client-side navigation so
   screen readers announce the new view. They are not keyboard-tab stops. */
.rv h1[tabindex="-1"]:focus, .rv h2[tabindex="-1"]:focus { outline: none; }
.rv-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.rv-eyebrow {
  display: block;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rv-muted);
}

.rv-quiet { color: var(--rv-muted); font-size: 0.9rem; }
.rv-error { color: var(--rv-danger); font-size: 0.9rem; }

/* ── Buttons ─────────────────────────────────────────────────────── */

.rv-primary-btn, .rv-move-btn, .rv-danger-btn, .rv-quiet-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 18px;
  border-radius: 10px;
  border: 1px solid transparent;
  font: inherit;
  font-size: 0.9rem;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
}
.rv a.rv-primary-btn, .rv-primary-btn { background: var(--rv-primary); color: var(--rv-on-primary); }
.rv-primary-btn:hover { background: var(--rv-hover); }
.rv a.rv-move-btn, .rv-move-btn { background: var(--rv-you); color: var(--rv-you-ink); border-color: var(--rv-you); }
.rv-danger-btn { background: var(--rv-danger); color: var(--rv-surface); }
.rv-quiet-btn { background: var(--rv-surface); color: var(--rv-ink); border-color: var(--rv-border); }
/* Services plan U22: "Request this year's" — quiet, under the delivered row,
   never competing with the move a Request is actually waiting for. */
.rv-repeat-btn {
  display: inline-flex; align-items: center; min-height: 32px; margin-top: 6px; padding: 0;
  border: 0; background: none; font: inherit; font-size: 0.85rem; font-weight: 700;
  color: var(--rv-primary); text-decoration: underline; text-underline-offset: 3px; cursor: pointer;
}
.rv-repeat-btn:hover { color: var(--rv-hover); }
.rv button:disabled { opacity: 0.55; cursor: default; }

/* ── The track ───────────────────────────────────────────────────── */

.rv-where { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
/* Plan 2026-09-28-010 (A4): the ONE client track, five dots joined by lines. */
.rv-track { display: flex; align-items: center; gap: 0; max-width: 320px; }
.rv-seg { display: block; flex: none; width: 12px; height: 12px; border-radius: 50%; background: var(--rv-ahead); }
.rv-seg.past { background: var(--rv-primary); }
.rv-seg.now { width: 14px; height: 14px; background: var(--rv-surface); border: 3px solid var(--rv-primary); }
.rv-seg.you { width: 14px; height: 14px; background: var(--rv-you); }
.rv-line { display: block; flex: 1 1 18px; min-width: 10px; max-width: 34px; height: 2px; background: var(--rv-ahead); }
.rv-line.past { background: var(--rv-primary); }
.rv-where-text { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.rv-stage-label { font-size: 0.9rem; font-weight: 700; }
.rv-stage-label.you { color: var(--rv-you); }
.rv-stage-label.done { color: var(--rv-ink); }
.rv-where-text small { font-size: 0.82rem; color: var(--rv-muted); }

/* ── My requests ─────────────────────────────────────────────────── */

.rv-list-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 24px; }
.rv-list-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.rv-list-head h1 { font-size: 1.9rem; letter-spacing: -0.01em; }
.rv-lede { color: var(--rv-muted); margin-top: 6px; }
.rv-table-wrap { background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: 16px; overflow: hidden; }
.rv-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.rv-table th {
  text-align: left;
  padding: 14px 20px;
  border-bottom: 1px solid var(--rv-line);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rv-muted);
}
.rv-table th:nth-child(1) { width: 34%; }
.rv-table th:nth-child(2) { width: 18%; }
.rv-table th:nth-child(4) { width: 210px; }
.rv-table td { padding: 18px 20px; border-bottom: 1px solid var(--rv-line); vertical-align: middle; }
.rv-table tbody tr:last-child td { border-bottom: 0; }
/* Waiting on the customer: tinted with the "your move" colour. */
.rv-row.you td { background: color-mix(in srgb, var(--rv-you) 9%, var(--rv-surface)); }
.rv-row.finished .rv-open strong { font-weight: 600; }
.rv-open { display: flex; flex-direction: column; gap: 3px; color: var(--rv-text); text-decoration: none; min-width: 0; }
.rv a.rv-open { color: var(--rv-text); }
.rv-open strong { font-size: 1.02rem; overflow-wrap: anywhere; }
.rv-open small { font-size: 0.82rem; color: var(--rv-muted); }
.rv-num { font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; font-size: 0.76rem; color: var(--rv-ink); }
.rv-service { font-size: 0.9rem; }
.rv-footnote { margin-top: 14px; font-size: 0.82rem; color: var(--rv-muted); }
.rv-empty { background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: 16px; padding: 40px 28px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.rv-empty p { max-width: 46ch; color: var(--rv-muted); }
.rv-provider { margin-top: 24px; }
.rv-provider h2 { font-size: 1.05rem; margin-bottom: 10px; }

/* ── The request page ────────────────────────────────────────────── */

.rv-page-head { display: flex; flex-direction: column; gap: 6px; margin-bottom: 22px; }
.rv-crumb, .rv-meta { font-size: 0.85rem; color: var(--rv-muted); }
.rv-page-head h1 { font-size: 1.8rem; letter-spacing: -0.01em; overflow-wrap: anywhere; }
.rv-columns { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 380px); gap: 32px; align-items: start; }
.rv-main, .rv-side { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
.rv-card { background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: 16px; padding: 22px; display: flex; flex-direction: column; gap: 12px; }
.rv-card h2 { font-size: 1.25rem; }
.rv-card h2.rv-eyebrow { font-size: 0.72rem; }

.rv-move-card.you { background: color-mix(in srgb, var(--rv-you) 9%, var(--rv-surface)); border-color: color-mix(in srgb, var(--rv-you) 45%, var(--rv-surface)); }
.rv-move-card.you .rv-eyebrow { color: var(--rv-you); }
.rv-move-item { display: flex; align-items: flex-start; gap: 16px; padding: 16px; background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); }
.rv-move-item-text { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.rv-move-item-text p { font-size: 0.9rem; }
.rv-move-item-action:empty { display: none; }
.rv-returned { padding: 10px 12px; border-radius: 8px; background: color-mix(in srgb, var(--rv-returned) 10%, var(--rv-surface)); color: var(--rv-returned); }

.rv-needed { padding: 0; gap: 0; overflow: hidden; }
.rv-needed header { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--rv-line); }
.rv-needed header span { font-size: 0.9rem; color: var(--rv-muted); }
.rv-needed ul { list-style: none; margin: 0; padding: 0; }
.rv-needed li { display: grid; grid-template-columns: minmax(0, 1fr) 150px 140px; gap: 16px; align-items: center; padding: 14px 22px; border-bottom: 1px solid var(--rv-line); }
.rv-needed li:last-child { border-bottom: 0; }
.rv-needed-text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.rv-needed-text b { font-size: 0.95rem; font-weight: 600; }
.rv-needed-text small, .rv-needed-when { font-size: 0.82rem; color: var(--rv-muted); overflow: hidden; text-overflow: ellipsis; }
.rv-pill { justify-self: start; padding: 5px 11px; border-radius: 999px; font-size: 0.78rem; font-weight: 700; color: var(--rv-requested); background: color-mix(in srgb, var(--rv-requested) 12%, var(--rv-surface)); }
.rv-pill.accepted { color: var(--rv-accepted); background: color-mix(in srgb, var(--rv-accepted) 12%, var(--rv-surface)); }
.rv-pill.returned { color: var(--rv-returned); background: color-mix(in srgb, var(--rv-returned) 12%, var(--rv-surface)); }
.rv-pill.being_checked, .rv-pill.assumed, .rv-pill.no_longer_needed { color: var(--rv-checking); background: color-mix(in srgb, var(--rv-checking) 12%, var(--rv-surface)); }

.rv-journey ol { list-style: none; margin: 0; padding: 0; }
.rv-journey li { position: relative; display: flex; gap: 14px; padding-bottom: 16px; }
.rv-journey li:last-child { padding-bottom: 0; }
.rv-journey li i { flex: 0 0 16px; width: 16px; height: 16px; margin-top: 3px; border-radius: 50%; background: var(--rv-surface); border: 3px solid var(--rv-ahead); }
.rv-journey li::before { content: ""; position: absolute; left: 7px; top: 21px; bottom: 0; width: 3px; background: var(--rv-ahead); }
.rv-journey li:last-child::before { display: none; }
.rv-journey li.done i { background: var(--rv-primary); border-color: var(--rv-primary); }
.rv-journey li.done::before { background: var(--rv-primary); }
.rv-journey li.now i { border-color: var(--rv-primary); }
.rv-journey li.you i { background: var(--rv-you); border-color: color-mix(in srgb, var(--rv-you) 40%, var(--rv-surface)); }
.rv-journey li span { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rv-journey li b { font-size: 0.95rem; }
.rv-journey li.you b { color: var(--rv-you); }
.rv-journey li.next b { color: var(--rv-muted); font-weight: 600; }
.rv-journey li small { font-size: 0.82rem; color: var(--rv-muted); }

.rv-msg { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; border-radius: var(--rv-radius); background: color-mix(in srgb, var(--rv-muted) 8%, var(--rv-surface)); font-size: 0.9rem; }
.rv-msg.mine { background: var(--rv-soft); }
.rv-msg-head { display: flex; justify-content: space-between; gap: 12px; font-size: 0.76rem; color: var(--rv-muted); }
.rv-msg-head strong { color: var(--rv-text); }
.rv-msg div:last-child { white-space: pre-wrap; overflow-wrap: anywhere; }

/* Say something back (plan U12): the second door of the one conversation. */
.rv-thread-compose { display: flex; flex-direction: column; gap: 10px; }
.rv-thread-compose textarea { width: 100%; box-sizing: border-box; padding: 10px 12px; border: 1px solid var(--rv-line); border-radius: var(--rv-radius); background: var(--rv-surface); color: var(--rv-text); font: inherit; font-size: 0.9rem; resize: vertical; }
.rv-thread-compose textarea:focus-visible { outline: 2px solid var(--rv-primary); outline-offset: 1px; }
.rv-thread-compose textarea[disabled] { opacity: 0.6; }

.rv-cancel-btn { min-height: 44px; padding: 0 4px; border: 0; background: transparent; color: var(--rv-danger); font: inherit; font-size: 0.9rem; font-weight: 600; text-decoration: underline; cursor: pointer; }
.rv-cancel.confirming { background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); padding: 16px; display: flex; flex-direction: column; gap: 12px; font-size: 0.9rem; }
.rv-actions { display: flex; flex-wrap: wrap; gap: 10px; }

/* ── The provider's preview ──────────────────────────────────────── */

.rv-preview { margin: 16px 0; display: flex; flex-direction: column; gap: 8px; }
.rv-preview-note { font-size: 0.82rem; color: var(--rv-muted); }
.rv-preview-note.hidden-from-client { color: var(--rv-you); font-weight: 600; }
.rv-preview-frame { background: var(--rv-surface); color: var(--rv-text); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); padding: 16px; display: flex; flex-direction: column; gap: 16px; }
.rv-preview-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.rv-preview .rv-where { flex: 1 1 220px; }
.rv-preview .rv-card { border: 0; padding: 0; }
.rv-move-btn.rv-inert { cursor: default; }

/* In the portal the two mount points are the page itself, not a card. */
#portal-requests.portal-panel, #portal-request.portal-panel { background: transparent; border: 0; border-radius: 0; padding: 0; }

/* ── Narrow screens: the same page, one column (origin §14.1) ─────── */

@media (max-width: 860px) {
  .rv-columns { grid-template-columns: minmax(0, 1fr); gap: 22px; }
  .rv-needed li { grid-template-columns: minmax(0, 1fr) auto; }
  .rv-needed-when { display: none; }
}

@media (max-width: 640px) {
  .rv-list-head { flex-direction: column; align-items: stretch; }
  .rv-list-head h1, .rv-page-head h1 { font-size: 1.5rem; }
  .rv-table, .rv-table tbody, .rv-table tr, .rv-table td { display: block; width: 100%; }
  .rv-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .rv-table tr { padding: 16px; border-bottom: 1px solid var(--rv-line); }
  .rv-table tbody tr:last-child { border-bottom: 0; }
  .rv-table td { padding: 0; border: 0; }
  .rv-table td + td { margin-top: 12px; }
  .rv-row.you, .rv-row.you td { background: color-mix(in srgb, var(--rv-you) 9%, var(--rv-surface)); }
  .rv-table td.rv-service:empty { display: none; }
  .rv-track { max-width: none; }
  .rv-move-btn, .rv-primary-btn { width: 100%; min-height: 48px; }
  .rv-card { padding: 16px; }
  .rv-move-item { flex-direction: column; }
  .rv-needed header, .rv-needed li { padding-left: 16px; padding-right: 16px; }
  .rv-actions > * { flex: 1 1 100%; }
}

@media (prefers-reduced-motion: no-preference) {
  .rv-seg, .rv-line, .rv-primary-btn, .rv-move-btn { transition: background-color 120ms ease; }
}

/* ── One needed item: its own page (Services plan U16, origin §8, §14.1) ──
 *
 * The same safe builder is used at a dedicated deep link. At phone width its
 * composition becomes the focused task from the approved reference, while it
 * inherits the provider palette and platform-owned status semantics.
 */

.rv-item-page { display: flex; flex-direction: column; gap: 18px; max-width: 560px; }
.rv-item-head { display: flex; flex-direction: column; gap: 6px; }
.rv-item-back {
  align-self: flex-start; background: none; border: 0; padding: 4px 0;
  color: var(--rv-ink); font: inherit; font-size: 0.95rem; cursor: pointer; min-height: 44px;
}
.rv-item-head h1 { margin: 0; font-size: 1.4rem; line-height: 1.25; }
.rv-item-head p { margin: 0; color: var(--rv-muted); }
.rv-item-why { font-size: 0.95rem; }

/* Why it came back: the returned colour, so it reads the same as the pill. */
.rv-item-returned { border-left: 4px solid var(--rv-returned); }
.rv-item-returned p { margin: 6px 0 0; }

/* Carried over from last time (U22): the confirmation is the primary move,
   and what we already hold is named above it. */
.rv-item-carried { display: flex; flex-direction: column; gap: 10px; border-left: 4px solid var(--rv-primary); }
.rv-item-carried .rv-item-actions > * { flex: 1 1 100%; }
.rv-held {
  padding: 10px 12px; border-radius: 8px; overflow-wrap: anywhere;
  background: var(--rv-soft); color: var(--rv-ink); font-size: 0.95rem;
}

.rv-item-send { display: flex; flex-direction: column; gap: 14px; }
.rv-item-pick { display: flex; flex-wrap: wrap; gap: 10px; }
.rv-item-pick > * { flex: 1 1 160px; min-height: 48px; }

.rv-item-files { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.rv-item-files li {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  border: 1px solid var(--rv-line); border-radius: var(--rv-radius); padding: 10px 12px;
  background: var(--rv-surface);
}
.rv-item-file { display: flex; flex-direction: column; min-width: 0; }
.rv-item-file b { overflow-wrap: anywhere; font-weight: 600; }
.rv-item-file small { color: var(--rv-muted); }
.rv-item-remove { min-height: 44px; flex: 0 0 auto; }

.rv-item-label { font-weight: 600; font-size: 0.95rem; }
.rv-item-text {
  width: 100%; box-sizing: border-box; font: inherit; color: var(--rv-text);
  background: var(--rv-surface); border: 1px solid var(--rv-line);
  border-radius: var(--rv-radius); padding: 10px 12px; resize: vertical;
}
.rv-item-confirm { display: flex; align-items: flex-start; gap: 10px; font-size: 0.98rem; }
.rv-item-confirm input { margin-top: 3px; width: 20px; height: 20px; accent-color: var(--rv-primary); }

.rv-item-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.rv-item-actions > * { flex: 1 1 180px; min-height: 48px; }
.rv-item-flagged { margin: 0; color: var(--rv-accepted); font-size: 0.95rem; }

@media (max-width: 640px) {
  .rv-item-page { gap: 16px; }
  .rv-item-pick > *, .rv-item-actions > * { flex: 1 1 100%; }
  .rv-item-files li { flex-wrap: wrap; }
}

/* ─── Delivered versions and the record (Services plan U13) ────────── */

.rv-deliveries header { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; }
.rv-delivery { border-top: 1px solid var(--rv-line); padding: .9rem 0; }
.rv-delivery:first-of-type { border-top: 0; }
.rv-delivery > header { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.rv-delivery > header small { color: var(--rv-muted); display: block; }
.rv-delivery-when { font-weight: 400; }
.rv-delivery-note { margin: .5rem 0; white-space: pre-wrap; }
.rv-files { list-style: none; margin: .5rem 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.rv-files li { margin: 0; }
.rv-file { display: inline-flex; gap: .4rem; align-items: baseline; border: 1px solid var(--rv-line); border-radius: 999px; padding: .25rem .7rem; text-decoration: none; }
.rv-file small { color: var(--rv-muted); }
.rv-return textarea { width: 100%; box-sizing: border-box; margin: .35rem 0; font: inherit; padding: .5rem; border: 1px solid var(--rv-line); border-radius: .4rem; }
.rv-link-btn { background: none; border: 0; padding: 0; font: inherit; color: var(--rv-focus); text-decoration: underline; cursor: pointer; }
.rv-pill.awaiting_you { background: var(--rv-soft); }
.rv-pill.accepted { background: var(--rv-done-bg); }
.rv-pill.superseded, .rv-pill.returned, .rv-pill.reviewing_next_steps { background: var(--rv-quiet-bg); }

.rv-record { background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: .6rem; padding: 1rem 1.1rem; }
.rv-thread .rv-discussion-label { max-width:100%; width:auto; min-height:0; white-space:normal; text-align:left; justify-content:flex-start; margin:6px 0; padding:4px 0; border:0; background:transparent; }
.rv-thread > [data-rv-act="thread-all"] { align-self:flex-start; }
.rv-item-page > .rv-thread { margin-top:24px; }
.rv-record-head { display: grid; gap: .15rem; margin-bottom: .8rem; }
.rv-record-head .rv-quiet-btn { justify-self: start; margin-top: .4rem; }
.rv-record-two { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.rv-record-block { margin-top: 1rem; }
.rv-record h3 { font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; color: var(--rv-muted); margin: 0 0 .3rem; }
.rv-criteria, .rv-statements, .rv-assumptions ul, .rv-changed ul { list-style: none; margin: 0; padding: 0; }
.rv-criteria li { display: flex; gap: .5rem; align-items: baseline; padding: .25rem 0; }
.rv-criteria li i { font-style: normal; color: var(--rv-muted); }
.rv-criteria li.met i { color: var(--rv-ok); }
.rv-criteria li small, .rv-statements li small { display: block; color: var(--rv-muted); }
.rv-statements li { padding: .4rem 0; border-top: 1px solid var(--rv-line); }
.rv-statements li p { margin: 0; }
.rv-sources { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .3rem; }
.rv-source { font-size: .78rem; border: 1px solid var(--rv-line); border-radius: 999px; padding: .1rem .55rem; color: var(--rv-muted); }
.rv-source.your_file, .rv-source.your_answer { border-color: var(--rv-focus); color: var(--rv-focus); }
.rv-assumptions { background: var(--rv-quiet-bg); border-radius: .5rem; padding: .7rem .9rem; }

@media (max-width: 40rem) {
  .rv-record-two { grid-template-columns: 1fr; }
}
.rv-kept { margin: .5rem 0 0; font-size: .9rem; }
.rv-kept.saved { color: var(--rv-ok); }
.rv-kept.waiting { color: var(--rv-muted); }
/* Plan 2026-09-27-001 KTD7: who at the provider recorded this for the client. */
.rv-attribution { margin: .35rem 0 0; font-size: .85rem; color: var(--rv-muted); }

/* ── Client portal composition ─────────────────────────────────────
 * These rules are deliberately opt-in. The Desk and provider preview never
 * receive .rv-portal, so their established compact rendering is unchanged. */
.rv-portal {
  --rv-you: var(--brand-attention, var(--brand-accent, var(--your-move)));
  --rv-you-ink: var(--brand-on-attention, var(--brand-on-accent, var(--your-move-ink)));
  --rv-page: var(--brand-canvas, var(--portal-page));
  --rv-text: var(--brand-on-canvas, #16202a);
  --rv-muted: var(--brand-muted, #566273);
  --rv-surface: var(--brand-surface, #ffffff);
  --rv-on-surface: var(--brand-on-surface, #16202a);
  --rv-surface-muted: var(--brand-surface-muted, #566273);
  --rv-line: var(--brand-line, #dfe4ea);
  --rv-ink: var(--brand-ink, #0b6b61);
  --rv-ink-on-surface: var(--brand-ink-on-surface, var(--rv-ink));
  --rv-focus: var(--brand-focus, #1a4fd6);
  --rv-focus-on-surface: var(--brand-focus-on-surface, var(--rv-focus));
  --rv-warm-line: var(--portal-warm-line, var(--rv-line));
  --rv-you-soft: var(--brand-attention-soft, color-mix(in srgb, var(--rv-you) 14%, var(--rv-surface)));
  --rv-you-text: var(--brand-attention-ink, var(--rv-you));
  font-family: var(--font-ui, Inter, system-ui, sans-serif);
  font-size: .875rem;
}
.rv-portal .rv-table-wrap,
.rv-portal .rv-card,
.rv-portal .rv-empty,
.rv-portal .rv-cancel.confirming,
.rv-portal .rv-preview-frame,
.rv-portal .rv-review-document,
.rv-portal .rv-record {
  color: var(--rv-on-surface);
  --rv-text: var(--rv-on-surface);
  --rv-muted: var(--rv-surface-muted);
  --rv-ink: var(--rv-ink-on-surface);
  --rv-focus: var(--rv-focus-on-surface);
}
.rv-portal h1, .rv-portal h2 { font-family: var(--font-ui, Inter, system-ui, sans-serif); font-weight: 650; line-height: 1.3; }
.rv-portal .rv-eyebrow, .rv-portal .rv-table th { font-family: inherit; font-size: .75rem; letter-spacing: .02em; text-transform: none; }
.rv-portal .rv-num { font-family: var(--font-label, "IBM Plex Mono", monospace); }
.rv-portal.rv-list .rv-list-head { margin-bottom: 24px; }
.rv-portal .rv-list-head h1 { font-size: clamp(1.5rem, 2.4vw, 1.875rem); }
.rv-portal .rv-table-wrap { border-color: var(--rv-warm-line); border-radius: 8px; }
.rv-portal .rv-table th { padding: 12px 18px; background: var(--rv-quiet-bg); }
.rv-portal .rv-table td { padding: 16px 18px; }
.rv-portal .rv-row.you td { background: color-mix(in srgb, var(--rv-you) 9%, var(--rv-surface)); }
.rv-portal .rv-primary-btn, .rv-portal .rv-quiet-btn, .rv-portal .rv-move-btn { border-radius: 6px; font-weight: 600; font-size: .8125rem; }
.rv-portal .rv-quiet-btn { border-color: var(--rv-line); }
.rv-portal .rv-page-head { margin-bottom: 24px; gap: 8px; }
.rv-portal .rv-page-head h1 { font-size: clamp(1.5rem, 2.4vw, 1.875rem); }
.rv-portal .rv-columns { grid-template-columns: minmax(0, 1fr) minmax(300px, 360px); gap: 28px; }
.rv-portal .rv-main, .rv-portal .rv-side { gap: 22px; }
.rv-portal .rv-card { border-color: var(--rv-warm-line); border-radius: 8px; padding: 20px; box-shadow: none; }
.rv-portal .rv-card .rv-card { border: 0; border-radius: 0; padding: 0; }
.rv-portal .rv-card h2 { font-size: 1.0625rem; }
.rv-portal .rv-detail-links { gap: 4px; margin: 14px 0 20px; padding-bottom: 0; border-bottom: 1px solid var(--rv-line); }
.rv-portal .rv-detail-links a { border: 0; border-bottom: 2px solid transparent; border-radius: 0; padding: 10px 12px; background: transparent; color: var(--rv-muted); }
.rv-portal .rv-detail-links a[aria-current="page"] { border-bottom-color: var(--rv-ink); color: var(--rv-text); }
.rv-portal .rv-table .rv-detail-links { margin: 0; border: 0; gap: 4px; }
.rv-portal .rv-table .rv-detail-links a { padding: 6px 8px; border: 0; font-size: .8125rem; color: var(--rv-ink); }
.rv-portal .rv-table .rv-detail-links a:hover { background: var(--rv-quiet-bg); text-decoration: underline; }
.rv-portal .rv-progress-tiles { gap: 0; margin: 18px 0 24px; }
.rv-portal .rv-progress-tiles > div { border: 0; border-left: 1px solid var(--rv-line); border-radius: 0; background: transparent; padding: 8px 20px; }
.rv-portal .rv-progress-tiles > div:first-child { border-left: 0; padding-left: 0; }
.rv-portal .rv-progress-tiles strong { font-size: 1.375rem; }
.rv-portal .rv-move-card.you { background: color-mix(in srgb, var(--rv-you) 10%, var(--rv-surface)); border-color: color-mix(in srgb, var(--rv-you) 52%, var(--rv-surface)); }
.rv-portal .rv-move-card.you .rv-eyebrow { color: color-mix(in srgb, var(--rv-you) 80%, var(--rv-text)); }
.rv-portal .rv-needed { border-color: var(--rv-warm-line); }
.rv-portal .rv-needed li { grid-template-columns: minmax(0, 1fr) 190px 150px; }

/* Focused item: a task, not the desktop request squeezed into a phone. */
.rv-portal.rv-item-page { width: 100%; max-width: none; margin: 0; gap: 20px; }
.rv-portal .rv-item-head h1 { font-size: 1.5rem; }
.rv-portal .rv-item-head .rv-eyebrow { color: color-mix(in srgb, var(--rv-you) 80%, var(--rv-text)); }
.rv-portal .rv-item-returned { background: color-mix(in srgb, var(--rv-returned) 9%, var(--rv-surface)); border-left: 0; }
.rv-portal .rv-item-pick { min-height: 72px; padding: 12px; align-items: center; border: 1px dashed var(--rv-line); border-radius: 6px; background: var(--rv-surface); }
.rv-portal .rv-item-pick > * { flex: 0 1 auto; }
.rv-portal .rv-item-pick .rv-quiet-btn { border: 0; text-decoration: underline; }
.rv-portal .rv-item-send > .rv-item-actions .rv-primary-btn { background: var(--rv-you); color: var(--rv-you-ink); }

/* Draft review: document first, decisions alongside it. */
.rv-review-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(380px, 440px); gap: 36px; align-items: start; }
.rv-review-document { min-height: 720px; overflow: hidden; display: flex; flex-direction: column; background: var(--rv-surface); border: 1px solid var(--rv-warm-line); border-radius: 16px; }
.rv-review-document > header { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 18px 22px; border-bottom: 1px solid var(--rv-warm-line); }
.rv-review-document h2 { margin: 2px 0; font-size: 1.2rem; overflow-wrap: anywhere; }
.rv-review-document small { color: var(--rv-muted); }
.rv-document-preview { flex: 1; min-height: 630px; display: grid; place-items: center; overflow: auto; padding: 26px; background: color-mix(in srgb, var(--rv-page) 82%, var(--rv-line)); }
.rv-document-preview iframe, .rv-document-preview img { width: 100%; height: 100%; min-height: 600px; border: 0; background: var(--rv-surface); object-fit: contain; }
.rv-document-preview pre { align-self: stretch; justify-self: stretch; margin: 0; padding: 30px; white-space: pre-wrap; overflow-wrap: anywhere; background: var(--rv-surface); font: 400 .92rem/1.65 var(--font-label, monospace); }
.rv-document-preview .rv-office-frame { align-self: stretch; justify-self: stretch; border: 1px solid var(--rv-line); border-radius: 6px; }
.rv-preview-preparing { margin: 0; color: var(--rv-muted); font-size: .92rem; }
.rv-preview-unavailable { max-width: 440px; padding: 28px; text-align: center; background: var(--rv-surface); border: 1px solid var(--rv-warm-line); border-radius: 12px; }
.rv-review-side { display: flex; flex-direction: column; gap: 20px; }
.rv-review-move { background: color-mix(in srgb, var(--rv-you) 10%, var(--rv-surface)); border-color: color-mix(in srgb, var(--rv-you) 52%, var(--rv-surface)); }
.rv-review-move > .rv-eyebrow { color: color-mix(in srgb, var(--rv-you) 80%, var(--rv-text)); }
.rv-review-move .rv-delivery { border: 0; padding: 4px 0 0; }
.rv-review-move .rv-delivery > header, .rv-review-move .rv-files, .rv-review-move .rv-delivery-note, .rv-review-move .rv-link-btn { display: none; }
.rv-review-files { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; padding: 0; margin: 12px 0 0; }
.rv-review-files li { margin: 0; }
.rv-review-move .rv-actions { display: grid; }
.rv-review-move .rv-actions > * { width: 100%; min-height: 50px; }
.rv-review-move .rv-actions .rv-quiet-btn { border-color: var(--rv-you); color: color-mix(in srgb, var(--rv-you) 80%, var(--rv-text)); }

/* Standalone immutable record. */
.rv-record-page { width: 100%; max-width: none; margin: 0; padding: 10px 0 40px; }
.rv-record-page-brand { display: flex; justify-content: space-between; gap: 24px; align-items: flex-start; padding: 26px 0; border-bottom: 1px solid var(--rv-warm-line); }
.rv-record-page-brand h1 { font-size: clamp(2.1rem, 3.2vw, 2.6rem); }
.rv-record-page-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.rv-record-page > .rv-record { padding: 30px; border: 0; border-radius: 0; }
.rv-record-page > .rv-record .rv-record-head { display: none; }
.rv-record-page .rv-record-two { gap: 28px; padding-bottom: 26px; border-bottom: 1px solid var(--rv-warm-line); }
.rv-record-page .rv-record-block { margin-top: 28px; }
.rv-record-page .rv-record h3 { font-family: var(--font-label, monospace); letter-spacing: .14em; }
.rv-record-page .rv-criteria li { display: grid; grid-template-columns: 26px minmax(0, 1fr); padding: 11px 0; border-bottom: 1px solid var(--rv-warm-line); }
.rv-record-page .rv-statements li { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(240px, .75fr); gap: 20px; padding: 16px; background: color-mix(in srgb, var(--rv-page) 68%, var(--rv-surface)); border: 0; border-radius: 10px; }
.rv-record-page .rv-statements li + li { margin-top: 10px; }
.rv-record-footer { padding-top: 18px; border-top: 1px solid var(--rv-warm-line); color: var(--rv-muted); font-size: .82rem; }

@media (max-width: 900px) {
  .rv-review-grid { grid-template-columns: minmax(0, 1fr); }
  .rv-review-side { order: -1; }
  .rv-review-document { min-height: 560px; }
  .rv-document-preview { min-height: 470px; }
}

@media (max-width: 640px) {
  .rv-portal .rv-list-head h1, .rv-portal .rv-page-head h1 { font-size: 1.5rem; }
  .rv-portal.rv-item-page { margin: -4px auto 0; }
  .rv-portal .rv-item-head h1 { font-size: 1.65rem; }
  .rv-portal .rv-item-send { padding: 0; border: 0; background: transparent; }
  .rv-portal .rv-item-pick { min-height: 120px; }
  .rv-record-page { padding: 0; }
  .rv-record-page > .rv-record { padding: 22px 18px; }
  .rv-record-page-brand { flex-direction: column; }
  .rv-record-page-actions { width: 100%; }
  .rv-record-page-actions > * { flex: 1 1 100%; }
  .rv-record-page .rv-statements li { grid-template-columns: minmax(0, 1fr); }
}

@media print {
  .rv-record-page { max-width: none; padding: 0; }
  .rv-record-page-actions { display: none; }
  .rv-record-page .rv-record-block, .rv-record-page .rv-statements li, .rv-record-page .rv-criteria li { break-inside: avoid; }
  .rv-record-footer { position: fixed; bottom: 0; left: 0; right: 0; }
}

/* ── Document workspace ────────────────────────────────────────────
 * Opt-in Portal composition. Shared compact Desk/provider renderings above
 * keep their own surface and action semantics. The native dialog owns focus
 * containment; CSS only supplies its responsive document/context layout. */
.rv-portal .rv-pbc-workspace { min-width: 0; }
.rv-portal .rv-pbc-workspace > h2 { font-size: 1.125rem; margin-bottom: 6px; }
.rv-portal .rv-pbc-workspace > p { color: var(--rv-muted); }
.rv-portal .rv-pbc-tools { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; margin: 20px 0 16px; }
.rv-portal .rv-pbc-tools label { display: grid; gap: 6px; font-size: .75rem; font-weight: 600; }
.rv-portal .rv-pbc-tools label:first-child { flex: 1 1 260px; max-width: 480px; }
.rv-portal .rv-pbc-tools input,
.rv-portal .rv-pbc-tools select,
.rv-portal .rv-pbc-tools .rv-secondary-btn { min-height: 40px; max-width: 100%; padding: 8px 12px; border: 1px solid var(--rv-line); border-radius: 6px; background: var(--rv-surface); color: var(--rv-on-surface); font: inherit; font-size: .8125rem; }
.rv-portal .rv-pbc-tools .rv-secondary-btn { cursor: pointer; }
.rv-portal .rv-pbc-table { min-width: 660px; }
.rv-portal .rv-pbc-table th:first-child { width: 36%; }
.rv-portal .rv-pbc-table th:nth-child(2) { width: 18%; }
.rv-portal .rv-pbc-table th:nth-child(4) { width: 22%; }
.rv-portal .rv-pbc-table td { overflow-wrap: anywhere; vertical-align: top; }
.rv-portal .rv-pbc-table tbody tr:hover { background: var(--rv-quiet-bg); }
.rv-portal .rv-pbc-table button { max-width: 100%; text-align: left; overflow-wrap: anywhere; }
.rv-portal.rv-item-drawer {
  --rv-text: var(--rv-on-surface);
  --rv-muted: var(--rv-surface-muted);
  --rv-ink: var(--rv-ink-on-surface);
  --rv-focus: var(--rv-focus-on-surface);
  width: min(1480px, calc(100vw - 32px));
  max-width: none;
  height: calc(100dvh - 32px);
  max-height: none;
  margin: 16px auto;
  padding: 0;
  gap: 0;
  overflow: hidden;
  border: 1px solid var(--rv-line);
  border-radius: 10px;
  background: var(--rv-surface);
  color: var(--rv-text);
  box-shadow: 0 24px 80px color-mix(in srgb, var(--rv-text) 20%, transparent);
}
.rv-portal.rv-item-drawer:not([open]) { display: none; }
.rv-portal.rv-item-drawer[open] { display: flex; flex-direction: column; }
.rv-portal.rv-item-drawer::backdrop { background: color-mix(in srgb, var(--rv-text) 38%, transparent); }
/* The workspace follows the canvas tone; legacy paper cards keep their tokens. */
:root[data-portal-canvas-tone="dark"] .rv-portal.rv-item-drawer {
  color-scheme: dark;
  --rv-surface: var(--brand-canvas);
  --rv-on-surface: var(--brand-on-canvas);
  --rv-surface-muted: var(--brand-muted);
  --rv-ink-on-surface: var(--brand-on-canvas);
  --rv-focus-on-surface: var(--brand-on-canvas);
  --rv-line: color-mix(in srgb, var(--brand-on-canvas) 18%, var(--brand-canvas));
  --rv-warm-line: var(--rv-line);
  --rv-accepted: color-mix(in srgb, var(--status-accepted) 50%, var(--brand-on-canvas));
  --rv-returned: color-mix(in srgb, var(--status-returned) 50%, var(--brand-on-canvas));
  --rv-requested: color-mix(in srgb, var(--status-requested) 50%, var(--brand-on-canvas));
  --rv-checking: color-mix(in srgb, var(--status-checking) 50%, var(--brand-on-canvas));
  --rv-danger: var(--rv-returned);
}
:root[data-portal-canvas-tone="dark"] .rv-portal.rv-item-drawer::backdrop { background: color-mix(in srgb, var(--brand-canvas) 70%, transparent); }
.rv-portal .rv-drawer-header { position: relative; z-index: 1; flex: none; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 24px; border-bottom: 1px solid var(--rv-line); background: var(--rv-surface); }
.rv-portal .rv-drawer-header > div { min-width: 0; }
.rv-portal .rv-drawer-header h1 { margin: 4px 0 8px; font-size: 1.25rem; overflow-wrap: anywhere; }
.rv-portal .rv-drawer-header .rv-meta { margin-left: 10px; }
.rv-portal .rv-drawer-navigation { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 6px; flex: 0 0 auto; }
.rv-portal .rv-drawer-navigation button { min-height: 40px; padding: 0 12px; }
.rv-portal .rv-drawer-body { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); overflow: hidden; }
.rv-portal .rv-item-context { min-width: 0; overflow: auto; overscroll-behavior: contain; padding: 20px; border-right: 1px solid var(--rv-line); background: color-mix(in srgb, var(--rv-text) 2%, var(--rv-surface)); }
.rv-portal .rv-context-tabs { display: flex; flex-wrap: wrap; gap: 2px; margin: 16px 0 20px; border-bottom: 1px solid var(--rv-line); }
.rv-portal .rv-context-tabs button { flex: 1 1 auto; min-height: 40px; padding: 8px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--rv-muted); font: inherit; font-size: .8125rem; cursor: pointer; }
.rv-portal .rv-context-tabs button[aria-selected="true"] { border-bottom-color: var(--rv-ink); color: var(--rv-text); font-weight: 600; }
.rv-portal .rv-context-panel { display: grid; gap: 16px; overflow-wrap: anywhere; }
.rv-portal .rv-context-panel h2 { font-size: .9375rem; }
.rv-portal .rv-context-panel dl { margin: 0; }
.rv-portal .rv-context-panel dt { margin: 16px 0 6px; font-size: .75rem; font-weight: 600; color: var(--rv-muted); }
.rv-portal .rv-context-panel dt:first-child { margin-top: 0; }
.rv-portal .rv-context-panel dd { margin: 0; white-space: pre-wrap; }
.rv-portal .rv-context-panel p { white-space: pre-wrap; }
.rv-portal .rv-context-panel .rv-thread { border: 0; border-radius: 0; padding: 0; background: transparent; }
.rv-portal .rv-context-panel .rv-msg { border-radius: 6px; padding: 12px; }
.rv-portal .rv-context-panel .rv-msg-head { flex-wrap: wrap; gap: 4px 8px; }
.rv-portal .rv-item-documents { min-width: 0; overflow: auto; overscroll-behavior: contain; padding: 24px 28px 36px; }
.rv-portal .rv-item-documents > header h2 { margin-bottom: 8px; font-size: 1.125rem; }
.rv-portal .rv-context-restore { margin-bottom: 20px; }
.rv-portal.rv-context-collapsed .rv-drawer-body { grid-template-columns: minmax(0, 1fr); }
.rv-portal .rv-submission { min-width: 0; padding: 20px 0; border-bottom: 1px solid var(--rv-line); }
.rv-portal .rv-submission:first-of-type { padding-top: 12px; }
.rv-portal .rv-submission h3 { margin-bottom: 12px; font-size: .8125rem; font-weight: 600; color: var(--rv-muted); }
.rv-portal .rv-submission-answer { margin: 10px 0 14px; white-space: pre-wrap; overflow-wrap: anywhere; }
.rv-portal .rv-submission .rv-table-wrap,
.rv-portal .rv-delivery > .rv-table-wrap { border-radius: 6px; }
.rv-portal .rv-document-table th:first-child { width: 44%; }
.rv-portal .rv-document-table th:nth-child(2) { width: 15%; }
.rv-portal .rv-document-table th:nth-child(4) { width: 26%; }
.rv-portal .rv-document-table td,
.rv-portal .rv-delivery-files td { vertical-align: top; overflow-wrap: anywhere; }
.rv .rv-document-table tbody th,
.rv .rv-delivery-files tbody th { padding: 16px 18px; border-bottom: 1px solid var(--rv-line); background: transparent; color: var(--rv-text); font-family: inherit; font-size: .8125rem; font-weight: 550; letter-spacing: normal; text-transform: none; vertical-align: top; overflow-wrap: anywhere; }
.rv .rv-document-table tbody tr:last-child th,
.rv .rv-delivery-files tbody tr:last-child th { border-bottom: 0; }
.rv-portal .rv-document-table td:last-child > *,
.rv-portal .rv-delivery-files td:last-child > * { margin: 0 8px 4px 0; }
.rv-portal .rv-document-table small { display: block; font-size: .75rem; font-weight: 400; color: var(--rv-muted); }
.rv-portal .rv-item-readonly { margin-top: 20px; padding: 16px; border-left: 3px solid var(--rv-line); background: var(--rv-quiet-bg); }
.rv-portal .rv-item-readonly p + p { margin-top: 8px; }
.rv-portal .rv-item-activity { margin: 0; padding-left: 18px; }
.rv-portal .rv-item-activity li { padding: 0 0 16px 4px; }
.rv-portal .rv-item-activity time { display: block; font-size: .75rem; color: var(--rv-muted); }
.rv-portal .rv-item-documents > .rv-item-send { margin-top: 24px; padding: 20px 0 0; border: 0; border-top: 1px solid var(--rv-line); border-radius: 0; }
.rv-portal .rv-item-documents .rv-item-actions { justify-content: flex-start; }
.rv-portal .rv-item-documents .rv-item-actions > * { flex: 0 1 auto; min-height: 44px; }
.rv-portal .rv-item-documents .rv-document-preview { margin-top: 20px; min-height: 340px; padding: 16px; border: 1px solid var(--rv-line); border-radius: 6px; background: var(--rv-quiet-bg); color: var(--rv-text); }
.rv-portal .rv-item-documents .rv-document-preview iframe { min-height: 480px; }
.rv-portal .rv-item-documents .rv-document-preview img { min-height: 0; max-height: 70dvh; }
.rv-portal .rv-delivery { min-width: 0; padding: 24px 0; }
.rv-portal .rv-delivery > header { margin-bottom: 14px; }
.rv-portal .rv-delivery > header b { display: block; margin-bottom: 5px; font-size: 1rem; line-height: 1.4; overflow-wrap: anywhere; }
.rv-portal .rv-delivery-note { margin: 12px 0 18px; line-height: 1.65; overflow-wrap: anywhere; }
.rv-portal .rv-delivery-files th:first-child { width: 62%; }
.rv-portal .rv-delivery-files th:nth-child(2) { width: 16%; }
.rv-portal .rv-delivery-files td a { font-weight: 500; }
.rv-portal .rv-delivery > .rv-actions { margin-top: 16px; }
.rv-portal .rv-delivery > p > .rv-link-btn { margin-top: 14px; font-size: .8125rem; }
.rv-portal .rv-review-move .rv-delivery > .rv-table-wrap { display: none; }
/* Deliverables by deliverable (plan 2026-09-28-011 U5/U6): one row per
   deliverable, its current files listed, earlier versions folded beneath. */
.rv-portal .rv-deliverable-title a { color: inherit; text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); text-underline-offset: 3px; }
.rv-portal .rv-deliverable-title a:hover { text-decoration-color: currentColor; }
.rv-portal .rv-deliverable-title a:focus-visible { outline: 2px solid var(--rv-primary, currentColor); outline-offset: 2px; border-radius: 2px; }
.rv .rv-earlier { margin-top: 16px; border-top: 1px dashed var(--rv-line); padding-top: 12px; }
.rv .rv-earlier > summary, .rv .rv-earlier-version details > summary { cursor: pointer; font-size: .8125rem; font-weight: 600; color: var(--rv-muted); min-height: 32px; display: list-item; }
.rv .rv-earlier > summary:focus-visible, .rv .rv-earlier-version summary:focus-visible { outline: 2px solid var(--rv-primary, currentColor); outline-offset: 2px; border-radius: 2px; }
.rv .rv-earlier-list { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 12px; }
.rv .rv-earlier-version { min-width: 0; padding: 12px 14px; border: 1px solid var(--rv-line); border-radius: 6px; background: var(--rv-quiet-bg); }
.rv .rv-earlier-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 12px; font-size: .8125rem; }
.rv .rv-earlier-version .rv-delivery-note { margin: 8px 0; font-size: .8125rem; }
.rv .rv-earlier-version .rv-table-wrap { margin-top: 8px; background: var(--rv-surface, transparent); }
.rv-portal.rv-deliverable-page .rv-deliverable-history { margin-top: 20px; }
.rv-portal.rv-deliverable-page .rv-deliverable-current .rv-delivery { padding-top: 8px; }

@media (max-width: 900px) {
  .rv-portal .rv-columns { grid-template-columns: minmax(0, 1fr); }
  .rv-portal.rv-item-drawer { width: calc(100vw - 16px); height: calc(100dvh - 16px); margin: 8px auto; }
  .rv-portal .rv-drawer-header { padding: 14px 16px; }
  .rv-portal .rv-drawer-body { grid-template-columns: minmax(0, 1fr); overflow-y: auto; align-content: start; }
  .rv-portal .rv-item-context { overflow: visible; border-right: 0; border-bottom: 1px solid var(--rv-line); padding: 16px; }
  .rv-portal .rv-item-documents { overflow: visible; padding: 20px 16px 28px; }
}
@media (max-width: 640px) {
  .rv-portal.rv-item-drawer { width: 100%; height: 100dvh; margin: 0; border: 0; border-radius: 0; }
  .rv-portal .rv-drawer-header { flex-wrap: wrap; gap: 8px; }
  .rv-portal .rv-drawer-header h1 { font-size: 1.125rem; margin-top: 0; }
  .rv-portal .rv-drawer-navigation { width: 100%; justify-content: flex-start; }
  .rv-portal .rv-drawer-navigation button { min-height: 44px; flex: 1; }
  .rv-portal .rv-pbc-tools { gap: 10px; }
  .rv-portal .rv-pbc-tools label:first-child { flex-basis: 100%; max-width: none; }
  .rv-portal .rv-pbc-tools label:nth-child(2) { flex: 1; min-width: 0; }
  .rv-portal .rv-pbc-tools input,
  .rv-portal .rv-pbc-tools select,
  .rv-portal .rv-pbc-tools .rv-secondary-btn { min-height: 44px; }
  .rv-portal .rv-document-table,
  .rv-portal .rv-delivery-files { table-layout: auto; }
  .rv-portal .rv-document-table tr,
  .rv-portal .rv-delivery-files tr { padding: 12px; }
  .rv-portal .rv-document-table td,
  .rv-portal .rv-delivery-files td { padding: 0; }
  .rv .rv-document-table tbody th:first-child,
  .rv .rv-delivery-files tbody th:first-child { display: block; width: 100%; padding: 0; margin-bottom: 8px; border: 0; }
  .rv-portal .rv-document-table td + td,
  .rv-portal .rv-delivery-files td + td { margin-top: 8px; }
  .rv-portal .rv-document-table td:last-child,
  .rv-portal .rv-delivery-files td:last-child { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
  .rv-portal .rv-document-table td:last-child > *,
  .rv-portal .rv-delivery-files td:last-child > * { min-height: 44px; display: inline-flex; align-items: center; margin: 0; }
  .rv-portal .rv-item-documents .rv-item-actions > * { flex: 1 1 100%; min-height: 48px; }
  .rv-portal .rv-item-documents .rv-document-preview { padding: 8px; }
}

/* ── The Engagement and the workstream, aligned with Practice ──────
   Plan 2026-09-28-010: Overview landings and tabs. Variables only. */
.rv-head-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.rv-tabs { display: flex; flex-wrap: wrap; gap: 2px; margin-top: 18px; border-bottom: 1px solid var(--rv-line); }
.rv-tabs a { display: inline-flex; align-items: center; gap: 4px; padding: 10px 14px; margin-bottom: -1px; border-bottom: 2px solid transparent; color: var(--rv-muted); font-size: 0.9rem; font-weight: 500; text-decoration: none; }
.rv-tabs a[aria-current="page"] { color: var(--rv-text); font-weight: 600; border-bottom-color: var(--rv-text); }
.rv-tabs a:hover { color: var(--rv-text); }
.rv-tab-count { font-size: 0.78rem; color: var(--rv-muted); }
.rv-tab-panel { margin-top: 20px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.rv-coverage { margin: 0; font-size: 0.85rem; color: var(--rv-muted); }
.rv-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }
.rv-tile { display: grid; gap: 4px; padding: 14px 16px; background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: var(--rv-radius); }
.rv-tile-label { font-size: 0.7rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--rv-muted); }
.rv-tile.you .rv-tile-label { color: var(--rv-you); }
.rv-tile strong { font-size: 1.6rem; line-height: 1.1; }
.rv-tile small { color: var(--rv-muted); font-size: 0.82rem; }
.rv-overview-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.rv-overview-grid > div, .rv-overview-grid > aside { display: grid; gap: 16px; min-width: 0; }
.rv-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.rv-card-head small, .rv-card-head span { color: var(--rv-muted); font-size: 0.85rem; }
.rv-move-list, .rv-where-list, .rv-glance ul, .rv-team, .rv-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.rv-move-list li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-top: 1px solid var(--rv-line); }
.rv-move-list li:first-child { border-top: 0; }
.rv-move-list span, .rv-where-title { display: grid; gap: 2px; min-width: 0; }
.rv-move-list small, .rv-where-title small, .rv-team small { color: var(--rv-muted); font-size: 0.82rem; }
.rv-your-move.you { border-color: var(--rv-you); }
.rv-where-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 12px; align-items: center; padding: 8px 0; border-top: 1px solid var(--rv-line); }
.rv-where-row:first-child { border-top: 0; }
.rv-latest { margin: 0; padding: 12px 14px; border-left: 3px solid var(--rv-primary); background: var(--rv-quiet-bg); border-radius: 6px; }
.rv-latest p { margin: 0 0 6px; }
.rv-latest footer { font-size: 0.82rem; color: var(--rv-muted); }
.rv-steps li { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; gap: 10px; align-items: center; }
.rv-steps li i { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--rv-ahead); }
.rv-steps li.done i { background: var(--rv-primary); border-color: var(--rv-primary); }
.rv-steps li.blocked i { border-color: var(--rv-you); }
.rv-steps li span { display: grid; }
.rv-steps li small { color: var(--rv-muted); font-size: 0.8rem; }
.rv-steps li em { font-style: normal; font-size: 0.82rem; color: var(--rv-muted); }
/* "Where it is" (Ore, 2026-09-28): the old vertical timeline, newest first,
   so every connector below the current step is a step already taken. */
.rv-journey li.now::before, .rv-journey li.you::before { background: var(--rv-primary); }
.rv-journey-track { margin: 2px 0 16px; }
.rv-journey-compact li { padding-bottom: 10px; }
.rv-journey-compact li b { font-size: 0.88rem; }
.rv-where-row > .rv-journey-compact { grid-column: 1 / -1; }
.rv-deliveries-of { font-weight: 400; font-size: 0.82rem; color: var(--rv-muted); margin-left: 6px; }
.rv-deliveries h2 a { color: inherit; }
.rv-glance a { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; color: var(--rv-text); text-decoration: none; border-top: 1px solid var(--rv-line); }
.rv-glance li:first-child a { border-top: 0; }
.rv-glance a b { font-weight: 600; color: var(--rv-ink); }
.rv-asked dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 4px 14px; margin: 8px 0 0; }
.rv-asked dt { color: var(--rv-muted); font-size: 0.85rem; }
.rv-asked dd { margin: 0; }
.rv-team li { display: grid; }
.rv-status-line { display: flex; align-items: center; gap: 8px; margin: 0 0 4px; }
.rv-pill.stage { background: var(--rv-quiet-bg); color: var(--rv-text); }
.rv-pill.stage.you { background: color-mix(in srgb, var(--rv-you) 14%, var(--rv-surface)); color: var(--rv-you); }
.rv-engagement-card { display: grid; gap: 8px; }
.rv-other-streams { margin-top: 24px; }
.rv-thread-summary .rv-msg { margin-top: 8px; }
@media (max-width: 760px) {
  .rv-overview-grid { grid-template-columns: minmax(0, 1fr); }
  .rv-where-row { grid-template-columns: minmax(0, 1fr); }
  .rv-tabs { flex-wrap: nowrap; overflow-x: auto; }
}

/* Plan 2026-09-28-011 follow-up: a colleague's row names who holds the draft
   and offers a way to view it; never "Nothing needed from you" beside
   "Draft for your review". */
.rv .rv-waiting-lead { display: block; color: var(--rv-text); font-size: .8125rem; font-weight: 550; line-height: 1.4; overflow-wrap: anywhere; }
.rv .rv-move-view { margin-top: 6px; }

/* ── The portal front door (plan 2026-09-29-003 U3) ───────────────────
   The signed-out landing, the signed-in catalogue tiles and the Practice
   preview. Brand reaches it only through the --brand-* custom properties the
   portal writes on :root (or the Practice preview writes on its container). */
.pl {
  --pl-page: var(--brand-canvas, Canvas);
  --pl-text: var(--brand-on-canvas, CanvasText);
  --pl-muted: var(--brand-muted, GrayText);
  --pl-surface: var(--brand-surface, Canvas);
  --pl-on-surface: var(--brand-on-surface, CanvasText);
  --pl-surface-muted: var(--brand-surface-muted, GrayText);
  --pl-line: var(--brand-line, GrayText);
  --pl-primary: var(--brand-primary, ButtonText);
  --pl-on-primary: var(--brand-on-primary, ButtonFace);
  --pl-hover: var(--brand-hover, var(--pl-primary));
  --pl-ink: var(--brand-ink-on-surface, var(--brand-ink, LinkText));
  --pl-soft: var(--brand-soft-on-surface, var(--brand-soft, ButtonFace));
  --pl-focus: var(--brand-focus-on-surface, var(--brand-focus, Highlight));
  --pl-gutter: clamp(16px, 4vw, 56px);
  display: flex; flex-direction: column; min-width: 0;
  background: var(--pl-page); color: var(--pl-text);
  font-family: var(--font-sans, "DM Sans", system-ui, sans-serif); font-size: 15px; line-height: 1.55;
}
.pl *, .pl *::before, .pl *::after { box-sizing: border-box; }
.pl a:focus-visible, .pl button:focus-visible, .pl input:focus-visible, .pl h1:focus-visible, .pl h2:focus-visible, .pl h3:focus-visible { outline: 3px solid var(--pl-focus); outline-offset: 2px; }
.pl h1:focus:not(:focus-visible), .pl h2:focus:not(:focus-visible), .pl h3:focus:not(:focus-visible) { outline: none; }
.pl-header {
  display: flex; align-items: center; flex-wrap: wrap; gap: 12px 24px; min-height: 68px;
  padding: 12px var(--pl-gutter); background: var(--pl-page); color: var(--pl-text);
}
.pl-brand { display: inline-flex; align-items: center; gap: 12px; min-width: 0; color: inherit; text-decoration: none; }
.pl-brand .logo-mark { width: 36px; height: 36px; flex: none; object-fit: contain; border-radius: 50%; background: var(--pl-surface); }
.pl-brand-name { font-size: 1.0625rem; font-weight: 650; overflow-wrap: anywhere; }
.pl-nav { margin-left: auto; display: flex; align-items: center; flex-wrap: wrap; gap: 8px 20px; font-size: 14.5px; }
.pl-nav-link { display: inline-flex; align-items: center; min-height: 44px; color: var(--pl-muted); font-weight: 500; text-decoration: none; }
.pl-nav-link:hover, .pl-nav-link[aria-current="page"] { color: var(--pl-text); }
.pl-nav-signin { display: inline-flex; align-items: center; min-height: 44px; color: inherit; font-weight: 600; text-decoration: none; border: 1px solid var(--pl-focus); border-radius: 999px; padding: 0 18px; }
.pl-nav-signin:hover { background: color-mix(in srgb, var(--pl-primary) 8%, var(--pl-page)); }
/* The banner card (plan 2026-11-06-001 R2): a very light tint of the brand
   colour over the page, a soft border from the focus colour (which the brand
   tokens keep at 3:1 against the page) and white entry tiles. */
.pl-hero {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 380px); gap: 20px 40px; align-items: center;
  margin: clamp(8px, 1.5vw, 20px) var(--pl-gutter) 36px; padding: clamp(24px, 3.2vw, 44px);
  background: color-mix(in srgb, var(--pl-primary) 4%, var(--pl-page));
  border: 1px solid color-mix(in srgb, var(--pl-focus) 30%, var(--pl-page)); border-radius: 16px;
}
.pl-hero-main { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 22px; align-items: start; min-width: 0; }
.pl-hero-mark { width: 64px; height: 64px; flex: none; border-radius: 16px; object-fit: contain; border: 1px solid var(--pl-line); background: var(--pl-surface); }
.pl-monogram { display: grid; place-items: center; background: var(--pl-primary); color: var(--pl-on-primary); border-color: var(--pl-focus); font-size: 1.5rem; font-weight: 700; }
.pl-hero-copy { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.pl-kicker { margin: 0; font-size: 13px; font-weight: 600; color: var(--pl-muted); overflow-wrap: anywhere; }
.pl-hero h1 { margin: 0; max-width: 20ch; font-size: clamp(1.9rem, 3.6vw, 2.9rem); line-height: 1.06; letter-spacing: -.02em; font-weight: 700; overflow-wrap: anywhere; }
.pl-promise { margin: 0; max-width: 52ch; font-size: clamp(1rem, 1.4vw, 1.18rem); color: var(--pl-muted); overflow-wrap: anywhere; }
.pl-ctas { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; }
.pl-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 20px; border-radius: 999px; border: 1px solid transparent; font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; white-space: nowrap; }
.pl-btn-large { min-height: 48px; padding: 0 24px; }
.pl-btn-small { min-height: 40px; padding: 0 18px; font-size: 14.5px; }
.pl-btn-primary { background: var(--pl-primary); color: var(--pl-on-primary); border-color: var(--pl-focus); }
.pl-btn-primary:hover { background: var(--pl-hover); }
.pl-btn-quiet { background: transparent; color: inherit; border-color: var(--pl-focus); }
.pl-btn-quiet:hover { background: color-mix(in srgb, var(--pl-primary) 8%, var(--pl-page)); }
.pl-btn[disabled], .pl-btn[aria-disabled="true"] { cursor: default; }
.pl-entries { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; min-width: 0; }
.pl-entry { display: grid; align-content: start; gap: 2px; min-height: 44px; padding: 14px 18px; border-radius: 14px; background: var(--pl-surface); color: var(--pl-on-surface); border: 1px solid color-mix(in srgb, var(--pl-focus) 30%, var(--pl-surface)); text-decoration: none; }
.pl-entry:hover { border-color: var(--pl-focus); }
.pl-entry-lead { color: var(--pl-surface-muted); font-size: 14px; overflow-wrap: anywhere; }
.pl-entry-act { color: var(--pl-ink); font-weight: 650; }
.pl-entry-act svg { display: inline-block; vertical-align: -3px; margin-left: 6px; transition: transform .15s; }
.pl-entry:hover .pl-entry-act svg { transform: translateX(2px); }
.pl-nowrap { white-space: nowrap; }
.pl-trust { grid-column: 1 / -1; list-style: none; margin: 4px 0 0; padding: 18px 0 0; border-top: 1px solid color-mix(in srgb, var(--pl-focus) 30%, var(--pl-page)); display: flex; flex-wrap: wrap; gap: 6px 22px; font-size: 14px; color: var(--pl-muted); }
.pl-trust li { display: flex; align-items: center; gap: 6px; min-width: 0; overflow-wrap: anywhere; }
.pl-trust svg { flex: none; color: var(--pl-ink); }
.pl-section { display: flex; flex-direction: column; gap: 16px; padding: 0 var(--pl-gutter) clamp(32px, 4vw, 48px); scroll-margin-top: 16px; }
.pl-section h2 { margin: 0; font-size: 1.2rem; letter-spacing: -.01em; overflow-wrap: anywhere; }
.pl-section-head p { margin: 4px 0 0; color: var(--pl-muted); }
/* The Service rows (plan 2026-11-06-001 R3): one surface panel, the name's
   link stretched over each row, Start above it. */
.pl-tiles { display: flex; flex-direction: column; background: var(--pl-surface); color: var(--pl-on-surface); border: 1px solid var(--pl-line); border-radius: 16px; overflow: hidden; }
.pl-tile { position: relative; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; gap: 8px 28px; align-items: center; min-width: 0; padding: 22px 24px; border-top: 1px solid var(--pl-line); }
.pl-tile:first-child { border-top: 0; }
.pl-tile:hover { background: var(--pl-soft); }
.pl-tile:has(.pl-tile-link:focus-visible), .pl-tile:has(.pl-btn:focus-visible) { outline: 3px solid var(--pl-focus); outline-offset: -3px; }
.pl-tile-main { min-width: 0; }
.pl-tile h3, .pl-tile h4 { margin: 0; font-size: 1.08rem; line-height: 1.3; overflow-wrap: anywhere; }
.pl-tile-link { color: inherit; text-decoration: none; }
.pl-tile-link::after { content: ""; position: absolute; inset: 0; }
.pl .pl-tile-link:focus-visible { outline: none; }
.pl-tile-summary { margin: 4px 0 0; color: var(--pl-surface-muted); font-size: 15px; overflow-wrap: anywhere; }
.pl-tile-ask { grid-template-columns: minmax(0, 1fr) auto; background: color-mix(in srgb, var(--pl-surface) 60%, var(--pl-page)); }
.pl-facts { display: grid; gap: 4px; font-size: 14.5px; min-width: 0; }
.pl-fact { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; }
.pl-fact-label { margin: 0; color: var(--pl-surface-muted); }
.pl-fact ul { margin: 0; padding: 0; list-style: none; display: inline; overflow-wrap: anywhere; }
.pl-fact li { display: inline; }
.pl-fact li + li::before { content: ", "; }
.pl-tile-actions { position: relative; z-index: 1; display: flex; align-items: center; gap: 10px; }
.pl-chevron { color: var(--pl-surface-muted); flex: none; }
.pl-empty { margin: 0; padding: 22px 24px; color: var(--pl-surface-muted); }
/* Service Group sections (plan 2026-11-06-010 U7): a heading, a count and the
   group's description over the same row panel; "Other services" last. */
.pl-groups { display: flex; flex-direction: column; gap: clamp(24px, 3vw, 36px); }
.pl-section-head + .pl-groups { margin-top: 8px; }
.pl-group { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.pl-group-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.pl .pl-group-title { margin: 0; font-size: 1.05rem; letter-spacing: -.01em; overflow-wrap: anywhere; }
.pl-group-count { margin: 0; color: var(--pl-muted); font-size: 14px; }
.pl-group-desc { margin: 0; max-width: 72ch; color: var(--pl-muted); font-size: 15px; overflow-wrap: anywhere; }
.pl-about { gap: 24px; }
.pl-about-head { display: flex; flex-direction: column; gap: 12px; max-width: 760px; }
.pl-about-head p { margin: 0; color: var(--pl-muted); font-size: clamp(1rem, 1.3vw, 1.0625rem); line-height: 1.6; overflow-wrap: anywhere; }
.pl-about-cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.pl-about-cards-1 { grid-template-columns: minmax(0, 560px); }
.pl-about-cards-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pl-about-cards-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pl-about-cards li { display: flex; flex-direction: column; gap: 8px; min-width: 0; padding: 22px; background: var(--pl-surface); color: var(--pl-on-surface); border: 1px solid var(--pl-line); border-radius: 16px; }
.pl-about-cards h3 { margin: 0; font-size: 1.0625rem; overflow-wrap: anywhere; }
.pl-about-cards p { margin: 0; color: var(--pl-surface-muted); font-size: 14.5px; overflow-wrap: anywhere; }
.pl-about-more { margin: 0; }
.pl-about-link { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; color: var(--pl-ink); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
.pl-about-link:hover { color: var(--pl-hover); }
/* The How it works view (plan 2026-11-06-001 R5). */
.pl-how-body { padding-top: clamp(24px, 4vw, 56px); max-width: calc(760px + 2 * var(--pl-gutter)); }
.pl-how-body h1 { margin: 0; font-size: clamp(1.9rem, 3.6vw, 2.9rem); line-height: 1.06; letter-spacing: -.02em; overflow-wrap: anywhere; }
.pl-how-lede { margin: 0 0 12px; color: var(--pl-muted); font-size: clamp(1rem, 1.4vw, 1.18rem); }
.pl-timeline { list-style: none; margin: 0; padding: 0; }
.pl-timeline li { position: relative; display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 16px; padding-bottom: 28px; }
.pl-timeline li::before { content: ""; position: absolute; left: 19px; top: 40px; bottom: 0; width: 2px; background: color-mix(in srgb, var(--pl-focus) 30%, var(--pl-page)); }
.pl-timeline li:last-child::before { display: none; }
.pl-timeline b { display: block; margin: 6px 0 4px; font-size: 1.08rem; overflow-wrap: anywhere; }
.pl-timeline p { margin: 0; color: var(--pl-muted); overflow-wrap: anywhere; }
.pl-step-n { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: var(--pl-surface); color: var(--pl-ink); border: 2px solid var(--pl-focus); font-weight: 650; }
.pl-ready { display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: center; justify-content: space-between; margin-top: 12px; padding: 24px; border-radius: 16px; background: var(--pl-surface); color: var(--pl-on-surface); border: 1px solid var(--pl-line); }
.pl-ready h2 { margin: 0 0 4px; font-size: 1.1rem; }
.pl-ready p { margin: 0; color: var(--pl-surface-muted); }
.pl-ready .pl-ctas { margin: 0; }
.pl-ready .pl-btn-quiet { color: var(--pl-on-surface); }
.pl-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.pl-catalog { background: transparent; padding: 0; }
.pl-catalog .pl-tiles { margin-top: 8px; }
@media (max-width: 900px) {
  .pl-about-cards, .pl-about-cards-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
  .pl-hero { grid-template-columns: minmax(0, 1fr); }
  .pl-entries { grid-template-columns: repeat(auto-fit, minmax(min(100%, 130px), 1fr)); }
  .pl-tile { grid-template-columns: minmax(0, 1fr) auto; }
  .pl-facts, .pl-tile-gap { grid-column: 1 / -1; grid-row: 2; }
  /* The whole row opens the Service; Start stays on wide screens only. */
  .pl-tile-actions .pl-btn { display: none; }
  /* The signed-in picker exists to start a request: Start stays. */
  .pl-catalog .pl-tile-actions .pl-btn { display: inline-flex; }
}
@media (max-width: 560px) {
  .pl-header { gap: 10px 16px; }
  .pl-nav-link { display: none; }
  .pl-nav-signin { padding: 0 14px; font-size: 14px; }
  .pl-hero-main { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .pl-hero { padding: 20px 18px; }
  .pl-entry { padding: 12px 14px; }
  .pl-hero-mark { width: 52px; height: 52px; border-radius: 14px; }
  .pl-tile { padding: 18px 16px; }
  .pl-about-cards, .pl-about-cards-2, .pl-about-cards-3 { grid-template-columns: minmax(0, 1fr); }
}

/* ── The Desk: provider cards and the deliverables table (plan 2026-09-29-005) ── */
.rv-desk { display: grid; gap: 14px; }
.rv-desk-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.rv-desk-filters button { min-height: 34px; padding: 0 12px; border: 1px solid var(--rv-line); border-radius: 999px; background: var(--rv-surface); color: var(--rv-text); font: inherit; font-size: 0.86rem; cursor: pointer; }
.rv-desk-filters button[aria-pressed="true"] { border-color: var(--rv-ink); background: var(--rv-soft); color: var(--rv-ink); font-weight: 700; }
.rv-desk-filters button.attention { border-color: color-mix(in srgb, var(--rv-you) 35%, var(--rv-surface)); color: var(--rv-you); font-weight: 600; }
.rv-desk-filters button.attention[aria-pressed="true"] { background: color-mix(in srgb, var(--rv-you) 12%, var(--rv-surface)); border-color: var(--rv-you); }
.rv-desk-totals { margin-left: auto; color: var(--rv-muted); font-size: 0.84rem; }
.rv-desk-notice { margin: 0; padding: 10px 14px; border: 1px solid var(--rv-line); border-radius: 10px; background: var(--rv-quiet-bg); color: var(--rv-muted); font-size: 0.88rem; }
/* Plan 2026-09-29-006: "is this provider you?" and the hidden list. */
.rv-desk-pending { display: grid; gap: 10px; }
.rv-desk-confirm { display: flex; align-items: center; gap: 16px; padding: 16px 20px; border: 1px solid color-mix(in srgb, var(--rv-you) 35%, var(--rv-line)); border-radius: 14px; background: color-mix(in srgb, var(--rv-you) 6%, var(--rv-surface)); }
.rv-desk-confirm-copy { flex: 1; min-width: 0; }
.rv-desk-confirm-copy b { display: block; color: var(--rv-text); font-size: 1rem; }
.rv-desk-confirm-copy b span { color: var(--rv-muted); font-weight: 500; }
.rv-desk-confirm-copy p { margin: 4px 0 0; color: var(--rv-muted); font-size: 0.88rem; line-height: 1.45; }
.rv-desk-confirm-actions { flex: none; display: flex; gap: 8px; }
.rv-desk-confirm-actions button { min-height: 36px; padding: 0 14px; border-radius: 9px; font: inherit; font-size: 0.88rem; font-weight: 600; cursor: pointer; }
.rv-desk-confirm-yes { border: 1px solid var(--rv-ink); background: var(--rv-ink); color: var(--rv-surface); }
.rv-desk-confirm-no { border: 1px solid var(--rv-line); background: var(--rv-surface); color: var(--rv-text); }
.rv-desk-confirm-actions button:disabled { opacity: 0.6; cursor: progress; }
.rv-desk-menu { position: relative; flex: none; }
.rv-desk-menu-button { width: 34px; height: 34px; padding: 0; border: 1px solid var(--rv-line); border-radius: 9px; background: var(--rv-surface); color: var(--rv-text); font: inherit; font-size: 1.1rem; line-height: 1; cursor: pointer; }
.rv-desk-menu-button:hover, .rv-desk-menu-button:focus-visible, .rv-desk-menu-button[aria-expanded="true"] { border-color: var(--rv-ink); }
.rv-desk-menu-list { position: absolute; right: 0; top: calc(100% + 6px); z-index: 5; min-width: 220px; padding: 6px; border: 1px solid var(--rv-line); border-radius: 10px; background: var(--rv-surface); box-shadow: 0 10px 30px color-mix(in srgb, var(--rv-text) 14%, transparent); }
.rv-desk-menu-list[hidden] { display: none; }
.rv-desk-menu-list button { display: block; width: 100%; padding: 9px 10px; border: 0; border-radius: 7px; background: none; color: var(--rv-text); font: inherit; text-align: left; cursor: pointer; }
.rv-desk-menu-list button:hover, .rv-desk-menu-list button:focus-visible { background: var(--rv-line); }
.rv-desk-hidden { margin: 0; color: var(--rv-muted); font-size: 0.84rem; }
.rv-desk-hidden button { padding: 0; border: 0; background: none; color: var(--rv-ink); font: inherit; font-weight: 600; text-decoration: underline; cursor: pointer; }
@media (max-width: 640px) {
  .rv-desk-confirm { flex-direction: column; align-items: stretch; }
  .rv-desk-confirm-actions { flex-direction: column; }
  .rv-desk-confirm-actions button { width: 100%; }
}
.rv-desk-provider { background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: 14px; overflow: hidden; }
.rv-desk-head { display: flex; align-items: center; gap: 14px; padding: 16px 20px; border-bottom: 1px solid var(--rv-line); }
.rv-desk-logo { --rv-desk-accent: var(--rv-ink); flex: none; width: 42px; height: 42px; border-radius: 10px; display: flex; align-items: center; justify-content: center; background: var(--rv-desk-accent); color: var(--rv-desk-logo-ink); font-size: 0.75rem; font-weight: 700; overflow: hidden; }
.rv-desk-logo.has-image { background: var(--rv-surface); border: 1px solid var(--rv-line); }
.rv-desk-logo img { width: 100%; height: 100%; object-fit: contain; }
.rv-desk-id { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.rv-desk-id b { font-size: 1.06rem; }
.rv-desk-id span { color: var(--rv-muted); font-size: 0.84rem; }
.rv-desk-badge { flex: none; padding: 3px 10px; border-radius: 999px; background: color-mix(in srgb, var(--rv-you) 12%, var(--rv-surface)); color: var(--rv-you); font-size: 0.78rem; font-weight: 700; }
.rv-desk-open { flex: none; padding: 8px 12px; border: 1px solid var(--rv-line); border-radius: 9px; color: var(--rv-text); font-weight: 600; text-decoration: none; white-space: nowrap; }
.rv-desk-open:hover, .rv-desk-open:focus-visible { border-color: var(--rv-ink); }
.rv-desk-chips { display: flex; flex-wrap: wrap; gap: 8px; padding: 10px 20px 4px; }
.rv-desk-chip { padding: 3px 10px; border: 0; border-radius: 999px; background: var(--rv-soft); color: var(--rv-ink); font: inherit; font-size: 0.8rem; font-weight: 600; }
.rv-desk-chip.saved { background: var(--rv-quiet-bg); color: var(--rv-muted); }
button.rv-desk-chip { cursor: pointer; }
.rv-desk-rows { display: grid; }
.rv-desk-row { display: grid; grid-template-columns: minmax(0, 2.4fr) minmax(0, 1.6fr) minmax(0, 1.2fr); align-items: center; gap: 12px; padding: 13px 20px; border-top: 1px solid var(--rv-line); }
.rv-desk-rows .rv-desk-row:first-child { border-top: 0; }
.rv-desk-chips + .rv-desk-rows .rv-desk-row:first-child { border-top: 1px solid var(--rv-line); margin-top: 8px; }
.rv-desk-what { display: flex; flex-direction: column; min-width: 0; }
.rv-desk-what a, .rv-desk-what b { color: var(--rv-text); font-weight: 600; text-decoration: none; }
.rv-desk-what a:hover { text-decoration: underline; }
.rv-desk-what small { color: var(--rv-muted); font-size: 0.8rem; }
.rv-desk-where .rv-where { display: flex; flex-direction: column; gap: 4px; }
.rv-desk-move { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.rv-desk-more { width: 100%; padding: 10px; border: 0; border-top: 1px solid var(--rv-line); background: var(--rv-quiet-bg); color: var(--rv-ink); font: inherit; font-weight: 600; cursor: pointer; }
.rv-desk-empty { padding: 28px; border: 1px solid var(--rv-line); border-radius: 14px; background: var(--rv-surface); }
.rv-desk-deliverables th small { display: block; color: var(--rv-muted); font-size: 0.8rem; font-weight: 400; }
.rv-desk-deliverables th b { font-weight: 600; }
.rv-desk-state { white-space: normal; }
/* The pill and each action stay whole; the cell wraps between them, so a narrow table (the Finney panel open) never clips View or Open. */
.rv-desk-state .rv-pill, .rv-desk-state .rv-desk-open-row { display: inline-block; white-space: nowrap; }
.rv-pill.kept { color: var(--rv-accepted); background: color-mix(in srgb, var(--rv-accepted) 12%, var(--rv-surface)); }
.rv-pill.awaiting_you { color: var(--rv-you); background: color-mix(in srgb, var(--rv-you) 12%, var(--rv-surface)); }
.rv-desk-open-row { margin-left: 8px; padding: 0; border: 0; background: transparent; color: var(--rv-ink); font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; }
@media (max-width: 720px) {
  .rv-desk-head { flex-wrap: wrap; padding: 14px 16px; }
  .rv-desk-id { flex-basis: calc(100% - 60px); }
  .rv-desk-open { width: 100%; text-align: center; }
  .rv-desk-open:has(+ .rv-desk-menu) { width: calc(100% - 50px); }
  .rv-desk-chips { padding: 10px 16px 4px; }
  .rv-desk-row { grid-template-columns: 1fr; gap: 8px; padding: 12px 16px; }
  .rv-desk-totals { margin-left: 0; width: 100%; }
  .rv-desk-deliverables thead { display: none; }
  .rv-desk-deliverables tr { display: grid; grid-template-columns: 1fr; gap: 4px; padding: 12px 14px; border-bottom: 1px solid var(--rv-line); }
  .rv-desk-deliverables th, .rv-desk-deliverables td { display: block; padding: 0; border: 0; text-align: left; }
  .rv-desk-deliverables td::before { content: attr(data-label) ": "; color: var(--rv-muted); font-size: 0.8rem; }
  .rv-desk-deliverables td.rv-desk-state::before { content: ""; }
}
.rv-desk-deliverables th:nth-child(1) { width: 25%; }
.rv-desk-deliverables th:nth-child(2) { width: 13%; }
.rv-desk-deliverables th:nth-child(3) { width: 20%; }
.rv-desk-deliverables th:nth-child(4) { width: 9%; }
.rv-desk-deliverables th:nth-child(5) { width: 10%; }
.rv-desk-deliverables th:nth-child(6) { width: 23%; }

/* ── Versions: where the work is and whose move it is (plan 2026-09-30-020 U5-U7) ──
 * Brand tokens only: the client's move in --rv-you (its soft and ink
 * companions), ours in the primary, finished rounds in the status colour,
 * the track in the brand line. Text on a fill uses its on-colour token. */
.rv-rounds { display: grid; gap: 16px; margin: 18px 0 20px; padding: 18px 20px; background: var(--rv-surface); border: 1px solid var(--rv-line); border-radius: 12px; color: var(--rv-on-surface, var(--rv-text)); }
.rv-round-strip { display: flex; align-items: center; overflow-x: auto; padding: 2px 2px 6px; scrollbar-width: thin; }
.rv-round-pill { display: inline-flex; flex: none; align-items: center; gap: 8px; min-height: 36px; padding: 5px 12px 5px 6px; border: 1px solid var(--rv-line); border-radius: 999px; background: var(--rv-surface); color: var(--rv-text); font: inherit; font-size: .8125rem; white-space: nowrap; cursor: pointer; }
span.rv-round-pill { cursor: default; }
.rv-round-pill b { font-weight: 650; }
.rv-round-pill small { color: var(--rv-muted); font-size: .75rem; }
.rv-round-pill[aria-current="true"] { border-color: var(--rv-primary); background: var(--rv-soft); box-shadow: inset 0 0 0 1px var(--rv-primary); }
.rv-round-dot { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--rv-primary); color: var(--rv-on-primary); font-size: .6875rem; font-weight: 700; }
.rv-round-pill.cancelled .rv-round-dot { background: var(--rv-quiet-bg); color: var(--rv-muted); }
.rv-round-pill.cancelled b { text-decoration: line-through; text-decoration-thickness: 1px; }
.rv-round-joint { flex: none; width: 28px; height: 2px; background: var(--rv-primary); opacity: .5; }
.rv-round-joint.future { opacity: 1; background: repeating-linear-gradient(90deg, var(--rv-line) 0 5px, transparent 5px 9px); }
.rv-round-now { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 22px; align-items: center; }
.rv-round-ring { color: var(--rv-text); line-height: 0; }
.rv-round-text { display: grid; gap: 8px; justify-items: start; min-width: 0; }
.rv-portal .rv-rounds .rv-round-headline, .rv-round-headline { margin: 0; font-size: 1.375rem; font-weight: 650; line-height: 1.25; }
.rv-round-sentence { margin: 0; max-width: 60ch; color: var(--rv-muted); }
.rv-turn-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: .75rem; font-weight: 650; line-height: 1.3; white-space: nowrap; }
.rv-turn-chip::before { content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.rv-turn-chip.you { background: var(--rv-you-soft); color: var(--rv-you-text); }
.rv-turn-chip.us { background: var(--rv-soft); color: var(--rv-ink); }
.rv-turn-chip.done { border: 1px solid var(--rv-line); color: var(--rv-accepted); }
.rv-turn-chip.park { border: 1px dashed var(--rv-line); color: var(--rv-muted); }
.rv-turn-chip.park::before { display: none; }
.rv-round-move { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border: 1px solid var(--rv-you); border-radius: 10px; background: var(--rv-you-soft); }
.rv-round-move p { margin: 0; color: var(--rv-text); }
.rv-round-move .rv-eyebrow { color: var(--rv-you-text); margin-right: 6px; }
.rv-round-glyph { display: inline-flex; align-items: center; gap: 8px; color: var(--rv-text); }
.rv-round-turn { font-size: .78rem; color: var(--rv-muted); }
.rv-round-turn.you { color: var(--rv-you-text); font-weight: 650; }
.rv-service-list .rv-round-glyph, .rv-stage .rv-round-glyph { margin-bottom: 4px; }
.rv-loading { display: grid; gap: 16px; }
.rv-skeleton i, .rv-skeleton-ring { display: block; background: var(--rv-quiet-bg); border-radius: 999px; }
.rv-skeleton-strip { display: flex; gap: 10px; }
.rv-skeleton-strip i { width: 120px; height: 30px; }
.rv-skeleton-now { display: flex; gap: 22px; align-items: center; }
.rv-skeleton-ring { width: 96px; height: 96px; border-radius: 50%; flex: none; }
.rv-skeleton-lines { display: grid; gap: 10px; flex: 1; }
.rv-skeleton-lines i { height: 14px; width: 60%; }
.rv-skeleton-lines i:first-child { width: 90px; }
@media (prefers-reduced-motion: no-preference) { .rv-skeleton i, .rv-skeleton-ring { animation: rv-skeleton-pulse 1.4s ease-in-out infinite alternate; } }
@keyframes rv-skeleton-pulse { to { opacity: .45; } }

/* What changed: You asked | In Version N */
.rv-changes { display: grid; gap: 8px; margin: 12px 0; }
.rv-portal .rv-changes-title, .rv-changes-title { margin: 0; font-size: .9375rem; font-weight: 650; }
.rv-changes-head, .rv-changes-list li { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.rv-changes-head { border: 1px solid var(--rv-line); border-bottom: 0; border-radius: 10px 10px 0 0; background: var(--rv-quiet-bg); color: var(--rv-muted); font-size: .72rem; font-weight: 650; letter-spacing: .02em; }
.rv-changes-head span { padding: 8px 14px; }
.rv-changes-head span + span { border-left: 1px solid var(--rv-line); }
.rv-changes-list { margin: 0; padding: 0; list-style: none; border: 1px solid var(--rv-line); border-radius: 0 0 10px 10px; overflow: hidden; }
.rv-changes-list li + li { border-top: 1px solid var(--rv-line); }
.rv-changes-ask, .rv-changes-res { min-width: 0; padding: 10px 14px; overflow-wrap: anywhere; }
.rv-changes-res { display: grid; gap: 6px; justify-items: start; border-left: 1px solid var(--rv-line); }
.rv-changes-note { color: var(--rv-muted); font-size: .85rem; }

/* The delivery hinge */
.rv-hinge-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.rv-approve, .rv-return { display: grid; gap: 8px; padding: 14px; border: 1px solid var(--rv-line); border-radius: 10px; background: var(--rv-quiet-bg); }
.rv-approve p { margin: 0; }
.rv-return textarea { width: 100%; padding: 10px; border: 1px solid var(--rv-line); border-radius: 8px; background: var(--rv-surface); color: var(--rv-text); font: inherit; }
.rv-return-allowance { margin: 0; font-weight: 650; }
.rv-warning { margin: 0; padding: 8px 12px; border-radius: 8px; background: var(--rv-you-soft); color: var(--rv-you-text); font-size: .875rem; }
.rv-compare { display: grid; gap: 12px; padding: 14px; border: 1px solid var(--rv-line); border-radius: 10px; }
.rv-compare-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; }
.rv-compare-side { display: grid; gap: 8px; align-content: start; min-width: 0; }
.rv-compare-side h4 { margin: 0; font-size: .9375rem; }

/* Versions tab and question cards */
.rv-versions .rv-version-title { margin: 14px 0 6px; }
.rv-version-deliverables { margin: 0 0 8px; padding-left: 18px; }
.rv-questions { display: grid; gap: 10px; margin: 8px 0 0; padding: 0; list-style: none; }
.rv-question { display: grid; gap: 8px; padding: 12px 14px; border: 1px solid var(--rv-line); border-radius: 10px; background: var(--rv-surface); }
.rv-question.earlier { opacity: .78; }
.rv-question-top { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 10px; }
.rv-question-text { margin: 0; font-weight: 650; }
.rv-question-from { margin: 0; color: var(--rv-muted); font-size: .8rem; }
.rv-question-thread { display: grid; gap: 6px; margin: 0; padding: 0 0 0 12px; list-style: none; border-left: 2px solid var(--rv-line); }
.rv-question-msg { font-size: .875rem; overflow-wrap: anywhere; }
.rv-question-msg time { margin-left: 6px; color: var(--rv-muted); font-size: .75rem; }
.rv-question-files { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 2px; }
.rv-question-compose { display: grid; gap: 8px; }
.rv-question-compose textarea { width: 100%; padding: 10px; border: 1px solid var(--rv-line); border-radius: 8px; background: var(--rv-surface); color: var(--rv-text); font: inherit; }
.rv-question-notice { margin: 0; color: var(--rv-ink); font-size: .875rem; }
.rv-questions-empty { margin: 6px 0 0; }

@media (max-width: 620px) {
  .rv-rounds { padding: 14px 16px; }
  .rv-round-now { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .rv-round-ring svg { width: 88px; height: 88px; }
  .rv-round-move { flex-direction: column; align-items: stretch; }
  .rv-changes-head { display: none; }
  .rv-changes-list { border-radius: 10px; }
  .rv-changes-list li { grid-template-columns: minmax(0, 1fr); }
  .rv-changes-res { border-left: 0; padding-top: 0; }
  .rv-compare-grid { grid-template-columns: minmax(0, 1fr); }
  .rv-hinge-actions { justify-content: stretch; }
  .rv-hinge-actions > * { flex: 1 1 100%; }
}

/* Desk service index: bounded rows; the existing Request view opens on demand.
   It renders only in the Desk shell, whose theme (my-finney-refined.css :root and
   [data-theme=dark]) defines --line, --subtle, --muted, --accent, --amber and
   --surface: no literal colour here, so dark mode and the shell stay in charge. */
.rv-desk .rv-service-list{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.rv-service-list-head,.rv-service-list-item>summary{display:grid;grid-template-columns:minmax(180px,1fr) 88px 88px 88px 20px;gap:12px;align-items:center;padding:12px 16px}
.rv-service-list-head{background:var(--subtle);color:var(--muted);font-size:11px}
.rv-service-list-head>span:not(:first-child),.rv-service-count{text-align:center}
.rv-service-list-item+.rv-service-list-item{border-top:1px solid var(--line)}
.rv-service-list-item>summary{list-style:none;cursor:pointer;min-height:66px}
.rv-service-list-item>summary::-webkit-details-marker{display:none}
.rv-service-list-item>summary:hover,.rv-service-list-item[open]>summary{background:var(--subtle)}
.rv-service-list-item>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.rv-service-list-name{min-width:0}.rv-service-list-name strong,.rv-service-list-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rv-service-list-name strong{font-size:13px}.rv-service-list-name small{font-size:11px;color:var(--muted);margin-top:4px}
.rv-service-count{font-size:12px;font-variant-numeric:tabular-nums;color:var(--muted)}
.rv-service-count.attention{font-weight:700;color:var(--amber)}.rv-service-count-label{display:none}
.rv-service-chevron{font-size:23px;color:var(--muted);text-align:center}.rv-service-list-item[open] .rv-service-chevron{transform:rotate(90deg)}
.rv-service-list-item>.rv-desk-provider{margin:0 12px 12px;box-shadow:none}
.rv-service-pager{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:14px 0;font-size:11px;color:var(--muted)}
.rv-service-pager>span:first-child{margin-right:auto}.rv-service-pager button{padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:inherit;cursor:pointer}.rv-service-pager button:disabled{opacity:.4;cursor:default}
@media(max-width:640px){.rv-service-list-head{display:none}.rv-service-list-item>summary{grid-template-columns:1fr 1fr 1fr 16px;gap:8px;padding:12px}.rv-service-list-name{grid-column:1/4}.rv-service-chevron{grid-column:4;grid-row:1/3}.rv-service-count{text-align:left;font-size:11px}.rv-service-count-label{display:inline;font-size:9px}.rv-service-pager{gap:7px}.rv-service-list-item>.rv-desk-provider{margin:0 6px 6px}}

/* Customer request list: stable columns, grouped filters and one clear way in. */
.rv-portal.rv-service-list { max-width: 1440px; margin-inline: auto; }
.rv-portal.rv-service-list .rv-list-head { align-items: flex-start; }
.rv-portal.rv-service-list .rv-list-selects { display:flex; flex-wrap:wrap; align-items:center; gap:12px 20px; }
.rv-portal.rv-service-list .rv-table td { vertical-align:top; overflow-wrap:anywhere; }
.rv-portal.rv-service-list .rv-details { min-width:0; }
.rv-portal.rv-service-list .rv-request-status { display:grid; justify-items:start; gap:6px; }
.rv-portal.rv-service-list .rv-request-status .rv-round-glyph, .rv-portal.rv-service-list .rv-request-status .rv-status-detail { margin:0; }
.rv-portal.rv-service-list .rv-request-open { display:inline-flex; align-items:center; gap:8px; white-space:nowrap; padding:8px 10px; }
.rv-portal.rv-service-list .rv-details .rv-repeat-btn { margin-top:10px; }
@media (min-width:641px) and (max-width:1000px) {
  .rv-portal.rv-service-list .rv-table th:nth-child(1) { width:34%; }
  .rv-portal.rv-service-list .rv-table th:nth-child(2) { width:23%; }
  .rv-portal.rv-service-list .rv-table th:nth-child(3) { width:23%; }
  .rv-portal.rv-service-list .rv-table th:nth-child(4) { width:20%; }
  .rv-portal.rv-service-list .rv-table td, .rv-portal.rv-service-list .rv-table th { padding:14px 10px; }
}
@media (max-width:640px) {
  .rv-portal.rv-service-list .rv-list-selects { width:100%; gap:10px; }
  .rv-portal.rv-service-list .rv-list-selects label { flex:1 1 140px; flex-direction:column; align-items:stretch; gap:4px; }
  .rv-portal.rv-service-list .rv-list-selects select { width:100%; max-width:none; }
  .rv-portal.rv-service-list .rv-list-actions { gap:8px; }
  .rv-portal.rv-service-list .rv-details { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
  .rv-portal.rv-service-list .rv-details .rv-repeat-btn { margin:0; }
}
/* Plan 2026-10-24-003 U8: the Document Vault link on the client's request page. */
.rv-document-vault { border: 1px solid var(--rv-line); border-radius: 10px; padding: 14px 16px; margin: 0 0 16px; background: var(--rv-surface); }
.rv-document-vault h3 { margin: 0 0 8px; }
.rv-document-vault p { margin: 0; }
