/* v91 — Reports (2 Oct 2026 · fix round 3 Oct 2026, FIX.md RF1–RF24). A document, not a dashboard: one reading column (760px) on the document card,
   the SUMMARY first (header · headline · scoreboard · Needs your OK · key numbers · agency note), the DETAIL in folds after it.
   Four type sizes on screen — title 26 · headline and key figures 20 · body, tables and block headings 13 · captions 12 (the scoreboard's figures
   take the title's size; nothing at 11 or 9). One left edge for headings, text, rows and tables; top margins only from 4/8/12/16/24/32; prose
   at about 70 characters a line. Pills: one style per state, each with its own icon, distinct in black and white. Light and dark on screen;
   print is always light (the page frames and the @media print block at the end). Everything here is namespaced .rp-. */

/* ---------- the page around the document ---------- */
/* Oct 7 review (D04): the page's own top and head — the title at the same height as every other page, "New report" in the title row (the
   16px top and the head's align-items:flex-end put the title 6px higher and the button down by the summary) */
.rp-page .preview-line{margin-bottom:12px}
.rp-hd .pl-s{max-width:760px}
.rp-cap{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-weight:var(--w-regular)}
.rp-cap.blk,.rp-cap .blk{display:block}
.rp-mut{color:var(--fg-3);font-size:var(--t-co);line-height:var(--lh-co)}
@media (hover:hover){a.rp-mut:hover{color:var(--link)}}
.rp-to{min-width:0;overflow-wrap:anywhere}   /* v105 (no-cut): the recipients wrap — an address is never cut with "…" */
.rp-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}
.rp-none{color:var(--fg-3);font-size:var(--t-body);line-height:20px;padding:12px 0 4px}
.rp-none a{color:var(--link)}
.rp-sh{display:flex;align-items:baseline;gap:8px;padding:0 0 8px;border-bottom:1px solid var(--ln-2);min-width:0;flex-wrap:wrap}
.rp-sh h2{font-size:var(--t-hl);line-height:var(--lh-hl);font-weight:var(--w-semibold);color:var(--fg)}
.rp-sh h3{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);color:var(--fg)}
.rp-sh .n{font-size:var(--t-co);color:var(--fg-3);font-variant-numeric:tabular-nums}
.rp-sh.is-sub{margin-top:24px;border-bottom:0;padding-bottom:4px}
/* loop 2 (RP2-10): the cards are the kit's (.sec.panel.pt-card — its padding, rule and header); only the gap between them is set here */
:is(.rp-needs,.rp-list,.rp-up,.rp-lib,.rp-hist,.rp-psec):not(.pt-card){margin-top:16px;background:var(--bg);border:1px solid var(--bd-tl);border-radius:var(--r-card);box-shadow:var(--sh-tiny);padding:16px 20px 12px;min-width:0}
.pt-card:is(.rp-needs,.rp-list,.rp-up,.rp-lib,.rp-hist,.rp-psec){margin-top:16px;min-width:0}
.rp-needs{border-color:color-mix(in srgb,var(--c-orange) 30%,var(--bd-tl))}
.rp-needs-r{display:flex;align-items:center;gap:12px;padding:12px 0 4px}
.rp-needs-r>svg{color:var(--warn)}
.rp-needs-r .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.rp-needs-r b{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
.rp-needs-r span{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}

/* chips: a date worked out from today ("Oct 5 · 20 days"), a wait ("Waiting 2 days") — the countdown chip of ui/meters.js has the same shape */
.rp-chip{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px 0 7px;border-radius:var(--r-full);background:var(--bg-4);color:var(--fg-2);font-size:var(--t-co);line-height:16px;font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
.rp-chip>svg{flex:none;color:var(--fg-3)}
.rp-chip.is-soon,.rp-chip.is-wait{background:var(--st-orange-bg);color:var(--warn)}
.rp-chip.is-soon>svg,.rp-chip.is-wait>svg{color:var(--warn)}

/* the reports table on the home */
.rp-tbl{display:flex;flex-direction:column;min-width:0}
.rp-tbl .rp-tr{display:grid;grid-template-columns:minmax(0,1.7fr) 152px 76px minmax(0,1fr) 148px;gap:16px;align-items:center;min-height:52px;padding:8px;border-bottom:1px solid var(--ln-3);border-radius:var(--r-8);color:var(--fg)}
.rp-tbl .rp-tr:last-child{border-bottom:0}
@media (hover:hover){.rp-tbl a.rp-tr:hover{background:var(--hover)}}
.rp-tbl .rp-tr.is-h{min-height:32px;padding-top:4px;padding-bottom:4px;font-size:var(--t-co);color:var(--fg-3);font-weight:var(--w-medium);border-radius:0}
.rp-tr .r{text-align:right;justify-self:end}
.rp-c1{display:flex;align-items:center;gap:12px;min-width:0}
.rp-ic{width:28px;height:28px;border-radius:var(--r-8);background:var(--bg-3);display:grid;place-items:center;color:var(--fg-2);flex:none}
.rp-c1 .k2{display:flex;flex-direction:column;min-width:0}
.rp-c1 .k{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-medium);overflow-wrap:anywhere}
.rp-c1 .u{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);overflow-wrap:anywhere}

/* upcoming sends, sent history */
.rp-up-l,.rp-hist-l{display:flex;flex-direction:column}
.rp-up-l li,.rp-hist-l li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--ln-3);font-size:var(--t-body);line-height:20px;min-width:0}
.rp-up-l li:last-child,.rp-hist-l li:last-child{border-bottom:0}
.rp-up-l li .grow{min-width:0}
.rp-up-l a{color:var(--fg);font-weight:var(--w-medium)}
@media (hover:hover){.rp-up-l a:hover{color:var(--link)}}
.rp-date{flex:none;width:64px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-variant-numeric:tabular-nums;font-weight:var(--w-medium)}
.rp-hist-l li.is-on{background:var(--bg-4);border-radius:var(--r-8);padding-left:8px;padding-right:8px}
.rp-hist-l .grow{min-width:0}

/* the library */
.rp-types{display:grid;grid-template-columns:repeat(auto-fill,minmax(max(232px,calc((100% - 36px) / 4)),1fr));gap:12px;margin-top:12px}   /* D11: 4 → 3 → 2 → 1 by the card's minimum width */
.rp-type{display:grid;grid-template-columns:32px minmax(0,1fr);grid-template-rows:auto auto auto;align-content:start;column-gap:12px;row-gap:4px;padding:12px 16px;border:1px solid var(--ln-2);border-radius:var(--r-12);background:var(--bg);text-align:left;color:var(--fg);transition:var(--tr-ui)}
@media (hover:hover){.rp-type:hover{background:var(--hover-solid);border-color:var(--bd-2)}}
.rp-type-ic{grid-row:1/4;width:32px;height:32px;border-radius:var(--r-8);background:var(--bg-3);display:grid;place-items:center;color:var(--fg-2)}
.rp-type-t{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold)}
.rp-type-a{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.rp-type-m{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.rp-types.is-sheet{grid-template-columns:repeat(2,minmax(0,1fr))}

/* empty and first-month states */
.rp-empty,.rp-first{margin-top:16px;background:var(--bg);border:1px solid var(--bd-tl);border-radius:var(--r-card);box-shadow:var(--sh-tiny);padding:24px 32px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:760px}
.rp-first{flex-direction:row;gap:16px}
.rp-empty h2,.rp-first h2{font-size:var(--t-t2);line-height:var(--lh-t2);font-weight:var(--w-semibold);letter-spacing:var(--ls-t2)}
.rp-empty p,.rp-first p{font-size:var(--t-body);line-height:20px;color:var(--fg-2);max-width:620px}
.rp-empty-ic{width:36px;height:36px;border-radius:var(--r-12);background:var(--bg-3);display:grid;place-items:center;color:var(--fg-2);flex:none}
.rp-first-l{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.rp-first-l li{display:flex;align-items:center;gap:8px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2)}
.rp-first-l svg{color:var(--fg-3)}

/* ---------- pills (RF21): one shape — 22px, a 12px icon, the word — one style per state; icon + outline keep them apart in greyscale ---------- */
.rp-pill{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px 0 6px;border-radius:var(--r-full);font-size:var(--t-co);line-height:16px;font-weight:var(--w-medium);white-space:nowrap;border:1px solid transparent;flex:none;max-width:none}
.rp-pill>svg{flex:none}
.rp-pill.is-worked{background:var(--st-green-bg);color:var(--pos-ink)}
.rp-pill.is-didnt{background:var(--st-red-bg);color:var(--neg-ink);border-color:color-mix(in srgb,var(--c-red) 45%,transparent)}
.rp-pill.is-cant{background:transparent;color:var(--fg-2);border-color:var(--bd-3)}
.rp-pill.is-meas{background:transparent;color:var(--teal-ink);border-color:color-mix(in srgb,var(--c-teal) 70%,transparent);border-style:dashed}
.rp-pill.is-wait{background:var(--st-orange-bg);color:var(--warn-ink)}
.rp-pill.is-appr{background:transparent;color:var(--info-ink);border-color:color-mix(in srgb,var(--c-blue) 50%,transparent)}
.rp-pill.is-prog{background:var(--st-indigo-bg);color:var(--ind-ink)}
.rp-pill.is-block{background:var(--st-red-bg);color:var(--neg-ink);border-color:color-mix(in srgb,var(--c-red) 45%,transparent);border-style:dashed}
.rp-pill.is-result{background:var(--st-gray-bg);color:var(--chip-fg)}
.rp-pill.is-draft{background:transparent;color:var(--fg-2);border-color:var(--bd-3);border-style:dashed}
.rp-pill.is-sent{background:transparent;color:var(--pos-ink);border-color:color-mix(in srgb,var(--c-green) 55%,transparent)}

/* ---------- one report: the bar, the reading column, the side panel ---------- */
.rp-head{width:100%;max-width:760px;margin:0 auto}
.rp-head.has-side{max-width:1104px}
.rp-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 8px;width:100%}
.rp-bar.is-2{margin-bottom:12px}
.rp-page.is-review .rp-bar,.rp-page.is-print .rp-bar{max-width:1104px;margin:0 auto 12px}
.rp-bar-l,.rp-bar-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.rp-bar-r{justify-content:flex-end}
.rp-back{display:inline-flex;align-items:center;gap:4px;font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg-2);padding:4px 8px 4px 4px;border-radius:var(--r-full)}
@media (hover:hover){.rp-back:hover{background:var(--hover);color:var(--fg)}}
.rp-static{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:var(--r-8);font-size:var(--t-body);color:var(--fg-3)}
.rp-line{display:flex;align-items:flex-start;gap:8px;width:100%;margin:0 0 12px;padding:8px 12px;border-radius:var(--r-12);background:var(--bg-3);font-size:var(--t-co);line-height:18px;color:var(--fg-2)}
.rp-line svg{margin-top:1px;color:var(--fg-3);flex:none}
.rp-line>span{flex:1 1 auto;min-width:0}
.rp-line b{color:var(--fg);font-weight:var(--w-semibold)}
.rp-line a{color:var(--link);font-weight:var(--w-medium);white-space:nowrap}
.rp-line.is-snap{background:color-mix(in srgb,var(--c-blue) 9%,var(--bg))}
.rp-line.is-warn{background:var(--st-orange-bg);color:var(--fg);align-items:center}
.rp-line.is-warn svg{color:var(--warn)}
.rp-line-a{display:flex;gap:8px;flex:none}
.rp-page.is-print>.rp-line,.rp-page.is-review>.rp-line{max-width:1104px;margin:0 auto 12px}
.rp-grid{display:grid;grid-template-columns:minmax(0,760px);justify-content:center;gap:24px;align-items:start}
.rp-grid.has-side{grid-template-columns:minmax(0,760px) 320px}
.rp-main{min-width:0;display:flex;flex-direction:column}

/* ---------- the document: four sizes, one left edge, one rhythm ---------- */
.rp-doc{--rp-gap:24px;background:var(--bg);border:1px solid var(--bd-tl);border-radius:var(--r-card);box-shadow:var(--sh-tiny);padding:40px 56px 48px;color:var(--fg);min-width:0;font-variant-numeric:tabular-nums;font-size:var(--t-body);line-height:20px}
.rp-doc.is-edit{outline:2px dashed color-mix(in srgb,var(--c-blue) 35%,transparent);outline-offset:4px}
.rp-doc h1,.rp-doc h2,.rp-doc h3,.rp-doc h4,.rp-doc p,.rp-doc ul,.rp-doc ol,.rp-doc dl,.rp-doc figure,.rp-doc blockquote{margin:0}
/* the header: brand, title, one meta line, the as-of fold */
.rp-dh{display:flex;flex-direction:column}
.rp-brand{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.rp-mark{width:24px;height:24px;border-radius:var(--r-6);display:grid;place-items:center;color:var(--on-fill);font-size:var(--t-co);font-weight:var(--w-bold);flex:none}
.rp-mark.is-big{width:44px;height:44px;border-radius:var(--r-12);font-size:var(--t-t1)}
.rp-brand-t{font-size:var(--t-body);line-height:20px;font-weight:var(--w-semibold)}
.rp-title{font-size:var(--t-lt);line-height:var(--lh-lt);letter-spacing:var(--ls-lt);font-weight:var(--w-semibold);color:var(--fg)}
.rp-meta{margin-top:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);max-width:90ch}
.rp-asof{margin-top:4px}
.rp-asof-l{display:flex;flex-wrap:wrap;gap:4px 16px;padding:4px 0 0 16px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.rp-asof-l li{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;min-width:0}   /* RP2-5: a long source note wraps, never runs past the edge */
.rp-asof-l li b{color:var(--fg-2);font-weight:var(--w-medium)}
.rp-asof-l li.is-gap,.rp-asof-l li.is-gap b{color:var(--warn)}
/* blocks: one rhythm (32 above, a hairline, 24 inside), the heading at body size, semibold — the headline outranks every heading */
.rp-blk{margin-top:var(--rp-gap);padding-top:16px;border-top:1px solid var(--ln-2);min-width:0}
.rp-bh{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.rp-bh h2{font-size:var(--t-body);line-height:20px;font-weight:var(--w-semibold);color:var(--fg)}
.rp-bs{font-size:var(--t-body);line-height:20px;color:var(--fg-3)}
/* the headline: the largest text after the title */
.rp-hl{border-top:0;margin-top:24px;padding-top:0}
.rp-hl-t{font-size:var(--t-t2);line-height:var(--lh-t2);letter-spacing:var(--ls-t2);font-weight:var(--w-regular);color:var(--fg);max-width:64ch}   /* P3: on the type tokens (22) */
.rp-hl .rp-cap{margin-top:4px}
.rp-p{font-size:var(--t-body);line-height:20px;color:var(--fg-2);max-width:70ch}
.rp-p+.rp-p{margin-top:8px}
.rp-sub{margin-top:24px;margin-bottom:4px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg-2)}
.rp-foot{margin-top:12px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);max-width:76ch}
.rp-foot>svg{display:inline-block;vertical-align:-2px;margin-right:4px}
.rp-h3{display:flex;align-items:center;gap:8px;margin:24px 0 8px;font-size:var(--t-body);line-height:20px;font-weight:var(--w-semibold);color:var(--fg)}
.rp-h3 svg{color:var(--fg-3)}
.rp-h4{margin:24px 0 8px;font-size:var(--t-body);line-height:20px;font-weight:var(--w-semibold);color:var(--fg)}
.rp-h4 .rp-cap{font-weight:var(--w-regular)}
/* a source on every line: a quiet "↗ Page" on the web, a reference number [n] in print and in the Forwardable */
.rp-src{display:inline-flex;align-items:center;gap:2px;margin-left:4px;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-regular);color:var(--fg-3);white-space:nowrap;vertical-align:baseline;border-radius:var(--r-4);position:relative}
/* loop 2 (RP2-17 · WCAG 2.2 SC 2.5.8): every source link takes at least a 24 × 24 hit area — the arrow stays 12px */
.rp-src::after{content:"";position:absolute;left:50%;top:50%;width:max(100%,24px);height:max(100%,24px);transform:translate(-50%,-50%)}
.rp-src svg{width:12px;height:12px;flex:none}
@media (hover:hover){.rp-src:hover{color:var(--link)}}
.rp-src.is-bare span{display:none}
.rp-ref{margin-left:4px;font-size:var(--t-co);line-height:inherit;color:var(--fg-3);font-weight:var(--w-regular);white-space:nowrap;font-variant-numeric:tabular-nums}
.rp-print-only{display:none}
/* folds: detail on demand — a quiet chevron line; open in print */
.rp-fold{margin-top:12px}
.rp-fold>summary{display:inline-flex;align-items:center;gap:4px;cursor:pointer;list-style:none;font-size:var(--t-body);line-height:20px;font-weight:var(--w-medium);color:var(--fg-2);border-radius:var(--r-4);padding:2px 4px 2px 0;min-height:24px}
.rp-fold>summary::-webkit-details-marker{display:none}
@media (hover:hover){.rp-fold>summary:hover{color:var(--fg)}}
.rp-fold>summary svg{flex:none;color:var(--fg-3);transition:transform var(--dur-1) var(--ease-out)}
.rp-fold[open]>summary svg{transform:rotate(90deg)}
.rp-fold-b{margin-top:8px;padding-left:16px;border-left:1px solid var(--ln-2)}
.rp-fold.is-inline{display:inline;margin:0 0 0 8px}
.rp-fold.is-inline>summary{display:inline-flex}
.rp-fold.is-inline[open] .rp-fold-b{display:block;margin:4px 0 0}
.rp-fold.is-open{margin-top:12px}
.rp-asof .rp-fold{margin-top:0}
.rp-asof .rp-fold-b{border-left:0;padding-left:0;margin-top:4px}
.rp-asof .rp-fold-b .rp-asof-l{padding-left:16px}

/* ---------- the scoreboard: four counters (the title's size), the next verdict's countdown, the changes by others apart ---------- */
.rp-score{margin-top:24px;padding:16px 0 4px;border-top:1px solid var(--ln-2)}   /* loop 2: the next block's rule closes it — never two hairlines */
.rp-score-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.rp-sc{display:flex;flex-direction:column;gap:4px;padding:0 16px;border-left:1px solid var(--ln-3);min-width:0}
.rp-sc:first-child{padding-left:0;border-left:0}
.rp-sc-n{display:flex;align-items:center;gap:8px}
.rp-sc-n b{font-size:var(--t-lt);line-height:var(--lh-lt);font-weight:var(--w-semibold);letter-spacing:-.02em;color:var(--fg);font-variant-numeric:tabular-nums}
.rp-sc-n svg{flex:none}
.rp-sc.is-worked .rp-sc-n svg{color:var(--pos)}
.rp-sc.is-didnt .rp-sc-n svg{color:var(--neg)}
.rp-sc.is-cant .rp-sc-n svg{color:var(--fg-3)}
.rp-sc.is-early .rp-sc-n svg{color:var(--m-meas)}
.rp-sc.is-zero .rp-sc-n b{color:var(--fg-3)}
.rp-sc-l{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);font-weight:var(--w-medium)}
.rp-score-f{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin-top:12px}
.rp-score-f .rp-cap{flex:1 1 280px;min-width:0}

/* ---------- Needs your OK: one line each — title · ≈ at stake · Approve ↗ ---------- */
.rp-ok-l{display:grid;grid-template-columns:minmax(0,1fr) max-content max-content;column-gap:0}
.rp-ok-l .rp-okr>*+*{padding-left:16px}
.rp-okr{display:contents}
.rp-okr>*{padding:8px 0;border-bottom:1px solid var(--ln-3);min-width:0;align-self:stretch;display:flex;align-items:center}
.rp-okr:last-child>*{border-bottom:0}
.rp-okr-t{font-weight:var(--w-medium);color:var(--fg);display:block;line-height:20px}
.rp-okr-t .rp-src,.rp-okr-t .rp-ref{display:none}
.rp-printdoc .rp-okr-t .rp-ref{display:inline}
.rp-okr-v{justify-content:flex-end;gap:4px;font-variant-numeric:tabular-nums;color:var(--fg);white-space:nowrap}   /* P5v2: "Opportunity≈ 230 …" — the label and its value keep a space */
@media (hover:hover){.rp-ok:hover{text-decoration:underline}}

/* ---------- rows (results, what we did, the plan): pill · title with one caption line · its source, on one grid ---------- */
/* the row rule runs unbroken under all three cells: no column gap, the space is each cell's own padding */
.rp-rows{display:grid;grid-template-columns:144px minmax(0,1fr) max-content;column-gap:0}
.rp-rows>li>.rp-rows-s{padding-left:16px}
/* loop 2 (RP2-5): a fact is never cut with "…" — captions wrap */
.rp-rows-t .rp-cap.is-one{display:block;white-space:normal;max-width:70ch}
.rp-rows-t .rp-cap.is-one .m-cd{height:18px;margin-right:4px;vertical-align:-1px}
.rp-printdoc .rp-rows-t .rp-cap.is-one{white-space:normal}
.rp-rows>li{display:contents}
.rp-rows>li>*{padding:8px 0;border-bottom:1px solid var(--ln-3);min-width:0}
.rp-rows>li:last-child>*{border-bottom:0}
.rp-rows-p{display:flex;align-items:flex-start;padding-top:9px!important}
.rp-rows-t{display:flex;flex-direction:column;gap:2px}
.rp-rows-t b{font-weight:var(--w-medium);color:var(--fg);line-height:20px}
.rp-rows-t .rp-cap{display:block;max-width:70ch}
.rp-rows-s{display:flex;align-items:flex-start;justify-content:flex-end;padding-top:9px!important;text-align:right}
.rp-rows-s .rp-src{margin-left:0}
.rp-rows-s .rp-src span{display:none}
.rp-eff{font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap}
.rp-rows.is-out .rp-date{width:auto;padding-top:10px!important}
.rp-trace{margin-top:12px;display:flex;align-items:flex-start;gap:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);padding:8px 12px;border-radius:var(--r-8);border:1px dashed var(--bd-2)}
.rp-trace svg{margin-top:2px;flex:none;color:var(--fg-3)}

/* ---------- what changed and why: three lines a move ---------- */
.rp-moves{display:flex;flex-direction:column;list-style:none;padding:0}
.rp-move{padding:12px 0;border-bottom:1px solid var(--ln-3)}
.rp-move:first-child{padding-top:0}
.rp-move:last-child{border-bottom:0}
.rp-move-h{color:var(--fg);font-weight:var(--w-medium);max-width:76ch}
.rp-move-v{margin-right:8px;font-weight:var(--w-semibold);font-variant-numeric:tabular-nums;color:var(--fg)}
.rp-move-v.pos{color:var(--pos)}.rp-move-v.neg{color:var(--neg)}
.rp-why{margin-top:4px;display:flex;align-items:baseline;gap:8px;font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.rp-why>span:nth-child(2){flex:0 1 auto;min-width:0}
.rp-why>.is-one{white-space:normal}
.rp-printdoc .rp-why>.is-one{white-space:normal}
.rp-printdoc .rp-move .rp-fold.is-open{display:block;margin:2px 0 0}
.rp-fold.is-open .rp-basis.is-cause{display:none}
.rp-cause{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:var(--r-full);font-size:var(--t-co);font-weight:var(--w-semibold);white-space:nowrap;border:1px solid transparent;flex:none}
.rp-cause.is-ev{background:var(--st-blue-bg);color:var(--info-ink)}
.rp-cause.is-tm{border-color:var(--bd-3);color:var(--fg-2)}
.rp-cause.is-un{border:1px dashed var(--bd-3);color:var(--fg-3)}
.rp-stake{margin-top:4px;color:var(--fg-2);max-width:76ch}
.rp-stake-k{font-size:var(--t-co);color:var(--fg-3);margin-right:8px}
.rp-stake b{color:var(--fg);font-weight:var(--w-semibold)}
.rp-basis{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);max-width:76ch}
.rp-stake .rp-fold.is-inline .rp-fold-b{border-left:0;padding-left:0}

/* ---------- key numbers: six one-line tiles on a hairline grid (no cards inside the card) ---------- */
.rp-kn{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:24px}
.rp-kn.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.rp-kn.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.rp-k{display:flex;flex-direction:column;gap:4px;padding:12px 0;border-top:1px solid var(--ln-3);min-width:0}
.rp-k-l{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-weight:var(--w-medium)}
.rp-k-l .rp-src{margin-left:4px}
.rp-k-r{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0}
.rp-k-v{font-size:20px;line-height:28px;font-weight:var(--w-semibold);letter-spacing:-.01em;color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap}
.rp-k-c{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);min-width:0}
.rp-k-c.pos{color:var(--pos)}.rp-k-c.neg{color:var(--neg)}
.rp-sec .rp-kn{margin-top:12px}

/* agency note: opinion, signed — set apart from the generated text */
.rp-note{margin-top:24px;padding:12px 16px;border-radius:var(--r-12);background:color-mix(in srgb,var(--c-orange) 7%,var(--bg));border-left:3px solid var(--c-orange)}
.rp-note-k{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3)}
.rp-note-k b{color:var(--fg);font-weight:var(--w-semibold)}
.rp-note-t{margin-top:8px;font-size:var(--t-body);line-height:20px;color:var(--fg);font-style:italic;max-width:70ch}

/* ---------- the sections: a heading, two lines, a small chart — at the column's edge, no card borders ---------- */
.rp-sec{margin-top:16px;min-width:0}
.rp-sec:first-of-type{margin-top:0}
.rp-sec-h{display:flex;align-items:center;gap:8px;font-size:var(--t-body);line-height:20px;font-weight:var(--w-semibold);color:var(--fg)}
.rp-sec-h svg{color:var(--fg-3);flex:none}
.rp-sec-h .rp-src{margin-left:0}
.rp-sec-b{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;margin-top:4px}
.rp-sec.has-viz .rp-sec-b{grid-template-columns:minmax(0,1fr) 232px}
.rp-sec-t{min-width:0}
.rp-sec-v{min-width:0}
.rp-sec.is-detail>*+*{margin-top:12px}
.rp-mini{display:flex;flex-direction:column;gap:4px}
.rp-spark{display:block;overflow:visible}
.rp-spark-a{fill:none;stroke:var(--c-blue);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.rp-spark-b{fill:none;stroke:var(--fg-4);stroke-width:1.2;stroke-dasharray:3 3}
.rp-spark-m{stroke:var(--fg-3);stroke-width:1;stroke-dasharray:2 2}
.rp-spark-n,.rp-spark-d{font-size:12px;fill:var(--fg-3);font-family:inherit;font-variant-numeric:tabular-nums}
.rp-spark-n{fill:var(--fg-2);font-weight:600}
.rp-wkbar{fill:color-mix(in srgb,var(--c-indigo) 55%,var(--bg))}
.rp-grid7 .rp-dots{display:grid;grid-template-columns:repeat(7,7px);gap:3px;padding:2px 0}
.rp-dots i{width:7px;height:7px;border-radius:50%;background:var(--bg-5,var(--ln-2));display:block}
.rp-grid7 figcaption{max-width:232px}
.rp-dots i.on{background:var(--c-blue)}
.rp-sec .rp-p.is-2{display:block}
.rp-printdoc .rp-sec .rp-p.is-2{display:block;-webkit-line-clamp:unset}
.rp-secfull+.rp-secfull{margin-top:12px}
.rp-secfull .rp-sub{margin-top:0}
.rp-goals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;margin-top:8px}
.rp-goals li{display:flex;align-items:center;gap:8px;min-width:0;font-size:var(--t-co);line-height:var(--lh-co)}
.rp-goals li>span{min-width:0}
.rp-goals b{color:var(--fg);font-weight:var(--w-medium)}
.rp-marks{margin-top:16px;padding-top:12px;border-top:1px solid var(--ln-3)}
.rp-marks .rp-cap{font-size:var(--t-body);line-height:20px;color:var(--fg-2);max-width:none}
.rp-stake .rp-cap{font-size:var(--t-body);line-height:20px}
.rp-marks b{color:var(--fg);font-weight:var(--w-semibold)}
.rp-mk{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--bd-3);font-size:var(--t-co);line-height:1;font-weight:var(--w-semibold);color:var(--fg-2);vertical-align:-3px;font-variant-numeric:tabular-nums}
.rp-chart{margin-top:16px;min-width:0}
.rp-chart figcaption{margin-bottom:4px}
.rp-chart .ch-ann,.rp-chart text{font-size:12px}
.rp-whynote{margin-top:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);max-width:76ch}
.rp-whynote b{color:var(--fg);font-weight:var(--w-semibold)}
.rp-tblk{margin-top:4px;min-width:0}
.rp-table{width:100%;border-collapse:collapse;table-layout:auto;font-size:var(--t-body);line-height:20px}
.rp-table th{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-weight:var(--w-medium);text-align:left;padding:0 12px 8px 0;border-bottom:1px solid var(--ln-2);vertical-align:bottom}
.rp-table td{padding:8px 12px 8px 0;border-bottom:1px solid var(--ln-3);color:var(--fg-2);vertical-align:top;overflow-wrap:break-word}   /* P5v2: "anywhere" lowered each cell's minimum width and the auto layout cut words ("Negat/ive", "Timing/only") */
.rp-table td:first-child{color:var(--fg);font-weight:var(--w-medium)}
.rp-table th:last-child,.rp-table td:last-child{padding-right:0}
.rp-table .r{text-align:right;white-space:nowrap}
.rp-table td.num{font-variant-numeric:tabular-nums}
.rp-table tbody tr:last-child td{border-bottom:0}
.rp-table td .rp-src{margin-left:4px}
.rp-table td .rp-src span{display:none}
.rp-tblk .rp-basis{margin-top:8px}
.rp-more{margin-top:8px}
.rp-more .rp-src{margin-left:0}
.rp-quotes{display:flex;flex-direction:column;gap:12px}
.rp-q{margin:0;padding:12px 16px;border-left:2px solid var(--bd-3)}
.rp-q-q{font-weight:var(--w-semibold);color:var(--fg)}
.rp-q-t{margin-top:4px;color:var(--fg-2);max-width:70ch}
.rp-q .rp-cap{margin-top:4px}
.rp-clips li{padding:8px 0;border-bottom:1px solid var(--ln-3)}
.rp-clips li:last-child{border-bottom:0}
.rp-clips b{font-weight:var(--w-semibold)}
.rp-clips p{margin-top:4px;color:var(--fg-2);max-width:70ch}
/* one-pager */
.rp-full{margin-top:24px}
.rp-full a{display:inline-flex;align-items:center;gap:4px;color:var(--link);font-weight:var(--w-medium)}
.rp-footnote{margin-top:24px;padding-top:12px;border-top:1px solid var(--ln-2);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);max-width:90ch}
.rp-footnote b{color:var(--fg-2);font-weight:var(--w-semibold)}
.rp-doc.is-one{padding-top:32px}
/* method and notes */
.rp-method .rp-fold{margin-top:0}
.rp-method>.rp-fold>summary{font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.rp-method>.rp-fold>summary b{color:var(--fg);font-weight:var(--w-semibold)}
.rp-method .rp-fold-b{border-left:0;padding-left:0;margin-top:12px}
.rp-dl{display:grid;grid-template-columns:148px minmax(0,1fr);gap:8px 16px;line-height:20px}
.rp-dl dt{font-size:var(--t-co);line-height:20px;color:var(--fg-3);font-weight:var(--w-medium)}
.rp-dl dd{color:var(--fg-2);min-width:0;max-width:70ch}
.rp-ul{display:flex;flex-direction:column;gap:4px;list-style:none;padding:0}
.rp-ul li{position:relative;padding-left:12px;color:var(--fg-2)}
.rp-ul li::before{content:"";position:absolute;left:0;top:9px;width:4px;height:4px;border-radius:50%;background:var(--fg-4)}
.rp-ul li>svg,.rp-ul li>img{vertical-align:-2px;margin-right:4px}
.rp-gapw{color:var(--warn);font-weight:var(--w-medium)}
.rp-ul b{color:var(--fg);font-weight:var(--w-medium)}
.rp-srcs{display:flex;flex-direction:column;gap:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);list-style:none;padding:0}
.rp-srcs li{display:block;padding-left:28px;text-indent:-28px;break-inside:avoid}
.rp-srcs-n{display:inline-block;min-width:24px;text-indent:0;color:var(--fg-3);font-variant-numeric:tabular-nums}
.rp-srcs .rp-cap{color:var(--fg-3)}
.rp-printdoc .rp-noprint{display:none!important}

/* ---------- the edit panel ---------- */
.rp-side{position:sticky;top:16px;background:var(--bg);border:1px solid var(--bd-tl);border-radius:var(--r-card);box-shadow:var(--sh-low);padding:12px 16px 16px;max-height:calc(100vh - 112px);overflow:auto;min-width:0}
.rp-side-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.rp-side-h h2{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold)}
.rp-ed{padding:12px 0;border-top:1px solid var(--ln-2);display:flex;flex-direction:column;gap:8px}
.rp-ed:first-of-type{border-top:0}
.rp-ed h3{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold)}
.rp-ta,.rp-in,.rp-sel{width:100%;font-size:var(--t-body);line-height:20px;color:var(--fg);background:var(--bg-2);border:1px solid var(--bd-2);border-radius:var(--r-8);padding:8px 12px;resize:vertical}
.rp-in,.rp-sel{height:32px;padding:0 12px}
.rp-in.is-inline{width:auto;flex:1 1 220px;min-width:160px}
/* a11y (R2): the 25% focus outline is gone — the shared focus ring (the a11y contract) applies to these fields */
.rp-warn{display:flex;flex-direction:column;gap:8px}
.rp-warn li{display:flex;gap:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--warn)}
.rp-warn svg{flex:none;margin-top:2px}
.rp-ok-line{display:flex;align-items:center;gap:8px;font-size:var(--t-co);color:var(--pos)}
.rp-secl,.rp-negl{display:flex;flex-direction:column}
.rp-secl li{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:var(--t-body);line-height:var(--lh-body);min-width:0}
.rp-negl li{display:flex;flex-direction:column;gap:4px;padding:8px 0;border-bottom:1px solid var(--ln-3);min-width:0}
.rp-negl li:last-child{border-bottom:0}
.rp-negl-h{display:flex;align-items:center;gap:8px}
.rp-negl-t{font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.rp-radios{display:flex;flex-wrap:wrap;gap:4px 16px}
.rp-radio{display:inline-flex;align-items:center;gap:8px;font-size:var(--t-body);line-height:20px;cursor:pointer}
.rp-radio input{accent-color:var(--brand);width:15px;height:15px}
.ib.sm{width:26px;height:26px}
.ib:disabled{opacity:.35;cursor:default}
.rp-chk{display:inline-flex;align-items:center;gap:8px;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);cursor:pointer;white-space:nowrap}
.rp-chk.is-row{display:flex;align-items:flex-start;margin-top:8px;white-space:normal}
.rp-chk.is-row input{margin-top:3px}
.rp-chk input{width:15px;height:15px;accent-color:var(--brand);flex:none}
.btn.is-danger{color:var(--neg)}
.btn.ghost.is-danger{background:transparent;color:var(--neg)}   /* night P1: "Remove this report" was red on red */

/* ---------- sheets ---------- */
.rp-sheet{position:fixed;inset:0;z-index:80;background:var(--scrim);display:grid;place-items:center;padding:16px;animation:dp-fade var(--dur-2) var(--ease-out)}
.rp-sh-box{width:min(600px,100%);max-height:min(760px,calc(100vh - 32px));display:flex;flex-direction:column;background:var(--elev);border-radius:var(--r-card);box-shadow:var(--sh-high);border:1px solid var(--bd-tl);min-width:0;animation:dp-rise var(--dur-3) var(--ease-out)}
.rp-sh-h{display:flex;align-items:baseline;gap:8px;padding:16px 16px 8px 20px}
.rp-sh-h h2{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold)}
.rp-sh-h .ib{align-self:center}
.rp-sh-b{padding:4px 20px 16px;overflow:auto;display:flex;flex-direction:column;gap:12px;min-height:0}
.rp-sh-f{display:flex;align-items:center;gap:8px;padding:12px 16px 12px 20px;border-top:1px solid var(--ln-2);flex-wrap:wrap}
.rp-tabs{display:flex;gap:4px;border-bottom:1px solid var(--ln-2);margin:0 -20px;padding:0 20px}
.rp-tabs button{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 12px;font-size:var(--t-body);font-weight:var(--w-medium);color:var(--fg-3);border-bottom:2px solid transparent;margin-bottom:-1px}
.rp-tabs button.is-on{color:var(--fg);border-bottom-color:var(--fg)}
.rp-tabb{display:flex;flex-direction:column;gap:12px;padding-top:8px}
.rp-opts{display:flex;flex-direction:column;gap:8px}
.rp-opt{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border:1px solid var(--ln-2);border-radius:var(--r-12);cursor:pointer;font-weight:var(--w-regular)}
.rp-opt.is-on{border-color:var(--ring);background:color-mix(in srgb,var(--c-blue) 6%,var(--bg))}
.rp-opt input{margin-top:3px;accent-color:var(--brand);flex:none}
.rp-opt b{font-size:var(--t-body);font-weight:var(--w-semibold);color:var(--fg)}
.rp-form{display:flex;flex-direction:column;gap:12px}
.rp-fl{display:flex;flex-direction:column;gap:8px;font-size:var(--t-co);color:var(--fg-3);font-weight:var(--w-medium)}
.rp-linkbox{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-8);background:var(--bg-3);font-size:var(--t-co);min-width:0}
.rp-linkbox code{font-family:"Geist Mono",ui-monospace,monospace;color:var(--fg);overflow-wrap:anywhere;min-width:0}
.rp-recips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}

/* ---------- review before send ---------- */
.rp-review{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start;margin-top:8px}
.rp-review-l,.rp-review-r{min-width:0}
.rp-review .rp-h3{margin-top:0}
.rp-mail{background:var(--bg);border:1px solid var(--bd-tl);border-radius:var(--r-card);box-shadow:var(--sh-tiny);overflow:hidden}
.rp-mail-h{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px 12px;padding:12px 16px;border-bottom:1px solid var(--ln-2);font-size:var(--t-body);line-height:var(--lh-body)}
.rp-mail-h dt{color:var(--fg-3);font-size:var(--t-co)}
.rp-mail-h dd{color:var(--fg);min-width:0;overflow-wrap:anywhere;margin:0}
.rp-mail-b{padding:16px;display:flex;flex-direction:column;gap:12px;font-size:var(--t-body);line-height:20px;color:var(--fg-2)}
.rp-mail-b p{margin:0}
.rp-mail-hl{color:var(--fg);padding:8px 12px;border-radius:var(--r-8);background:var(--bg-3)}
.rp-fake{pointer-events:none}

/* ---------- print preview: page frames measured at full size, then scaled with a transform; always light ---------- */
.rp-frames-wrap{position:relative;margin:8px auto 32px;overflow:visible}
.rp-review-r .rp-frames-wrap{margin:0}
.rp-frames{position:absolute;left:0;top:0;width:var(--pw);display:flex;flex-direction:column;gap:24px;transform-origin:0 0}
.rp-more-pages{position:absolute;left:0;right:0;text-align:center}
/* loop 2 (RP2-2 · RP2-12): ONE print document — the preview's frames, the measuring copy and the printed pages are the same DOM under .rp-printdoc,
   with one type set and the light tokens (state pills and tints included), so "always light" holds inside the dark app too */
.rp-pg{position:relative;width:var(--pw);height:var(--ph);flex:none;background:var(--fixed-white);color:var(--fixed-ink);box-shadow:0 1px 3px var(--fixed-shade-12),0 12px 32px var(--fixed-shade-12);padding:var(--pm) var(--pm) 0}
.rp-pg-in{height:calc(var(--ph) - 2 * var(--pm) - 26px);overflow:hidden}
.rp-pg-in.is-over{box-shadow:inset 0 -3px 0 var(--neg-ink)}
.rp-pf{position:absolute;left:var(--pm);right:var(--pm);bottom:calc(var(--pm) - 30px);display:flex;justify-content:space-between;gap:12px;font-size:9.5px;line-height:13px;color:var(--fixed-ink-3);border-top:1px solid var(--fixed-rule-2);padding-top:4px}
.rp-measure{position:absolute;left:-10000px;top:0;visibility:hidden;pointer-events:none}
/* print sizes — four: title 22 · headline and key figures 15 · body 11 · caption 9.5 (the footer shares the caption's size; a cover page adds its 34) */
.rp-printdoc{color-scheme:light;--bg:#fff;--bg-2:#fbfbfd;--bg-3:rgba(118,118,128,.1);--bg-4:rgba(116,116,128,.08);--bg-5:rgba(118,118,128,.16);--fg:#1d1d1f;--fg-2:rgba(29,29,31,.84);--fg-3:#6e6e73;--fg-4:#86868b;--ln-2:rgba(60,60,67,.18);--ln-3:rgba(60,60,67,.1);--bd-2:rgba(60,60,67,.24);--bd-3:rgba(60,60,67,.32);--bd-tl:rgba(0,0,0,.06);--pos:#007a2c;--neg:#c8102e;--warn:#9a3f00;--link:#0055b3;--c-orange:#ff8d28;--c-blue:#0088ff;--c-green:#34c759;--c-red:#ff383c;--c-teal:#00a5b0;--c-indigo:#6155f5;--m-meas:#008198;--m-track:rgba(118,118,128,.16);--bg-elev:#fff;--elev:#fff;--link-tint:#0a55b0;--ring:#0071e3;--rp-gap:12px;--pos-ink:#00782c;--neg-ink:#c8001f;--warn-ink:#a84a00;--info-ink:#0060c0;--ind-ink:#5146d8;--teal-ink:#005761;--chip-fg:#636368;--st-green-bg:#e7f8eb;--st-red-bg:#ffe7e8;--st-orange-bg:#fff1e5;--st-blue-bg:#e0f1ff;--st-indigo-bg:#ecebfe;--st-gray-bg:#efeff1;--st-yellow-bg:#fff8db;--st-teal-bg:#e0f8f9;--st-purple-bg:#f9e6fb;--st-gray-fg:#636368;--st-orange-fg:#a84a00;--st-red-fg:#c8001f;--st-green-fg:#00782c;--st-blue-fg:#0060c0;--st-yellow-fg:#6b4a00;--st-indigo-fg:#5146d8;--st-teal-fg:#005761;--st-purple-fg:#8a1d9e;font-variant-numeric:tabular-nums;color:var(--fixed-ink);font-size:11px;line-height:15px}
.rp-measure.rp-doc{background:var(--fixed-white);border:0;box-shadow:none;border-radius:0;padding:0}
.rp-printdoc :is(h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote){margin:0}
.rp-print-only.rp-doc{background:var(--fixed-white);border:0;box-shadow:none;border-radius:0;padding:0}
.rp-printdoc .rp-title{font-size:22px;line-height:28px}
.rp-printdoc .rp-hl-t{font-size:15px;line-height:20px;max-width:none}
.rp-printdoc .rp-sc-n b{font-size:22px;line-height:28px}
.rp-printdoc .rp-k-v{font-size:15px;line-height:20px}
.rp-printdoc :is(.rp-p,.rp-bh h2,.rp-sec-h,.rp-h4,.rp-table,.rp-rows-t b,.rp-move-h,.rp-stake,.rp-okr>*,.rp-ok,.rp-brand-t,.rp-note-t,.rp-q-q,.rp-q-t,.rp-dl,.rp-method .rp-bh h2){font-size:11px;line-height:15px}
.rp-printdoc :is(.rp-cap,.rp-bs,.rp-meta,.rp-asof-l,.rp-pill,.rp-cause,.rp-k-l,.rp-k-c,.rp-sc-l,.rp-why,.rp-basis,.rp-foot,.rp-sub,.rp-ref,.rp-srcs,.rp-trace,.rp-table th,.rp-dl dt,.rp-ul,.rp-note-k,.rp-footnote,.m-cd,.rp-chip,.rp-mk,.rp-marks-l li,.rp-goals li,.rp-whynote){font-size:9.5px;line-height:13px}
.rp-printdoc .rp-spark-n,.rp-printdoc .rp-spark-d{font-size:9.5px}
.rp-printdoc :is(.rp-mut,.rp-mark,.rp-okr-a,.rp-stake-k,.rp-date){font-size:9.5px;line-height:13px}
.rp-printdoc :is(.rp-eff,.rp-okr-v){font-size:11px;line-height:15px}
.rp-printdoc .rp-pill,.rp-printdoc .m-cd{height:17px}
.rp-printdoc .rp-cause{height:16px}
.rp-printdoc .rp-blk{margin-top:0;padding-top:0;border-top:0}
.rp-unit{padding-bottom:4px;display:flow-root}
.rp-unit.is-th{padding-bottom:0}
.rp-unit.is-head{padding-top:8px;border-top:1px solid var(--fixed-rule-3);padding-bottom:0}
.rp-unit.is-head .rp-bh{margin-bottom:4px}
.rp-pg-in>.rp-unit:first-child{border-top:0;padding-top:0}
.rp-unit.is-sechead{padding-top:4px;padding-bottom:0}
.rp-unit .rp-rows>li>*,.rp-unit .rp-ok-l .rp-okr>*{border-bottom:1px solid var(--fixed-rule-1);padding-top:2px;padding-bottom:2px}
.rp-unit:has(> .rp-rows){padding-bottom:3px}
.rp-unit .rp-rows-p,.rp-unit .rp-rows-s{padding-top:3px!important}
.rp-unit .rp-moves>.rp-move{border-bottom:1px solid var(--fixed-rule-1);padding:3px 0 5px}
.rp-printdoc .rp-rows{grid-template-columns:128px minmax(0,1fr) max-content;column-gap:0}
/* a row that was folded on screen prints as one line: its title, then its caption on the same line */
.rp-unit .rp-rows.is-compact .rp-rows-t{display:block}
.rp-unit .rp-rows.is-compact .rp-rows-t .rp-cap{display:inline!important;margin-left:6px}
.rp-unit .rp-rows.is-compact>li>*{padding-top:1px;padding-bottom:1px}
.rp-unit:has(.rp-rows.is-compact){padding-bottom:2px}
/* the Method in print: two columns on the last page */
.rp-dl-cols{column-count:2;column-gap:20px}
.rp-dl-it{break-inside:avoid;margin-bottom:6px}
.rp-dl-t{font-size:9.5px;line-height:13px;font-weight:600;color:var(--fixed-ink-3)}
.rp-dl-it .rp-ul li{font-size:9.5px;line-height:13px}
.rp-dl-it dd{margin:0;font-size:9.5px;line-height:13px;color:var(--fixed-ink-soft)}
.rp-printdoc .rp-rows.is-out .rp-date{padding-top:3px!important}
/* the sections in print: two to a row, each its own left edge at the column's edge */
.rp-sec-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px}
.rp-sec-pair .rp-sec.has-viz .rp-sec-b{grid-template-columns:minmax(0,1fr)!important;gap:4px!important}
.rp-sec-pair .rp-spark{width:180px!important;height:44px!important}
.rp-printdoc .rp-hl{margin-top:8px}
.rp-printdoc .rp-score{margin-top:8px;padding:6px 0}
.rp-printdoc .rp-brand{margin-bottom:8px}
.rp-printdoc .rp-meta{margin-top:4px}
.rp-printdoc .rp-score-f{margin-top:6px}
.rp-printdoc .rp-sc{gap:0}
.rp-printdoc .rp-trace{margin-top:6px;padding:4px 8px}
.rp-printdoc .rp-marks{margin-top:4px;padding-top:4px}
.rp-printdoc .rp-foot{margin-top:4px}
.rp-printdoc .rp-goals{margin-top:4px;gap:2px 12px}
.rp-printdoc .rp-grid7 .rp-dots{grid-template-columns:repeat(7,6px);gap:2px}
.rp-printdoc .rp-dots i{width:6px;height:6px}
.rp-printdoc .rp-sec-b{margin-top:2px}
.rp-printdoc .rp-dl-it{margin-bottom:4px}
.rp-printdoc .rp-note{margin:4px 0 8px}
.rp-printdoc .rp-src{display:none}
.rp-printdoc .rp-sec{margin-top:0}
.rp-printdoc .rp-fold.is-open{margin-top:4px}
.rp-printdoc .rp-sub{margin-top:8px}
.rp-printdoc .rp-kn{column-gap:16px}
.rp-printdoc .rp-k{padding:4px 0;gap:0}
.rp-printdoc .rp-dl.is-cols{grid-template-columns:120px minmax(0,1fr);gap:4px 12px}
.rp-printdoc .rp-srcs,.rp-print-only .rp-srcs{display:block;column-count:3;column-gap:16px}
.rp-printdoc .rp-srcs li{margin-bottom:1px;padding-left:0;text-indent:0}
.rp-printdoc .rp-srcs li .rp-cap{display:none}
.rp-sources.is-compact{margin-top:8px}
.rp-sources.is-compact b{color:var(--fg-2);font-weight:var(--w-semibold)}
.rp-printdoc .rp-spark{width:200px;height:52px}
.rp-printdoc .rp-sec.has-viz .rp-sec-b{grid-template-columns:minmax(0,1fr) 200px;gap:16px}
.rp-h4.is-cont{color:var(--fixed-ink-3)}
.rp-cover{height:100%;display:flex;flex-direction:column;justify-content:center;gap:12px}
.rp-cover .rp-title{font-size:34px;line-height:40px}

/* ---------- the client portal (RF14) ---------- */
.rp-portal-h{display:flex;align-items:center;gap:12px;max-width:1104px;margin:0 auto 4px;padding:8px 0}
.rp-portal-h .rp-mark{width:36px;height:36px;border-radius:var(--r-12);font-size:var(--t-t3)}
.rp-page.is-portal .rp-psec{max-width:1104px;margin-left:auto;margin-right:auto}
.rp-page.is-portal>.preview-line{max-width:1104px;margin:0 auto 12px}
.rp-page.is-portal .rp-back{margin:0 auto 8px;display:flex;width:max-content}
.rp-page.is-portal{max-width:1136px;margin:0 auto}
.rp-pcard .rp-fold{margin-top:0}
.rp-pcard{border:1px solid var(--ln-2);border-radius:var(--r-12);padding:12px 16px 16px;display:flex;flex-direction:column;gap:12px;min-width:0}
.rp-pcard.is-focus{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ring) 18%,transparent)}
.rp-pcard-h{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.rp-pcard-h h3{font-size:var(--t-body);line-height:20px;font-weight:var(--w-semibold)}
.rp-pdl{display:grid;grid-template-columns:120px minmax(0,1fr);gap:4px 12px;font-size:var(--t-co);line-height:var(--lh-co);margin:0}
.rp-pdl dt{color:var(--fg-3);font-weight:var(--w-medium)}
.rp-pdl dd{color:var(--fg-2);margin:0;min-width:0}
.rp-psec .rp-rows{margin-top:8px}

/* ---------- widths: 1280 and 900 with nothing cut ---------- */
/* P5v2 (plan H): every narrow-width rule of this file is "screen and" — a sheet is narrower than 760px once the printer adds its margins, and the
   phone layout reached the print frames (one-column key numbers, titles squeezed under their pill), so pages overflowed and were cut */
@media screen and (max-width:1300px){.rp-grid.has-side{grid-template-columns:minmax(0,1fr) 300px}}
@media screen and (max-width:1100px){
  .rp-grid.has-side{grid-template-columns:minmax(0,760px)}
  .rp-grid.has-side .rp-side{position:static;max-height:none;order:-1}
  .rp-doc:where(:not(.rp-printdoc)){padding:32px 40px 40px}
  .rp-tbl .rp-tr{grid-template-columns:minmax(0,1.6fr) 148px minmax(0,1fr) 136px}
  .rp-tbl .rp-tr>span:nth-child(3){display:none}
  .rp-review{grid-template-columns:minmax(0,1fr)}
}
/* P5v2: the narrow-width layout never reaches the paper frames (:where(:not(.rp-printdoc *)) adds no weight) — on a phone the print preview showed
   the phone layout inside its frames, titles squeezed under their pills */
@media screen and (max-width:960px){
  .rp-sec.has-viz .rp-sec-b:where(:not(.rp-printdoc *)){grid-template-columns:minmax(0,1fr)}
  .rp-kn:where(:not(.rp-printdoc *)),.rp-kn.is-4:where(:not(.rp-printdoc *)){grid-template-columns:repeat(2,minmax(0,1fr))}
  .rp-rows:where(:not(.rp-printdoc *)){grid-template-columns:140px minmax(0,1fr) max-content}
}
@media screen and (max-width:760px){
  .rp-doc:where(:not(.rp-printdoc)){padding:24px 16px 24px}
  .rp-score-g:where(:not(.rp-printdoc *)){grid-template-columns:repeat(2,minmax(0,1fr));row-gap:12px}
  .rp-sc:nth-child(3):where(:not(.rp-printdoc *)){padding-left:0;border-left:0}
  .rp-rows:where(:not(.rp-printdoc *)){grid-template-columns:minmax(0,1fr) max-content}
  .rp-rows > li > .rp-rows-p:where(:not(.rp-printdoc *)){grid-column:1/-1;border-bottom:0;padding-bottom:0}
  .rp-ok-l:where(:not(.rp-printdoc *)){grid-template-columns:minmax(0,1fr) max-content}
  .rp-okr-v:where(:not(.rp-printdoc *)){grid-column:1/2;justify-content:flex-start}
  .rp-kn:where(:not(.rp-printdoc *)),.rp-kn.is-3:where(:not(.rp-printdoc *)){grid-template-columns:minmax(0,1fr)}
  .rp-dl:where(:not(.rp-printdoc *)){grid-template-columns:minmax(0,1fr)}
  .rp-tbl .rp-tr{grid-template-columns:minmax(0,1fr) auto}
  .rp-tbl .rp-tr>span:nth-child(n+3){display:none}
  .rp-types.is-sheet{grid-template-columns:minmax(0,1fr)}
  .rp-goals:where(:not(.rp-printdoc *)){grid-template-columns:minmax(0,1fr)}
}

/* ---------- print: always light, the document only ----------
   loop 2 (RP2-2): what prints IS the print preview — the page frames themselves, one frame to one sheet (each frame is the paper's own size and holds
   its margins and its footer, so the @page margin is 0), the same packing, the same type set (.rp-printdoc). A cover frame prints as page 1. From the
   report view ⌘P opens this view and prints it; a print started from the browser's menu there prints the same document (.rp-print-only), in the same
   type set. */
@media print{
  :root,:root[data-theme="dark"]{color-scheme:light}   /* the print token set (the light values in either theme): v103-tokens.css */
  html,body,.app,.main,.scroll{height:auto!important;overflow:visible!important;background:var(--fixed-white)!important;display:block!important}
  .sb,.topbar,.sb-bd,.rp-noprint,.rp-side,.rp-sheet,.rp-hist,.toast,#overlays,.skip,.rp-measure,.rp-more-pages{display:none!important}
  .page.rp-page{padding:0!important;margin:0!important;max-width:none!important}
  .rp-grid,.rp-grid.has-side{display:block}
  /* the print view: the frames, unscaled, one to a sheet */
  .rp-page.is-print .rp-frames-wrap{display:block!important;position:static!important;width:auto!important;height:auto!important;margin:0!important}
  .rp-page.is-print .rp-frames{position:static!important;transform:none!important;gap:0!important;display:block!important}
  .rp-page.is-print .rp-pg{box-shadow:none!important;break-after:page;page-break-after:always;break-inside:avoid;overflow:hidden;height:calc(var(--ph) - 2px)}
  .rp-page.is-print .rp-pg:last-child{break-after:auto;page-break-after:auto}
  html,body,.main,.scroll{margin:0!important;padding:0!important}
  .rp-page.is-print>:not(.rp-frames-wrap){display:none!important}
  .rp-page.is-print .rp-pg-in.is-over{box-shadow:none!important}
  .rp-page.is-print .rp-print-only{display:none!important}
  /* the report view (a print started from the browser's menu): the same document in the same type set */
  .rp-page.is-view:has(> .rp-print-only) .rp-doc:not(.rp-print-only){display:none!important}   /* P5v2: never both hidden — no print copy, the screen copy prints */
  .rp-page.is-view .rp-print-only{display:block!important}
  .rp-print-only .rp-blk,.rp-print-only .rp-move,.rp-print-only .rp-k,.rp-print-only .rp-note,.rp-print-only .rp-chart,.rp-print-only .rp-rows>li,.rp-print-only tr,.rp-print-only .rp-sec{break-inside:avoid;page-break-inside:avoid}
  .rp-print-only .rp-bh,.rp-print-only .rp-h4,.rp-print-only .rp-sec-h{break-after:avoid;page-break-after:avoid}
  .rp-print-only thead{display:table-header-group}
  a{color:inherit!important;text-decoration:none!important}
  .rp-pill,.rp-cause,.rp-dots i,.rp-pg{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ---------- v103 agency (3 Oct 2026, _research/2026-10-agency/01-study.md): the portal obeys the approval rules; the send queue across clients ---------- */
.rp-page.is-portal>.rp-pv{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.rp-pv .rp-addr{font-family:var(--mono, "Geist Mono", ui-monospace, monospace);font-size:var(--t-co);background:var(--bg-3);border-radius:var(--r-4);padding:0 4px}
.rp-pcard-k{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rp-pgrp{margin:16px 0 0;font-size:var(--t-co);line-height:var(--lh-co);font-weight:var(--w-semibold);color:var(--fg-3);text-transform:none}
.rp-pgrp+.rp-pcards{margin-top:8px}
.rp-pcard.is-rule{background:var(--bg-2)}
.rp-pul{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:2px}
.rp-pul li{list-style:disc}
.rp-pact{flex-wrap:wrap;align-items:center}
.rp-pact .rp-in.is-inline{flex:1 1 100%;min-width:0;order:-1}   /* P5v2: the reason field takes its own row; the three buttons sit under it */
.rp-pview{flex-basis:100%;margin:0}
.rp-psoon{display:flex;align-items:flex-start;gap:10px;margin-top:12px;padding:10px 12px;border:1px dashed var(--ln-2);border-radius:var(--r-12);color:var(--fg-2);font-size:var(--t-co);line-height:var(--lh-co)}
.rp-psoon svg{flex:none;margin-top:2px;color:var(--fg-3)}
.rp-psoon b{font-weight:var(--w-semibold);color:var(--fg)}
.rp-pnote{display:flex;gap:8px;align-items:flex-start;margin:10px 0 0;padding:8px 12px;border-radius:var(--r-8);background:var(--bg-3);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.rp-pnote svg{flex:none;margin-top:2px}
.rp-pheld{display:flex;gap:12px;align-items:flex-start}
.rp-pheld h2{font-size:var(--t-body);line-height:var(--lh-body);font-weight:var(--w-semibold);margin:0 0 4px}
.rp-pheld>svg{flex:none;margin-top:2px;color:var(--fg-3)}
.rp-pheld-l{display:flex;gap:8px;align-items:center;margin:10px 0 0;padding:8px 12px;border-radius:var(--r-8);background:var(--bg-2);border:1px solid var(--ln-3);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.rp-pheld-l svg{flex:none;color:var(--fg-3)}
.rp-psum-t{margin:10px 0 0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg);max-width:72ch}
.rp-psc{display:flex;gap:24px;margin:12px 0 8px;padding:0;list-style:none;flex-wrap:wrap}
.rp-psc li{display:flex;align-items:baseline;gap:6px;font-size:var(--t-co);color:var(--fg-3)}
.rp-psc b{font-size:var(--t-t3);line-height:var(--lh-t3);font-weight:var(--w-semibold);color:var(--fg);font-variant-numeric:tabular-nums}
.rp-pwd{display:grid;grid-template-columns:180px minmax(0,1fr);gap:6px 16px;margin:12px 0 4px;font-size:var(--t-co);line-height:var(--lh-co)}
.rp-pwd dt{color:var(--fg-3);font-weight:var(--w-medium)}
.rp-pwd dd{margin:0;color:var(--fg);font-variant-numeric:tabular-nums}
/* the send queue: Client · Period · Status · Recipients · Send date · Review */
.rp-tbl.rp-tbl-q .rp-tr{grid-template-columns:minmax(0,1.5fr) minmax(0,.9fr) 168px minmax(0,1fr) 132px 84px;cursor:pointer}
.rp-tbl.rp-tbl-q .rp-tr.is-h{cursor:default}
@media (hover:hover){.rp-tbl.rp-tbl-q .rp-tr:not(.is-h):hover{background:var(--hover-solid)}}
.rp-qtile{width:28px;height:28px;border-radius:var(--r-8);display:grid;place-items:center;font-size:var(--t-co);font-weight:var(--w-semibold);flex:none}
.rp-qh{display:block;margin-top:2px}
.rp-qr .btn.sm{pointer-events:none}
@media screen and (max-width:1100px){.rp-tbl.rp-tbl-q .rp-tr{grid-template-columns:minmax(0,1.4fr) 150px minmax(0,1fr) 120px 76px}.rp-tbl.rp-tbl-q .rp-tr>span:nth-child(2){display:none}.rp-tbl.rp-tbl-q .rp-tr>span:nth-child(3){display:block}}
@media screen and (max-width:960px){.rp-tbl.rp-tbl-q .rp-tr{grid-template-columns:minmax(0,1fr) 140px 112px}.rp-tbl.rp-tbl-q .rp-tr>span:nth-child(2),.rp-tbl.rp-tbl-q .rp-tr>span:nth-child(4),.rp-tbl.rp-tbl-q .rp-tr>span:nth-child(6){display:none}.rp-pwd{grid-template-columns:140px minmax(0,1fr)}}
/* v103: every portal section takes the portal's one width (they were shrink-wrapped to their text) */
.rp-page.is-portal>.rp-psec,.rp-page.is-portal>section.rp-empty,.rp-page.is-portal>.rp-portal-h{width:100%;box-sizing:border-box}   /* round 1: the header too — "Signed in as" sits at the portal's right edge, not beside the name */
.rp-pact .btn.ghost.sm{margin-left:auto}

/* ---------- loop 2 (RP2-5, 3 Oct 2026): phones — nothing cut, nothing past the edge ---------- */
.rp-pcards{display:grid;gap:12px;margin-top:12px;grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr))}   /* P5v2: one card uses the section (auto-fit) */
@media (max-width:600px){
  /* a report's table on a phone: tighter cells, and a 7-column table scrolls inside its block — never the page (Harbour's topics) */
  .rp-tblk{overflow-x:auto}
  .rp-table th,.rp-table td{padding-right:8px}
  /* the send queue: each row a small card — the client's name and report, the status, the date, Review */
  .rp-tbl.rp-tbl-q .rp-tr.is-h{display:none}
  .rp-tbl.rp-tbl-q .rp-tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:12px 8px;min-height:0}
  .rp-tbl.rp-tbl-q .rp-tr>span{display:flex!important;align-items:center;gap:6px;min-width:0}
  .rp-tbl.rp-tbl-q .rp-tr>span:nth-child(1){flex:1 1 100%}
  .rp-tbl.rp-tbl-q .rp-tr>span:nth-child(3){flex-wrap:wrap}
  .rp-tbl.rp-tbl-q .rp-tr>span:nth-child(4){flex:1 1 100%;order:5}
  .rp-tbl.rp-tbl-q .rp-tr>span.r{justify-self:auto;text-align:left}
  .rp-tbl.rp-tbl-q .rp-tr>span:last-child{margin-left:auto}
}
@media screen and (max-width:560px){
  /* the portal: one column, the reason field full width, the buttons on one row under it */
  .rp-pdl{grid-template-columns:minmax(0,1fr);gap:2px 0}
  .rp-pdl dd{margin-bottom:6px}
  .rp-pact .rp-in.is-inline{flex:1 1 100%;min-width:0}
  .rp-pact .btn.ghost.sm{margin-left:0}
  .rp-pcard{padding:12px}
  .rp-pwd{grid-template-columns:minmax(0,1fr)}
  .rp-page.is-portal>.rp-pv{align-items:flex-start}
  .rp-pv .rp-addr{overflow-wrap:anywhere}
}
/* P3: the fold toggles share one edge — the start of their line, never wherever the text before them ends */
.rp-stake .rp-fold.is-inline{display:block;margin:4px 0 0}
/* §4 #1: the locked expectation, beside what happened */
.rp-pre-l .rp-pre{color:var(--fg-2)}
.rp-pre-h{color:var(--fg)}
.rp-outp b{color:var(--fg-2);font-weight:var(--w-semibold)}
/* §4 #4: the living snapshot — what happened since the copy was sent, beside it, never inside it */
.rp-since{margin:0 0 12px;padding:8px 12px;border-radius:var(--r-12);border:1px dashed var(--bd-2);background:var(--bg-2)}
.rp-since-h{display:flex;align-items:flex-start;gap:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.rp-since-h svg{flex:none;margin-top:2px;color:var(--fg-3)}
.rp-since-h b{color:var(--fg);font-weight:var(--w-semibold)}
.rp-since .rp-fold{margin-top:4px}
.rp-since-l{display:flex;flex-direction:column;gap:4px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.rp-since-l li{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rp-since-l .rp-date{width:auto;min-width:44px}
.rp-pact-l{flex:1 1 100%;order:-2;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-3);font-weight:var(--w-medium)}
/* §4 #8: the verdicts of the next 30 days, each a countdown (the live report only) */
.rp-vstrip{margin-top:8px;padding:8px 0 4px}
.rp-vstrip-l{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:6px;list-style:none;padding:0}
.rp-vstrip-l li{display:inline-flex;align-items:center;gap:8px;font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2);min-width:0}
.rp-vstrip-l li>span{max-width:36ch}
/* §4 #5: the track record, counted */
.rp-track{grid-template-columns:180px minmax(0,1fr)}
@media screen and (max-width:560px){.rp-track{grid-template-columns:minmax(0,1fr)}}
.rp-doc p.rp-cap>svg:first-child{display:inline-block;vertical-align:-2px;margin-right:2px}
/* §4 #7: who needs you first — counted reasons, never a grade */
.rp-tri-l{display:flex;flex-direction:column;list-style:none;padding:0;margin:4px 0 0}
.rp-tri-l li{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--ln-3);font-size:var(--t-body);line-height:20px}
.rp-tri-l li:last-child{border-bottom:0}
.rp-tri-l .grow{min-width:0}
.rp-tri-l b{font-weight:var(--w-semibold)}
/* §4 #9: present mode — one block a screen, the speaker's notes beside it */
.rp-page.is-present .rp-bar{max-width:1240px;margin:0 auto 12px}
.rp-pres{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;width:100%;max-width:1240px;margin:0 auto;align-items:start}
.rp-pres-slide{min-height:60vh;font-size:15px;line-height:22px}
.rp-pres-slide .rp-blk{border-top:0;margin-top:0;padding-top:0}
.rp-pres-slide .rp-bh h2{font-size:var(--t-t2);line-height:var(--lh-t2)}
.rp-pres-notes{position:sticky;top:16px;background:var(--bg-2);border:1px solid var(--bd-tl);border-radius:var(--r-card);padding:16px}
.rp-pres-notes .rp-sub:first-child{margin-top:0}
.rp-pres-n{font-size:var(--t-co);color:var(--fg-3);font-variant-numeric:tabular-nums;min-width:56px;text-align:center}
@media screen and (max-width:960px){.rp-pres{grid-template-columns:minmax(0,1fr)}.rp-pres-notes{position:static}}
.rp-brief{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
/* §4 #15: a caption a screen reader and the tagged PDF read; the visible title is the heading above the table */
.rp-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* RP2-16: the digest's rows — the short left label (a date, a state word) takes a narrow column */
.rp-rows.is-dg{grid-template-columns:96px minmax(0,1fr) 0}
.rp-printdoc .rp-rows.is-dg{grid-template-columns:72px minmax(0,1fr) 0}
@media screen and (max-width:600px){
  .rp-needs-r{flex-wrap:wrap}
  .rp-needs-r .grow{flex:1 1 calc(100% - 40px)}
  .rp-needs-r>.btn{margin-left:28px}
  .rp-hd .hm-tools{flex-wrap:wrap}
}
/* RP2-15 (loop 2): the short formats read in two tones, not mostly grey — a row's caption, a tile's label and the digest's lines in the secondary ink */
.rp-doc.is-one :is(.rp-rows-t .rp-cap,.rp-k-l,.rp-meta,.rp-foot,.rp-sc-l,.rp-score-f .rp-cap,.rp-footnote){color:var(--fg-2)}
.rp-doc.is-one .rp-sources .rp-fold-s{font-size:var(--t-co)}
.rp-doc.is-one :is(.rp-cap,.rp-bs,.rp-asof .rp-fold-s,.rp-basis){color:var(--fg-2)}
/* RP2-17 (loop 2 · WCAG 2.2 SC 2.5.8): every control in a report is at least 24px tall */
.rp-ok{display:inline-flex;align-items:center;gap:2px;font-size:var(--t-body);line-height:20px;font-weight:var(--w-medium);color:var(--link);white-space:nowrap;min-height:24px}
.rp-src{min-height:24px;min-width:24px;justify-content:center}   /* round 1 (WCAG 2.2 SC 2.5.8): an arrow alone is itself 24px wide, so two arrows side by side keep their spacing */
/* §4 #3: a comment on a line — a quiet 24px button; the thread under the line */
.rp-th-b{display:inline-flex;align-items:center;justify-content:center;gap:2px;min-width:24px;min-height:24px;margin-left:4px;padding:0 4px;border-radius:var(--r-6);color:var(--fg-4);vertical-align:middle;font-size:var(--t-co);font-weight:var(--w-medium)}
.rp-th-b[aria-expanded=true]{color:var(--fg-2);background:var(--hover)}@media (hover:hover){.rp-th-b:hover{color:var(--fg-2);background:var(--hover)}}
.rp-th-b>span{color:var(--link)}
.rp-th{margin:8px 0 4px;padding:8px 12px;border-left:2px solid var(--bd-3);background:var(--bg-2);border-radius:0 var(--r-8) var(--r-8) 0;display:flex;flex-direction:column;gap:6px;font-weight:var(--w-regular);font-size:var(--t-co);line-height:var(--lh-co);color:var(--fg-2)}
.rp-th-t.is-done{opacity:.75}
.rp-th-r{margin-left:12px!important}
.rp-th b{color:var(--fg);font-weight:var(--w-semibold)}
.rp-th-a{margin-top:4px}
.rp-th .rp-in.is-inline{flex:1 1 200px;min-width:0}
/* §4 #8: the usual-range band under a key number (ui/meters.js rangeStrip) */
.rp-k-band{display:block;margin-top:4px;max-width:180px}
.rp-k-band .m-range{display:block}

/* v107: report read receipts — one quiet line (eye = opened, eye-off = not yet) */
.rp-read{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:16px;color:var(--text-2)}
.rp-read.is-unread{color:var(--warn-ink)}
.rp-line .rp-read{margin-left:10px}
.rp-remind{margin-left:6px}
.rp-readnote{display:flex;align-items:center;gap:6px;margin:16px 0 0;color:var(--text-3)}

/* v107: the portal's sign-in page — the agency's mark and name, one field, a one-time link */
.rp-signin{align-items:center}
.rp-si{width:100%;max-width:400px;margin:56px auto 0;padding:32px 28px;border-radius:var(--r-card);background:var(--surface-1);box-shadow:var(--ring-1);display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}
.rp-si-mark{width:44px;height:44px;border-radius:var(--r-12);display:grid;place-items:center;font-size:20px;font-weight:var(--w-semibold)}
.rp-si-logo{max-height:44px;max-width:180px}
.rp-si h1{margin:4px 0 0;font-size:20px;line-height:26px}
.rp-si-p{margin:0;font-size:14px;line-height:20px;color:var(--text-2)}
.rp-si-f{display:flex;flex-direction:column;gap:6px;width:100%;text-align:left;font-size:13px;color:var(--text-2)}
.rp-si-in{height:36px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-8);background:var(--surface-1);color:var(--text-1);font:inherit}
.rp-si-b{width:100%;height:36px;justify-content:center}
.rp-si-foot,.rp-si-dp{margin:0;font-size:12px;line-height:16px;color:var(--text-3)}

/* ---------- P5v2 (Oct 8): what the two verifiers saw on screen ---------- */
/* a table keeps its words whole (overflow-wrap:anywhere lowered every cell's minimum width, and the automatic layout cut "Negat/ive", "Timing/only",
   "@mariaflore/s.bsky.social"); a table wider than its block scrolls inside it — never the page (the Board update at 320) */
.rp-printdoc .rp-table td{overflow-wrap:anywhere}
.rp-tblk,.rp-tscroll{overflow-x:auto;min-width:0}
.rp-printdoc .rp-tblk,.rp-printdoc .rp-tscroll{overflow:visible}
.rp-nw{white-space:nowrap}
/* the scoreboard's "Next verdict" chip sat on the labels above it */
.rp-score > .rp-score-f{margin-top:12px}
.rp-printdoc .rp-score > .rp-score-f{margin-top:6px}
/* key numbers: a label that wraps to two lines no longer pushes its value below its neighbours' — each row of tiles shares its label height */
@supports (grid-template-rows:subgrid){
  .rp-kn{grid-auto-rows:auto}
  .rp-kn > .rp-k{display:grid;grid-row:span 3;grid-template-rows:subgrid;row-gap:4px;align-content:start}
  .rp-printdoc .rp-kn > .rp-k{row-gap:0}
}
/* the weekly digest's rows: the date column's divider runs to the line beside it, and nothing runs past the block's right edge */
.rp-rows.is-dg .rp-date{width:auto}
.rp-rows.is-dg>li>.rp-rows-s{padding-left:0}
/* the portal's approval cards use the section — round 1: a lone card takes the section's whole width, as two cards side by side do (it stopped at 760px) */
.rp-pcards > .rp-pcard:only-child{grid-column:1/-1}
@media screen and (max-width:760px){
  /* the digest's rows on a phone: the label over the line, the line full width (96px squeezed it to a word a line) */
  .rp-rows.is-dg:where(:not(.rp-printdoc *)){grid-template-columns:minmax(0,1fr) max-content}
  /* "Needs your OK": the title takes the row; the estimate and Approve share the next, with one full-width divider and no indent */
  .rp-okr > .rp-okr-t:where(:not(.rp-printdoc *)){grid-column:1/-1;border-bottom:0;padding-bottom:0}
  .rp-ok-l .rp-okr > .rp-okr-v:where(:not(.rp-printdoc *)){padding-left:0}
  /* verdicts of the next 30 days: the countdown over its title, the title full width */
  .rp-vstrip-l{flex-direction:column;gap:10px}
  .rp-vstrip-l li{flex-direction:column;align-items:flex-start;gap:4px}
  .rp-vstrip-l li>span{max-width:none}
}
@media screen and (max-width:600px){
  /* the report's tools on a phone: one alignment — the main action first and full width, then Edit · Remind me · Share · ⋯; the view menus scroll in one row */
  .rp-page:is(.is-view,.is-print) .rp-bar:not(.is-2) .rp-bar-r{justify-content:flex-start;width:100%}
  .rp-page:is(.is-view,.is-print) .rp-bar:not(.is-2) .rp-bar-r > .btn.pri{order:-1;flex:1 1 100%;justify-content:center}
  .rp-page.is-view .rp-bar.is-2 .rp-bar-l{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;width:100%;padding-bottom:2px}
  .rp-page.is-view .rp-bar.is-2 .rp-bar-l > *{flex:none}
  /* Upcoming sends: the date chip and Review on top, the sentence full width under them */
  .rp-up-l li{flex-wrap:wrap;gap:8px 12px}
  .rp-up-l li > .grow{flex:1 1 100%;order:2}
  .rp-up-l li > .btn{margin-left:auto}
  /* the print preview fits the screen with equal margins (its frames are scaled to the column by the page) */
  .rp-page.is-print .rp-frames-wrap{max-width:100%;overflow:hidden;margin-left:auto;margin-right:auto}
}
@media screen and (max-width:560px){
  /* the portal's Preview banner: the words take the row, the "Preview as" menu and Back wrap under them */
  .rp-page.is-portal > .rp-pv > .grow{flex:1 1 calc(100% - 26px);min-width:0}
}
.rp-table td.rp-wrap{white-space:normal}
/* the portal's verdicts since the last report: a count line, then one verdict a row in the fold */
.rp-psince{display:flex;flex-direction:column;gap:4px}
.rp-since-l.is-rows{gap:0;margin:4px 0 0;padding:0;list-style:none}
.rp-since-l.is-rows li{flex-wrap:nowrap;align-items:flex-start;gap:10px;padding:6px 0;border-bottom:1px solid var(--ln-3)}
.rp-since-l.is-rows li:last-child{border-bottom:0}
.rp-since-l.is-rows .rp-pill{flex:none}
.rp-since-l.is-rows .grow{flex:1 1 auto;min-width:0;color:var(--fg)}
.rp-since-l.is-rows .rp-date{flex:none;text-align:right}

/* =====================================================================  Round 1 fixes (Oct 8) · Reports  ===================================================================== */
/* Last sent: its own columns — the read receipt is a column of its own (it was forced into the 84px action cell, over the send date) */
.rp-tbl.rp-tbl-q.is-sent .rp-tr{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr) 88px minmax(0,1fr) 96px minmax(240px,1.5fr)}
.rp-qread{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;min-width:0}
.rp-qread .rp-read{align-items:flex-start;min-width:0}
.rp-qread .rp-read svg{flex:none;margin-top:2px}
.rp-qread .rp-remind{margin-left:0}
.rp-reminded{font-size:var(--t-co);line-height:var(--lh-co)}
@media screen and (max-width:1100px){.rp-tbl.rp-tbl-q.is-sent .rp-tr{grid-template-columns:minmax(0,1.3fr) 88px minmax(0,1fr) 96px minmax(200px,1.4fr)}}
@media screen and (max-width:960px){.rp-tbl.rp-tbl-q.is-sent .rp-tr{grid-template-columns:minmax(0,1fr) 96px minmax(180px,1.2fr)}.rp-tbl.rp-tbl-q.is-sent .rp-tr>span:nth-child(3){display:none}.rp-tbl.rp-tbl-q.is-sent .rp-tr>span:nth-child(6){display:flex}}
/* "What happened since": one dated list — the date | what happened, on every row, the "now" rows too */
.rp-since-l.is-dated li{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:baseline;column-gap:10px;padding:2px 0}
.rp-since-l.is-dated .rp-date{min-width:0;white-space:nowrap}
.rp-since-c{min-width:0;text-wrap:pretty}
.rp-since-c .rp-pill{vertical-align:1px;margin-right:2px}
/* a line's buttons keep their size — the words beside them wrap (".rp-line>span" made the buttons' row shrink, and "Use the generated one" ran past the edge) */
.rp-line > .rp-line-a{flex:none}
/* the warnings of an edited headline, listed inside the line that holds Send */
.rp-line.is-warn.is-top{align-items:flex-start}
.rp-line.is-warn.is-top > svg{margin-top:3px}
.rp-warn.is-in{margin-top:6px;gap:4px}
.rp-warn.is-in li{color:var(--fg-2)}
@media screen and (max-width:600px){
  /* a warning line's buttons take their own row under the words (Remove it went past the edge) */
  .rp-line:is(.is-warn,.is-snap){flex-wrap:wrap}
  .rp-line:is(.is-warn,.is-snap) > span{flex:1 1 0}   /* the words stay beside their icon */
  .rp-line.is-warn .rp-line-a{flex:1 1 100%;flex-wrap:wrap;padding-left:21px}
  /* the snapshot banner: the words, then the read receipt and the live-report link each on a row of their own, under the words */
  .rp-line.is-snap .rp-read{flex:1 1 100%;margin-left:21px}
  .rp-line.is-snap > a{margin-left:21px}
  /* the portal's header: the client's name takes the row; "Signed in as" goes under it */
  .rp-portal-h{flex-wrap:wrap;row-gap:2px}
  .rp-portal-h > .rp-cap:last-child{flex:1 1 100%;margin-left:48px}
  /* the report's tools: Remind me is its bell alone (its name stays as the label), so More stays on the row, at its end */
  .rp-page.is-view .rp-bar:not(.is-2) .rp-bar-r > .rm-btn :is(.mb-l,.mb-cv){display:none}
  .rp-page.is-view .rp-bar:not(.is-2) .rp-bar-r > #rp-more{margin-left:auto}
  /* Last sent on a phone: the read receipt takes the card's last row */
  .rp-tbl.rp-tbl-q.is-sent .rp-tr>span:nth-child(6){flex:1 1 100%;order:6;margin-left:0}
}

/* =====================================================================  P6 (Oct 8) · GROWTH (the growth-reports-ask builder)  =====================================================================
   Growth's own rules live in linear.css (shared); these are the night's additions, scoped to new class names so nothing there is restated. */
/* G4 · the money pages' coverage: one line in view, the rest in one "Show details" fold — the toggle sits at the line's end; opened, the fold takes the row */
.grw .gr-cov{margin-top:6px}
.gr-cov-row{display:flex;flex-wrap:wrap;align-items:center;column-gap:12px;row-gap:2px}
.grw .gr-top .gr-cov-row > .gr-cov1{margin-top:0;flex:0 1 auto;min-width:0}
.gr-cov-row > details.pt-more{flex:none}
.gr-cov-row > details.pt-more[open]{flex-basis:100%;margin-top:2px}
.gr-cov-ok{display:inline-flex;align-items:center;gap:3px;color:var(--fg-2)}
.gr-cov-ok svg{flex:none;color:var(--pos)}
/* G5 · "Since you last looked" when nothing moved: one slim row — the words, then the alerts link, Ask and Mark as seen; a counting change to come keeps its row */
.sec.panel.gr-slim{padding-top:8px;padding-bottom:8px}
.gr-slim-r{display:flex;align-items:center;gap:10px;min-height:36px}
.gr-slim-ic{display:inline-flex;flex:none;color:var(--fg-3)}
.gr-slim-t{margin:0;flex:1 1 auto;min-width:0;font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-2);text-wrap:pretty}
.gr-slim-t b{color:var(--fg);font-weight:var(--w-semibold)}
.gr-slim-b{display:flex;align-items:center;gap:4px;flex:none}
.gr-slim-c{display:flex;align-items:center;gap:10px;min-height:36px;margin-top:6px;padding-top:6px;border-top:1px solid var(--ln-2)}
.gr-slim-s{color:var(--fg-3)}
.gr-slim .gr-since-al{margin-top:6px}
.gr-al-link{display:inline-flex;align-items:center;gap:4px;min-height:28px;padding:0 8px;border-radius:var(--r-ctl);font-size:var(--t-sh);line-height:var(--lh-sh);font-weight:var(--w-medium);color:var(--fg-2);white-space:nowrap}
.gr-al-link svg{flex:none;color:var(--fg-3)}
@media (hover:hover){.gr-al-link:hover{background:var(--hover);color:var(--fg)}}
@media (max-width:600px){
  .gr-slim-r,.gr-slim-c{flex-wrap:wrap;row-gap:4px}
  .gr-slim-t{flex:1 1 0}   /* the words share the line with their icon; the buttons take the next line */
  .gr-slim-b{flex-basis:100%;justify-content:flex-start;margin-left:20px}
}
/* G8 · Past due now: the accounts behind the money, biggest first — "Comes to you" marks an annual plan the recovery rule leaves to your team */
.gr-pd-h{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:14px 0 2px;font-size:var(--t-sh);line-height:var(--lh-sh);color:var(--fg-3)}
.gr-pd-h b{color:var(--fg);font-weight:var(--w-semibold)}
.gr-pd-you{margin-left:6px;vertical-align:1px}
.gr-pd-all{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;margin-top:6px}
/* G7 · the rule sheet: what Stripe already does, and where that was read */
.gr-rs-src{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
/* G9 · Goals: six aligned columns — the ring small beside the name, one second line only when there is one */
.gr-gtbl .tbl-r{min-height:56px}
.gr-gk-r{display:flex;align-items:center;gap:10px;min-width:0}
.gr-gk-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.gr-gs,.gr-nt,.gr-pc{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.gr-nt-v{color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap}
.gr-pc{border-radius:var(--r-6)}
.gr-pc .m-range{width:100%;max-width:150px}
/* G17 · Goal detail: the forecast is a band between its low and high end (neutral, as every estimate is) with a thin middle line */
.gr-fc .chart-svg .gr-fband{fill:var(--fg-2);fill-opacity:.2;stroke:none}
.gr-fc .chart-svg path.line.gr-fedge{stroke-opacity:.6}
/* G16 · Goal detail: the facts that left the chips, as one sentence */
.gr-notes{color:var(--fg-2)}
.gr-slim-t .sv-i{display:inline-grid;place-items:center;width:22px;height:22px;margin:-3px 0 -3px 2px;vertical-align:middle}
/* round 1 (Oct 8) · Growth — a standing rule's status chip stays on one line (it wrapped into a two-line capsule beside one-line chips) */
:is(.gr-rules,.gr-pd) .mn-g-st > .lbl.tint{white-space:nowrap}
/* the retention work's band: Expected · Minimum (useful) · Smallest change this window can tell — one named line each */
.gr-band .gr-thr{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:2px;max-width:80ch;font-size:var(--t-body);line-height:20px;color:var(--fg-2);text-wrap:pretty}
.gr-thr b{color:var(--fg);font-weight:var(--w-semibold)}
/* the rule sheet's seven fields (What you approve): two columns in the sheet's width — four left 150px a column */
.rs-sec .ap-facts.apv-sheet{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:600px){.rs-sec .ap-facts.apv-sheet{grid-template-columns:minmax(0,1fr)}}
