/*! Rivvun design system · tokens + rv-* class library · v1.0
   Single source of truth for colour. GenerateBlocks Global Styles reference these variables.
   Sections: 1 tokens · 2 base · 3 layout · 4 type · 5 buttons/links · 6 rails/cards · 7 rows/lists
             8 loop · 9 timeline · 10 FAQ · 11 data objects · 12 components · 13 header/footer
             14 forms (HubSpot) · 15 media slots · 16 motion · 17 light-mode fixes · 18 build additions
             20 blog and news · 21 2026-10-11 update (light sections, mega menu, cases, people, video)
             22 long-form pages (prose: whitepapers, policies, posts from source), resource cards, gated video */

/* 1 · Tokens ------------------------------------------------------------- */
:root{
  --rv-bg-0:#070A11; --rv-bg-1:#0D1725; --rv-bg-2:#161B24; --rv-bg-3:#0B111B; --rv-bg-footer:#05080D;
  --rv-line:#242B37; --rv-line-2:#39404A;
  --rv-ink:#F4F1EA; --rv-ink-2:#ACACA8; --rv-ink-3:#8A9099; --rv-ink-dim:#6E7378;
  /* One brand orange, as on rivvun.ai (QA R1-07); the darker shade is only the primary button hover. */
  --rv-accent:#C14100; --rv-accent-hover:#A33700; --rv-accent-ink:#C14100; --rv-accent-hi:#C14100;
  --rv-on-accent:#FFF8F3; --rv-accent-soft:rgba(193,65,0,.12); --rv-glow-blue:rgba(36,74,110,.35);
  --rv-core-gradient:linear-gradient(90deg,#9A3400,#C14100);
  --rv-grid-line:rgba(255,255,255,.02); --rv-stripe:rgba(243,241,235,.07);
  /* Edge cards (reference build): stat trio, outcome cards, ledger, value panel, agent card */
  --rv-card-fill:linear-gradient(180deg,#1F2228,#16191E); --rv-card-fill-2:linear-gradient(180deg,#22252B,#1A1D22);
  --rv-card-solid:#1C1F25; --rv-card-edge:#393B3E; --rv-card-rule:#2E3238;

  /* As on rivvun.ai: Inter for text and UI, Inter Tight for headings and figures, IBM Plex Mono for labels */
  --rv-font-display:"Inter Tight",Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
  --rv-font-body:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
  --rv-font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  --rv-text-h1-xl:clamp(1.75rem,3.4vw,3.0625rem);
  --rv-text-h1:clamp(1.75rem,3.4vw,3.125rem);
  --rv-text-h2:clamp(1.625rem,3vw,2.75rem);
  --rv-text-h3:1.25rem; --rv-text-h3-l:1.375rem; --rv-text-loop:1.875rem;
  --rv-text-lede:1.125rem; --rv-text-body:1.0625rem; --rv-text-body-2:1rem; --rv-text-small:.9375rem; --rv-text-fine:.8125rem; --rv-text-kicker:.75rem;
  --rv-text-stat-xl:clamp(3rem,6vw,4.5rem); --rv-text-stat:1.7rem;

  --rv-s1:4px; --rv-s2:8px; --rv-s3:12px; --rv-s4:16px; --rv-s5:24px; --rv-s6:32px; --rv-s7:48px; --rv-s8:64px; --rv-s9:96px; --rv-s10:128px;
  --rv-section:clamp(4rem,2.5rem + 4vw,7rem); --rv-section-tight:clamp(3.5rem,2.5rem + 3vw,5.5rem);
  --rv-container:1180px; --rv-gutter:24px;

  --rv-r-s:6px; --rv-r-m:12px; --rv-r-l:16px; --rv-r-xl:20px; --rv-r-pill:999px;
  --rv-shadow-1:0 1px 0 rgba(255,255,255,.04) inset,0 24px 48px -32px rgba(0,0,0,.8);
  --rv-ease:cubic-bezier(.2,.7,.2,1); --rv-dur-1:160ms; --rv-dur-2:320ms; --rv-dur-3:600ms;
  color-scheme:dark;
}
/* Light reading mode: /resources/*, posts, archives (body class set in functions.php) */
body.rv-light{
  --rv-bg-0:#F6F4EF; --rv-bg-1:#ECE9E2; --rv-bg-2:#FFFFFF; --rv-bg-3:#F1EEE8;
  --rv-line:#DDD9D0; --rv-line-2:#C7C2B7;
  --rv-ink:#0B1A2B; --rv-ink-2:#4D5563; --rv-ink-3:#7C8290; --rv-ink-dim:#7C8290;
  --rv-accent-hover:#A33700; --rv-accent-ink:#C14100; --rv-accent-hi:#C14100;
  --rv-accent-soft:rgba(193,65,0,.10); --rv-glow-blue:rgba(36,74,110,.12);
  --rv-grid-line:rgba(13,23,37,.03); --rv-stripe:rgba(13,23,37,.06);
  --rv-shadow-1:0 1px 2px rgba(13,23,37,.05),0 16px 40px -28px rgba(13,23,37,.25);
  --rv-card-fill:linear-gradient(180deg,#FFFFFF,#FAF8F4); --rv-card-fill-2:linear-gradient(180deg,#FFFFFF,#FAF8F4);
  --rv-card-solid:#FFFFFF; --rv-card-edge:#DDD9D0; --rv-card-rule:#E6E2DA;
  color-scheme:light;
}
/* Dark scopes that stay dark on light pages: header, footer, navy bands, the post hero */
.rv-header,.rv-footer,.rv-section--navy,.single-post .rv-hero--page,.rv-linkpanel,.rv-dark,.rv-callout--dark,.rv-steps--dark,.rv-figcard--highlight,.rv-panel{
  --rv-bg-0:#070A11; --rv-bg-1:#0D1725; --rv-bg-2:#161B24; --rv-bg-3:#0B111B;
  --rv-line:#242B37; --rv-line-2:#39404A;
  --rv-ink:#F4F1EA; --rv-ink-2:#ACACA8; --rv-ink-3:#8A9099; --rv-ink-dim:#6E7378;
  --rv-accent-hover:#A33700; --rv-accent-ink:#C14100; --rv-accent-hi:#C14100;
  --rv-grid-line:rgba(255,255,255,.02); --rv-stripe:rgba(243,241,235,.07);
  --rv-card-fill:linear-gradient(180deg,#1F2228,#16191E); --rv-card-fill-2:linear-gradient(180deg,#22252B,#1A1D22);
  --rv-card-solid:#1C1F25; --rv-card-edge:#393B3E; --rv-card-rule:#2E3238;
  color:var(--rv-ink);
}

/* 2 · Base ---------------------------------------------------------------- */
html{scroll-padding-top:96px;-webkit-text-size-adjust:100%}
body{background:var(--rv-bg-0);color:var(--rv-ink);font-family:var(--rv-font-body);font-size:var(--rv-text-body);line-height:1.6;-webkit-font-smoothing:antialiased;font-optical-sizing:auto;font-feature-settings:"cv11" 1}
h1,h2,h3,h4{margin:0;color:var(--rv-ink);text-wrap:pretty}
/* As on rivvun.ai: Inter Tight 600 headlines, tracked -0.035em. */
h1,h2,h3{font-family:var(--rv-font-display);font-weight:600;letter-spacing:-.035em}
/* Headline line spacing as on rivvun.ai: normal, 1.2 (QA R1-06). */
h1{font-size:var(--rv-text-h1);line-height:1.2;letter-spacing:-.035em}
h2{font-size:var(--rv-text-h2);line-height:1.2}
h3{font-size:var(--rv-text-h3);line-height:1.3;font-weight:600;letter-spacing:-.035em}
p{margin:0}
a{color:var(--rv-accent-ink);transition:color var(--rv-dur-1) var(--rv-ease)}
a:hover{color:var(--rv-accent-hi)}
:focus-visible{outline:3px solid var(--rv-accent);outline-offset:3px;border-radius:2px}
::selection{background:var(--rv-accent);color:var(--rv-on-accent)}
.skip-link,.rv-skip{position:absolute;left:-9999px}
.skip-link:focus,.rv-skip:focus{left:1rem;top:1rem;z-index:99;background:var(--rv-accent);color:var(--rv-on-accent);padding:.5rem 1rem}
img{max-width:100%;height:auto}

/* 3 · Layout -------------------------------------------------------------- */
.rv-container{max-width:var(--rv-container);margin-inline:auto;padding-inline:var(--rv-gutter)}
.rv-section{padding-block:var(--rv-section);background:var(--rv-bg-0);color:var(--rv-ink)}
.rv-section--navy{background:var(--rv-bg-1)}
.rv-section--tint{background:var(--rv-bg-1)}            /* alias used on light pages (reads as paper tint) */
.rv-section--tight{padding-block:var(--rv-section-tight)}
.rv-section--hairline{border-top:1px solid var(--rv-line)}
.rv-split{display:flex;flex-wrap:wrap;gap:48px 64px;align-items:flex-start}
.rv-split--center{align-items:center}
.rv-split--end{align-items:flex-end}
.rv-split>*{min-width:0}
.rv-split__a{flex:1.2 1 360px}
.rv-split__b{flex:1 1 300px}
/* Editor: a synced pattern (the value calculator) is wrapped in its block, which is then the split's column */
.rv-split>[data-type="core/block"]{flex:1 1 300px;min-width:0}
/* Image beside the text (rv/image, e.g. /technical-architecture/): position "start" puts it first on wide screens */
.rv-split--reverse{flex-direction:row-reverse}
.rv-diagram{margin:0;flex:1.1 1 380px}
/* Diagrams (not screenshots), as on rivvun.ai: about 59% of the row (642px of 1132 at 1440 wide), the text the rest */
.rv-split:has(>.rv-diagram:not(.rv-diagram--screenshot)){column-gap:48px}
.rv-split>.rv-diagram:not(.rv-diagram--screenshot){flex:1.45 1 0%;min-width:min(100%,300px)}
.rv-split:has(>.rv-diagram:not(.rv-diagram--screenshot))>.rv-split__a{flex:1 1 0%;min-width:min(100%,280px)}
.rv-diagram__img{display:block;width:100%;height:auto;border-radius:var(--rv-r-l)}
/* Product screenshot (solution pages, "What Finance Sees"): framed like a card on light sections. */
.rv-diagram--screenshot .rv-diagram__img{border:1px solid var(--rv-card-edge);box-shadow:var(--rv-shadow-1);background:#fff}
.rv-grid-2,.rv-grid-3,.rv-grid-4{display:grid;gap:36px 32px}
.rv-grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
/* Three columns at most (six items: 3 + 3, not 4 + 2); two or one on narrower screens. Exactly four
   items keep the free fit: four across, or two by two. */
.rv-grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,max(240px,calc((100% - 64px) / 3))),1fr))}
.rv-grid-3:not(.rv-grid--cards):has(>:nth-child(4 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))){grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.rv-grid-4{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.rv-grid--cards{gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.rv-mt-16{margin-top:var(--rv-s4)} .rv-mt-24{margin-top:var(--rv-s5)} .rv-mt-32{margin-top:var(--rv-s6)} .rv-mt-40{margin-top:40px} .rv-mt-48{margin-top:var(--rv-s7)} .rv-mt-56{margin-top:56px} .rv-mt-72{margin-top:72px}
.rv-measure{max-width:68ch}

/* 4 · Type ---------------------------------------------------------------- */
:is(.rv-kicker,.is-style-rv-kicker){font:600 var(--rv-text-kicker)/1.2 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-accent-hi);margin:0 0 var(--rv-s3)}
.rv-h1{font:600 var(--rv-text-h1)/1.2 var(--rv-font-display);letter-spacing:-.035em;max-width:20ch}
.rv-h1--xl{font-size:var(--rv-text-h1-xl);line-height:1.2;letter-spacing:-.035em;max-width:18ch}
.rv-h2{font:600 var(--rv-text-h2)/1.2 var(--rv-font-display);letter-spacing:-.035em;max-width:22ch}
.rv-h3{font:600 var(--rv-text-h3)/1.3 var(--rv-font-display);letter-spacing:-.035em}
.rv-h3--l{font-size:var(--rv-text-h3-l);line-height:1.25}
.rv-lede{font:400 var(--rv-text-lede)/1.7 var(--rv-font-body);color:var(--rv-ink-2);max-width:58ch;margin-top:var(--rv-s4)}
.rv-body-2{font-size:var(--rv-text-body-2);line-height:1.65;color:var(--rv-ink-2)}
.rv-small{font-size:var(--rv-text-small);line-height:1.5}
:is(.rv-fine,.is-style-rv-fine){font-size:var(--rv-text-fine);line-height:1.5;color:var(--rv-ink-3)}
.rv-muted{color:var(--rv-ink-2)}
.rv-mono{font:500 var(--rv-text-kicker)/1 var(--rv-font-mono)}
/* Muted words in a heading ("Spend Synchronized."), as on rivvun.ai: the heading color at 40%. */
.rv-dim{color:color-mix(in srgb,var(--rv-ink) 40%,transparent)}
.rv-hl{color:var(--rv-accent)}
.rv-stat{font:600 var(--rv-text-stat)/1 var(--rv-font-display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.rv-stat--xl{font-size:var(--rv-text-stat-xl)}
.rv-stat-label{font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--rv-ink);margin-top:.4rem}
.rv-tabular{font-variant-numeric:tabular-nums}

/* 5 · Buttons & links ----------------------------------------------------- */
.rv-btn{display:inline-flex;align-items:center;gap:8px;font:500 .875rem/1 var(--rv-font-body);padding:15px 22px;border-radius:var(--rv-r-pill);border:1px solid var(--rv-line-2);color:var(--rv-ink);background:transparent;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background var(--rv-dur-1) var(--rv-ease),border-color var(--rv-dur-1) var(--rv-ease),color var(--rv-dur-1) var(--rv-ease),transform var(--rv-dur-1) var(--rv-ease)}
/* Hover brightens; orange stays on primary buttons (QA round 1 #12). */
.rv-btn:hover{border-color:var(--rv-ink-3);background:var(--rv-stripe);color:var(--rv-ink)}
.rv-btn--primary{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-on-accent)}
.rv-btn--primary:hover{background:var(--rv-accent-hover);border-color:var(--rv-accent-hover);color:var(--rv-on-accent);transform:translateY(-1px)}
.rv-btn--sm{padding:12px 18px;font-size:.8125rem}
.rv-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:var(--rv-s6)}
.rv-actions--inline{margin-top:0;align-self:center}
.rv-link{font-weight:600;color:var(--rv-ink);text-decoration:none;border-bottom:1.5px solid var(--rv-accent);padding-bottom:2px}
.rv-link:hover{color:var(--rv-ink);border-bottom-color:var(--rv-accent-hi)}
.rv-link--arrow{display:inline-flex;align-items:center;gap:6px;color:var(--rv-accent-ink);border:0;padding:0;font-size:var(--rv-text-small)}
.rv-link--arrow::after{content:"\2192";transition:transform var(--rv-dur-1) var(--rv-ease)}
.rv-link--arrow:hover::after{transform:translateX(4px)}
/* With one orange, orange text links show hover with an underline instead of a lighter shade. */
:is(.rv-link--arrow,.rv-agent a,.rv-mega__head a):hover,.rv-row:hover .rv-row__cta{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}

/* 6 · Rails & cards ------------------------------------------------------- */
.rv-rail{border-top:1px solid var(--rv-line);padding-top:20px;position:relative}
.rv-rail--accent::before{content:"";position:absolute;top:-1px;left:0;width:28px;height:2px;background:var(--rv-accent)}
.rv-rail--strong{border-top-color:var(--rv-line-2)}
.rv-rail .rv-h3,.rv-rail h3{margin:0 0 var(--rv-s2)}
.rv-rail .rv-h3 a{color:inherit;text-decoration:none}
/* Status label in a rail's corner (points item "badge"), as on rivvun.ai's SOC 2 Type II card */
.rv-badge{position:absolute;top:16px;right:0;padding:4px 10px;border-radius:var(--rv-r-pill);background:#1C2F4D;color:#9FB0C7;font:500 .6875rem/1.2 var(--rv-font-body);white-space:nowrap}
.rv-section--light .rv-badge{background:var(--rv-accent-soft);color:var(--rv-accent-ink)}
.rv-rail:has(>.rv-badge)>.rv-h3{padding-right:6.5rem}
.rv-rail .rv-h3 a:hover{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}
.rv-tick{display:block;width:28px;height:2px;background:var(--rv-accent);margin-bottom:22px}
.rv-card{background:var(--rv-bg-2);border:1px solid var(--rv-line);border-radius:var(--rv-r-m);padding:28px;color:var(--rv-ink);transition:transform var(--rv-dur-1) var(--rv-ease),border-color var(--rv-dur-1) var(--rv-ease)}
.rv-card--raised{box-shadow:var(--rv-shadow-1)}
a.rv-card,.rv-card--hover{text-decoration:none}
/* A card is one link: on hover it lifts and its text keeps its colours. */
a.rv-card:hover,.rv-card--hover:hover{transform:translateY(-2px);border-color:var(--rv-line-2);color:var(--rv-ink)}
/* Edge card: gradient surface + 3px accent top edge (reference build). Add rv-edge to any box. */
.rv-edge,.rv-card--outcome,.rv-card--agent,.rv-card--resource{background:var(--rv-card-fill);border:1px solid var(--rv-card-edge);border-top:3px solid var(--rv-accent)}
a.rv-edge:hover,a.rv-card--outcome:hover{border-color:var(--rv-card-edge);border-top-color:var(--rv-accent-hover)}
.rv-card--outcome{display:flex;flex-direction:column;padding:1.8rem;border-radius:var(--rv-r-xl)}
.rv-card--outcome .rv-stat{font-size:clamp(2.6rem,4.5vw,3.6rem)}
.rv-card--outcome .rv-h3{font-size:1.5rem;margin:1.6rem 0 .6rem}
.rv-card__list{list-style:none;margin:1.3rem 0;padding:0}
.rv-card__list li{border-top:1px solid var(--rv-card-rule);padding:.6rem 0;font-size:var(--rv-text-body-2)}
.rv-card__cta{margin-top:auto;align-self:flex-start;font-weight:600;color:var(--rv-accent-ink);border-bottom:1.5px solid var(--rv-accent);padding-bottom:2px}
.rv-card--agent{background:var(--rv-card-solid);border-radius:var(--rv-r-l);padding:1.6rem}
.rv-card--agent .rv-h3{font-size:1.5rem;margin:.3rem 0 .6rem}
.rv-card--agent .rv-body-2{margin-bottom:22px}

/* 7 · Rows & lists -------------------------------------------------------- */
.rv-rows{list-style:none;margin:40px 0 0;padding:0;border-top:1px solid var(--rv-line-2)}
.rv-row{display:flex;flex-wrap:wrap;gap:8px 32px;align-items:baseline;padding:24px 0;border-bottom:1px solid var(--rv-line);color:var(--rv-ink);text-decoration:none}
.rv-row__title{flex:1 1 220px;max-width:300px;font:600 var(--rv-text-h3)/1.3 var(--rv-font-display);letter-spacing:-.015em;margin:0}
.rv-row__text{flex:3 1 300px;color:var(--rv-ink-2);font-size:var(--rv-text-body-2);line-height:1.65;margin:0}
.rv-row__cta{flex:0 0 auto;font:600 .875rem/1 var(--rv-font-body);color:var(--rv-accent-ink);white-space:nowrap}
a.rv-row:hover{color:var(--rv-ink)}
.rv-row:hover .rv-row__cta{color:var(--rv-accent-hi)}
.rv-list{list-style:none;margin:0;padding:0}
.rv-list li{display:flex;align-items:baseline;gap:14px;padding:14px 0;border-top:1px solid var(--rv-line);font-size:var(--rv-text-body-2)}
.rv-list li:last-child{border-bottom:1px solid var(--rv-line)}
.rv-list--check li::before{content:"";flex-shrink:0;width:11px;height:6px;border-left:2px solid var(--rv-accent-hi);border-bottom:2px solid var(--rv-accent-hi);transform:rotate(-45deg);position:relative;top:-3px}
.rv-list--metric li::before{content:"";flex-shrink:0;width:8px;height:8px;background:var(--rv-accent);transform:translateY(-1px)}
.rv-list--max{max-width:520px}
.rv-linklist{list-style:none;margin:0;padding:0;border-top:1px solid var(--rv-line-2)}
.rv-linklist li{border-bottom:1px solid var(--rv-line)}
.rv-linklist a{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 0;font:600 1.0625rem/1.4 var(--rv-font-body);color:var(--rv-ink);text-decoration:none}
.rv-linklist a::after{content:"\2192";color:var(--rv-accent)}
.rv-linklist a:hover{color:var(--rv-ink)}
.rv-linklist a:hover::after{color:var(--rv-accent-hi)}
.rv-indrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:0 32px;margin-top:var(--rv-s7);border-top:1px solid var(--rv-line-2)}
.rv-indrow a{display:block;padding:22px 0;border-bottom:1px solid var(--rv-line);color:var(--rv-ink);text-decoration:none}
.rv-indrow b{display:block;font:600 1.1875rem/1.3 var(--rv-font-body);letter-spacing:-.01em;margin-bottom:4px}
.rv-indrow span{color:var(--rv-ink-2);font-size:var(--rv-text-small)}
.rv-indrow a:hover{color:var(--rv-ink)}
.rv-indrow a:hover b{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}

/* 8 · The loop (Detect · Enforce · Prevent · Scale) ---------------------- */
.rv-loop{list-style:none;margin:56px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:40px 28px}
.rv-loop-step{position:relative;border-top:2px solid var(--rv-line);padding-top:22px}
.rv-loop-step::before{content:"";position:absolute;top:-2px;left:0;height:2px;width:25%;background:var(--rv-accent)}
.rv-loop-step:nth-child(2)::before{width:50%}
.rv-loop-step:nth-child(3)::before{width:75%}
.rv-loop-step:nth-child(4){border-top-color:var(--rv-accent)}
.rv-loop-step:nth-child(4)::before{width:100%}
.rv-loop-n{display:block;font:500 var(--rv-text-kicker)/1 var(--rv-font-mono);color:var(--rv-ink-3)}
.rv-loop-title{font:600 var(--rv-text-loop)/1.1 var(--rv-font-display);letter-spacing:-.035em;margin:10px 0}
.rv-loop-step p{color:var(--rv-ink-2);font-size:var(--rv-text-body-2);line-height:1.65;margin:0}
/* Worked example under a step (Home): brighter, smaller, with an orange rule, as in the reference design. */
.rv-loop-step .rv-loop-ex{margin-top:1.1rem;padding-left:.75rem;border-left:2px solid var(--rv-accent);font-size:var(--rv-text-small);line-height:1.5;color:var(--rv-ink)}
/* With examples, the steps share row tracks (subgrid: number, title, text, example), so the examples start on one line across a row.
   The 40px row gap moves onto each step's top margin (56px loop margin less 40px) to keep wrapped rows and outer spacing unchanged. */
.rv-loop:has(.rv-loop-ex){row-gap:0;margin-top:16px}
.rv-loop:has(.rv-loop-ex)>.rv-loop-step{display:grid;grid-template-rows:subgrid;grid-row:span 4;align-content:start;margin-top:40px}

/* 9 · Timeline ------------------------------------------------------------ */
.rv-timeline{list-style:none;margin:0;padding:0;border-left:2px solid var(--rv-line)}
.rv-timeline li{position:relative;padding:0 0 24px 26px}
.rv-timeline li:last-child{padding-bottom:0}
.rv-timeline li::before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--rv-bg-1);border:2px solid var(--rv-ink-2)}
.rv-timeline li:last-child::before{background:var(--rv-accent);border-color:var(--rv-accent)}
.rv-timeline b{display:block;font:600 1.1875rem/1.3 var(--rv-font-body)}
.rv-timeline p{color:var(--rv-ink-2);font-size:var(--rv-text-body-2);line-height:1.65;margin:4px 0 0}

/* 10 · FAQ (GB Pro Accordion; core/details fallback) --------------------- */
.rv-faq{margin-top:40px;max-width:880px;border-top:1px solid var(--rv-line-2)}
.rv-faq__item,.rv-faq details{border-bottom:1px solid var(--rv-line)}
.rv-faq__q,.rv-faq summary{display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:20px 0;font:600 1.09375rem/1.35 var(--rv-font-display);letter-spacing:-.035em;color:var(--rv-ink);background:none;border:0;text-align:left;cursor:pointer;list-style:none}
.rv-faq summary::-webkit-details-marker{display:none}
.rv-faq__q::after,.rv-faq summary::after{content:"";flex-shrink:0;width:9px;height:9px;border-right:2px solid var(--rv-accent-hi);border-bottom:2px solid var(--rv-accent-hi);transform:rotate(45deg);transition:transform var(--rv-dur-2) var(--rv-ease)}
.rv-faq__q[aria-expanded="true"]::after,.rv-faq__item.is-open>.rv-faq__q::after,.rv-faq__item.gb-accordion__item--open>.rv-faq__q::after,.rv-faq details[open] summary::after{transform:rotate(-135deg)}
.rv-faq__a,.rv-faq details>*:not(summary){color:var(--rv-ink-2);font-size:var(--rv-text-body-2);line-height:1.7;padding:0 40px 22px 0;max-width:68ch}

/* 11 · Data objects: record table, ledger, value panel ------------------- */
.rv-record-wrap{margin-top:40px;border:1px solid var(--rv-line);border-radius:var(--rv-r-m);overflow:hidden;background:var(--rv-bg-2)}
.rv-record{width:100%;border-collapse:collapse;font-size:var(--rv-text-small)}
.rv-record th{width:28%;text-align:left;padding:14px 18px;font:600 .8125rem/1.4 var(--rv-font-body);color:var(--rv-ink-2);background:var(--rv-bg-3);border-bottom:1px solid var(--rv-line);vertical-align:top}
.rv-record td{padding:14px 18px;border-bottom:1px solid var(--rv-line);line-height:1.5;vertical-align:top}
.rv-record tr:last-child th,.rv-record tr:last-child td{border-bottom:0}
.rv-record tr.rv-record__result td{font:600 1.1875rem/1.35 var(--rv-font-display);color:var(--rv-accent-hi);background:var(--rv-bg-3)}
.rv-record caption{caption-side:bottom;text-align:left;padding-top:10px;font-size:var(--rv-text-fine);color:var(--rv-ink-3)}
.rv-ledger{background:var(--rv-card-fill);border:1px solid var(--rv-card-edge);border-top:3px solid var(--rv-accent);border-radius:var(--rv-r-xl);overflow:hidden;box-shadow:var(--rv-shadow-1)}
.rv-ledger__head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:16px 22px;border-bottom:1px solid var(--rv-line);flex-wrap:wrap;font-size:.8125rem;color:var(--rv-ink-2)}
.rv-ledger__head b{font:600 var(--rv-text-small)/1.4 var(--rv-font-body);color:var(--rv-ink)}
.rv-ledger__totals{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--rv-line)}
.rv-ledger__totals>div{padding:14px 22px;min-width:0}
.rv-ledger__totals>div+div{border-left:1px solid var(--rv-line)}
.rv-ledger__totals small{display:block;font-size:.75rem;color:var(--rv-ink-2)}
.rv-ledger__totals b{font:600 clamp(1.0625rem,1.4vw,1.375rem)/1.2 var(--rv-font-display);font-variant-numeric:tabular-nums}
.rv-ledger__row{display:flex;justify-content:space-between;gap:16px;padding:14px 22px;border-bottom:1px solid var(--rv-line)}
.rv-ledger__row>div{min-width:0}
.rv-ledger__row b{display:block;font:600 var(--rv-text-small)/1.4 var(--rv-font-body)}
.rv-ledger__row small{font-size:.8125rem;color:var(--rv-ink-2)}
.rv-ledger__val{text-align:right;flex-shrink:0}
.rv-ledger__val b{font:600 1.0625rem/1.3 var(--rv-font-display);color:var(--rv-accent-hi);font-variant-numeric:tabular-nums}
.rv-ledger__val small{font-size:.75rem}
.rv-ledger__foot{margin:0;padding:12px 22px;font-size:.75rem;color:var(--rv-ink-3)}
.rv-value{background:var(--rv-card-fill);border:1px solid var(--rv-card-edge);border-top:3px solid var(--rv-accent);border-radius:var(--rv-r-xl);overflow:hidden}
.rv-value__inputs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}
.rv-value__inputs>div{padding:24px 26px;border-bottom:1px solid var(--rv-card-rule)}
.rv-value__inputs small{display:block;font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-ink-2)}
.rv-value__inputs b{display:block;font:600 1.875rem/1.1 var(--rv-font-display);font-variant-numeric:tabular-nums;margin-top:8px}
.rv-value__line{padding:22px 26px;border-bottom:1px solid var(--rv-card-rule);display:flex;justify-content:space-between;gap:16px;align-items:baseline;flex-wrap:wrap}
.rv-value__line span{font-size:var(--rv-text-small);color:var(--rv-ink-2)}
.rv-value__line b{font:600 1.375rem/1.1 var(--rv-font-display);font-variant-numeric:tabular-nums}
.rv-value__total{padding:26px;background:var(--rv-bg-3);display:flex;justify-content:space-between;gap:16px;align-items:baseline;flex-wrap:wrap}
.rv-value__total span{font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-ink-2)}
.rv-value__total b{font:600 clamp(1.75rem,2.6vw,2.375rem)/1.1 var(--rv-font-display);color:var(--rv-accent-hi);font-variant-numeric:tabular-nums}
.rv-value__note{margin:0;padding:14px 26px;font-size:var(--rv-text-fine);color:var(--rv-ink-3);border-top:1px solid var(--rv-card-rule)}

/* 12 · Components --------------------------------------------------------- */
.rv-crumbs{font-size:.875rem;color:var(--rv-ink-2);margin-bottom:28px}
.rv-crumbs a{color:inherit;text-decoration:none}
.rv-crumbs a:hover{color:var(--rv-ink)}
.rv-crumbs .sep{margin:0 10px;opacity:.6}
.rv-crumbs [aria-current]{color:var(--rv-ink)}
.rv-hero{background:radial-gradient(900px 520px at 85% 15%,var(--rv-glow-blue),transparent 60%),radial-gradient(600px 400px at 8% 95%,var(--rv-accent-soft),transparent 60%),repeating-linear-gradient(0deg,var(--rv-grid-line) 0 1px,transparent 1px 48px),repeating-linear-gradient(90deg,var(--rv-grid-line) 0 1px,transparent 1px 48px),var(--rv-bg-0);border-bottom:1px solid var(--rv-line)}
.rv-hero--page{background:radial-gradient(800px 400px at 90% 0%,var(--rv-glow-blue),transparent 60%),var(--rv-bg-0)}
/* Home hero: rivvun.ai's photo (assets/img/home-hero.jpg from production's uploads, served as WebP) under its
   overlay, black at 50% plus a navy gradient that keeps the copy side darkest */
.rv-hero:not(.rv-hero--page){background:linear-gradient(105deg,rgba(4,7,12,.95) 0%,rgba(6,10,18,.88) 30%,rgba(8,14,24,.7) 55%,rgba(11,26,43,.55) 78%,rgba(11,26,43,.45) 100%),linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.5)),url(../img/home-hero.webp) 50% 50%/cover no-repeat var(--rv-bg-0)}
@media (max-width:1024px){.rv-hero:not(.rv-hero--page){background-image:linear-gradient(105deg,rgba(4,7,12,.95) 0%,rgba(6,10,18,.88) 30%,rgba(8,14,24,.7) 55%,rgba(11,26,43,.55) 78%,rgba(11,26,43,.45) 100%),linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.5)),url(../img/home-hero-1024.webp)}}
/* Phones: the hero is taller than wide, so only the photo's centre shows; home-hero-mobile.webp is that
   centre (768x1090 of the 2048px original, at 576x818). inc/hero-preload.php preloads the same files per width. */
@media (max-width:767px){.rv-hero:not(.rv-hero--page){background-image:linear-gradient(105deg,rgba(4,7,12,.95) 0%,rgba(6,10,18,.88) 30%,rgba(8,14,24,.7) 55%,rgba(11,26,43,.55) 78%,rgba(11,26,43,.45) 100%),linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.5)),url(../img/home-hero-mobile.webp)}}
/* Page hero backgrounds: rivvun.ai's data-flow photo (assets/img/hero-data-flow.jpg, served as WebP, from
   production's uploads) as each page used it, chosen per page with hero.background in
   site/content.json (meta rv_hero_bg → the .rv-hero__bg layer's data-bg; pages without one
   have no layer). A navy layer at 1-x over the photo equals production's photo at opacity x
   on navy #0B1A2B. Matched to rivvun.ai's rendered heroes (brightness and texture measured
   from screenshots, 2026-10-12).
   data-flow: Platform, Industries; production sets the photo at 12% over black, but it renders
   at about 3% with the navy darkened by about 7% · data-flow-faint: 7% (About) · data-flow-deep: 4%
   under a 220deg navy-to-black gradient (Agents until 2026-10-13, now unused) · data-flow-bold:
   full photo under a 105deg navy gradient that keeps the copy side darkest (Careers) */
.rv-hero--page{position:relative;isolation:isolate}
.rv-hero__bg{position:absolute;inset:0;z-index:-1;pointer-events:none}
.rv-hero__bg[data-bg^="data-flow"]{--rv-hero-photo:url(../img/hero-data-flow.webp)}
@media (max-width:1024px){.rv-hero__bg[data-bg^="data-flow"]{--rv-hero-photo:url(../img/hero-data-flow-1024.webp)}}
.rv-hero__bg[data-bg="data-flow"]{background:linear-gradient(rgba(0,0,0,.07),rgba(0,0,0,.07)),linear-gradient(rgba(11,26,43,.97),rgba(11,26,43,.97)),var(--rv-hero-photo) 50% 50%/cover no-repeat #0b1a2b}
.rv-hero__bg[data-bg="data-flow-faint"]{background:linear-gradient(rgba(11,26,43,.93),rgba(11,26,43,.93)),var(--rv-hero-photo) 50% 50%/cover no-repeat #0b1a2b}
.rv-hero__bg[data-bg="data-flow-deep"]{background:linear-gradient(220deg,rgba(11,26,43,.96) 31%,rgba(1,2,3,.96) 100%),var(--rv-hero-photo) 50% 50%/cover no-repeat #010203}
.rv-hero__bg[data-bg="data-flow-bold"]{background:linear-gradient(105deg,rgba(11,26,43,.97) 0%,rgba(11,26,43,.9) 55%,rgba(11,26,43,.78) 100%),var(--rv-hero-photo) 50% 50%/cover no-repeat #0b1a2b}
/* ai-agents: the purchased "AI agents" photo (Shutterstock 2760027923, original in
   reference/images; assets/img/hero-ai-agents.jpg, served as WebP) under the home hero's overlay (black at 50%
   plus the navy gradient that keeps the copy side darkest), so it sits as far back as the home
   photo; the bulb and hand sit in the empty right half (Agents, Technical Architecture) */
.rv-hero__bg[data-bg="ai-agents"]{background:linear-gradient(105deg,rgba(4,7,12,.95) 0%,rgba(6,10,18,.88) 30%,rgba(8,14,24,.7) 55%,rgba(11,26,43,.55) 78%,rgba(11,26,43,.45) 100%),linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.5)),url(../img/hero-ai-agents.webp) 50% 40%/cover no-repeat #0b1a2b}
@media (max-width:1024px){.rv-hero__bg[data-bg="ai-agents"]{background-image:linear-gradient(105deg,rgba(4,7,12,.95) 0%,rgba(6,10,18,.88) 30%,rgba(8,14,24,.7) 55%,rgba(11,26,43,.55) 78%,rgba(11,26,43,.45) 100%),linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.5)),url(../img/hero-ai-agents-1024.webp)}}
@media (max-width:767px){.rv-hero__bg[data-bg="ai-agents"]{background-position:68% 40%}}
/* solution-glow: the solution pages' hero on rivvun.ai (its rivvun_hero widget, hello-elementor
   theme): navy with the accent #C14100 at 15% glowing from the upper right, no image */
.rv-hero__bg[data-bg="solution-glow"]{background:radial-gradient(900px 460px at 78% 22%,rgba(193,65,0,.15),transparent 70%),#0b1a2b}
.rv-hero__inner{padding-block:clamp(56px,6vw,96px) clamp(64px,6vw,96px)}
.rv-hero--page .rv-hero__inner{padding-block:clamp(40px,4vw,56px) clamp(56px,6vw,80px)}
.rv-hero__grid{display:flex;flex-wrap:wrap;gap:56px 48px;align-items:center}
.rv-hero--page .rv-hero__grid{gap:40px 64px;align-items:flex-end}
.rv-hero__grid>*{min-width:0}
.rv-hero__copy{flex:1.15 1 440px}
.rv-hero--page .rv-hero__copy{flex:1.4 1 420px}
.rv-hero__visual{flex:1 1 400px}
/* Intro under the main headline: 16px / 1.6 as on rivvun.ai (QA R1-06). */
.rv-hero .rv-lede{margin-top:var(--rv-s6);font-size:1rem;line-height:1.6}
/* Home hero beside the agreed vs. booked panel: a larger headline and intro so the copy carries the panel's height. */
.rv-hero__copy .rv-h1--xl{font-size:clamp(1.75rem,4vw,3.6rem);line-height:1.12}
.rv-hero__copy:has(>.rv-h1--xl)>.rv-lede{margin-top:var(--rv-s6);font-size:1.15rem;line-height:1.6;max-width:36em}
.rv-hero__copy:has(>.rv-h1--xl)>.rv-actions{margin-top:var(--rv-s7)}
.rv-hero--page .rv-lede{margin-top:20px}
.rv-stat-trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--rv-s3);margin-top:var(--rv-s8)}
.rv-stat-trio>div{min-width:0;background:var(--rv-card-fill-2);border:1px solid var(--rv-card-edge);border-top:3px solid var(--rv-accent);border-radius:var(--rv-r-l);padding:1rem 1.1rem}
.rv-stat-trio .rv-stat{font-size:var(--rv-text-stat)}
.rv-stat-trio .rv-stat-label{margin-top:.35rem}
@media (max-width:560px){.rv-stat-trio{grid-template-columns:1fr}}
.rv-stat-trio+:is(.rv-fine,.is-style-rv-fine){margin-top:var(--rv-s4)}
.rv-bigstat{flex:1 1 240px;border-left:3px solid var(--rv-accent);padding-left:22px}
.rv-bigstat__label{color:var(--rv-ink-2);margin-top:10px;font-size:var(--rv-text-body-2)}
.rv-answer{border-left:3px solid var(--rv-accent);padding:6px 0 6px 26px;max-width:66ch}
.rv-answer :is(.rv-kicker,.is-style-rv-kicker){color:var(--rv-accent)}
.rv-answer p:not(.rv-kicker){font-size:clamp(1.1875rem,1.3vw,1.375rem);line-height:1.55;margin:0}
.rv-chips{display:flex;flex-wrap:wrap;gap:10px}
.rv-chip{padding:9px 14px;border:1px solid var(--rv-line-2);border-radius:var(--rv-r-pill);background:var(--rv-bg-2);font:500 .875rem/1 var(--rv-font-body)}
.rv-chip--out{border-color:var(--rv-accent);font-weight:600}
.rv-arch{margin-top:var(--rv-s7);display:grid;gap:12px}
.rv-arch__label{font:600 var(--rv-text-kicker)/1.2 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-ink-3);margin:0}
.rv-arch__link{display:flex;justify-content:center;flex-wrap:wrap;gap:6px 40px;padding:6px 0;font-size:.8125rem;color:var(--rv-ink-2)}
.rv-arch__link i{font-style:normal;color:var(--rv-accent-hi);font-size:1.125rem;line-height:1;margin-right:8px}
.rv-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}
.rv-tiles--3{grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr))}
.rv-tile{min-height:56px;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px 12px;background:var(--rv-bg-2);border:1px solid var(--rv-line-2);border-radius:10px;font:600 .875rem/1.3 var(--rv-font-body);color:var(--rv-ink)}
.rv-tile--out{border-color:var(--rv-accent)}
.rv-core{background:var(--rv-core-gradient);border-radius:var(--rv-r-l);padding:20px 22px 22px;color:var(--rv-on-accent)}
.rv-core__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 16px;margin-bottom:14px}
.rv-core__head b{font:600 1.25rem/1.2 var(--rv-font-body);letter-spacing:-.01em}
.rv-core__head span{font:600 var(--rv-text-kicker)/1.2 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:.9}
.rv-core .rv-tile{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.28);color:var(--rv-on-accent)}
.rv-fam{margin-top:var(--rv-s7)}
.rv-fam-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 24px;padding-bottom:16px;border-bottom:1px solid var(--rv-line-2)}
.rv-fam-head small{font:600 var(--rv-text-kicker)/1.2 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-accent-hi)}
.rv-agent{display:flex;flex-wrap:wrap;gap:8px 32px;padding:22px 0;border-bottom:1px solid var(--rv-line);align-items:baseline}
.rv-agent>*{min-width:0}
.rv-agent .rv-h3{flex:1 1 220px;max-width:260px;margin:0}
.rv-agent p{flex:3 1 300px;color:var(--rv-ink-2);margin:0}
.rv-agent a{flex:0 0 auto;font:600 .875rem/1 var(--rv-font-body);color:var(--rv-accent-ink);text-decoration:none}
.rv-ind{display:flex;flex-wrap:wrap;gap:32px 64px;padding:var(--rv-s7) 0;border-top:1px solid var(--rv-line)}
.rv-ind:first-of-type{border-top-color:var(--rv-line-2)}
.rv-ind>*{min-width:0}
.rv-ind__copy{flex:1 1 320px}
.rv-ind .rv-linklist{flex:1.2 1 320px}
.rv-ind .rv-h2{font-size:clamp(1.5rem,1.2rem + 1vw,2.125rem)}
.rv-portrait{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
.rv-people{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.4rem}
.rv-people--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.rv-person{background:var(--rv-card-solid);border:1px solid var(--rv-card-edge);border-radius:18px;overflow:hidden;display:flex;flex-direction:column;min-width:0}
.rv-people--2 .rv-person{flex-direction:row}
.rv-person__photo{position:relative;aspect-ratio:1/1;background:linear-gradient(135deg,#22303F,#151A22);overflow:hidden;flex-shrink:0}
.rv-people--2 .rv-person__photo{width:200px;aspect-ratio:auto}
.rv-person__photo .rv-slot{height:100%;border:0;border-radius:0}
.rv-person__body{padding:1.4rem 1.5rem 1.6rem;display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.rv-person .rv-role{font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-accent-hi)}
.rv-person .rv-h3{font-size:1.625rem;margin:.3rem 0 .7rem}
.rv-person .rv-body-2{margin-bottom:1rem}
.rv-person .rv-link{margin-top:auto}
@media (max-width:960px){.rv-people{grid-template-columns:repeat(2,minmax(0,1fr))}.rv-people--2 .rv-person{flex-direction:column}.rv-people--2 .rv-person__photo{width:auto;aspect-ratio:1/1}}
@media (max-width:560px){.rv-people,.rv-people--2{grid-template-columns:1fr}}
/* Items centred on one line (the names are larger than the notes, so baseline alignment made the notes look low). */
.rv-backers{display:flex;flex-wrap:wrap;gap:12px 40px;align-items:center;padding:22px 0;border-top:1px solid var(--rv-line);border-bottom:1px solid var(--rv-line);margin-top:56px}
.rv-backers b{font:600 1.375rem/1 var(--rv-font-display)}
.rv-backers span{color:var(--rv-ink-2);font-size:var(--rv-text-small)}
.rv-backers span:last-child:not(:first-child){margin-left:auto}
/* Below the width where all four fit on one line: lead-in, then the names together, then the closing note, each starting at the left edge. */
@media (max-width:960px){.rv-backers{gap:10px 24px}.rv-backers .rv-backers__note{flex-basis:100%}.rv-backers span:last-child:not(:first-child){margin-left:0}}
.rv-cta-band .rv-h2{max-width:22ch}
.rv-cta-band .rv-lede{max-width:54ch}
/* A link inside an intro sentence (closing band: "Request a 30-minute demo", QA R2-04). */
.rv-lede .rv-inline-link{color:var(--rv-ink);text-decoration:underline;text-decoration-color:var(--rv-accent);text-decoration-thickness:1.5px;text-underline-offset:.2em}
.rv-lede .rv-inline-link:hover{text-decoration-thickness:2px}

/* 13 · Header & footer ---------------------------------------------------- */
.rv-header{--rv-nav-ink:#CBC9C3;--rv-nav-ink-hi:#FFFFFF;position:sticky;top:0;z-index:20;background:var(--rv-bg-1);border-bottom:1px solid #202A38}
.rv-header__bar{display:flex;align-items:center;gap:32px;min-height:80px;flex-wrap:wrap}
.rv-logo{display:block;flex-shrink:0}
.rv-logo img{height:48px;width:auto;display:block}
/* Desktop nav type as on rivvun.ai: 14px Inter at every width, links at 55% cream, white on hover and for the current section. */
.rv-nav{--rv-nav-ink:rgba(244,241,234,.55)}
.rv-nav a{color:var(--rv-nav-ink);text-decoration:none;font:400 .875rem/1 var(--rv-font-body);padding:12px 0}
.rv-nav a:hover{color:var(--rv-nav-ink-hi)}
/* Current section (aria-current / is-current, set in inc/site-parts.php): white with an orange underline. */
.rv-nav__item>a[aria-current],.rv-nav__item.is-current>.rv-nav__btn{color:var(--rv-nav-ink-hi);text-decoration:underline;text-decoration-color:var(--rv-accent);text-decoration-thickness:2px;text-underline-offset:10px}
.rv-nav .rv-caret{display:inline-block;width:6px;height:6px;margin-left:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg)}
/* Mega panel (reference "main menu v6"): intro column + link columns. Like rivvun.ai: a cream panel across the
   whole window under an orange rule, its content lined up with the page column (side padding = container edge). */
.rv-mega{background:#FFFDF7;color:#0B1A2B;border:0;border-top:2px solid var(--rv-accent);border-radius:0;padding:1.8rem max(var(--rv-gutter),calc((100% - var(--rv-container))/2 + var(--rv-gutter))) 2.2rem;box-shadow:none;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:2rem}
/* Solutions: link columns as wide as their longest name, so names stay on one line; the intro takes the rest (QA R1-10). */
.rv-mega--wide{grid-template-columns:minmax(10.5rem,1fr) repeat(3,max-content);column-gap:clamp(1.5rem,2.6vw,2.75rem)}
/* One link column (Company, Resources): as on rivvun.ai the intro takes the left half and the links start 20px right of the window's centre. */
.rv-mega:not(:has(>.rv-mega__col~.rv-mega__col)){grid-template-columns:1fr 1fr;column-gap:40px}
.rv-mega>*{min-width:0}
/* Panel type sizes from rivvun.ai: label 10px, title 20px, intro 13px, column heads 10px, links 14px. */
.rv-mega__intro :is(.rv-kicker,.is-style-rv-kicker){margin-bottom:0;font-size:.625rem;line-height:1.6;letter-spacing:.11em;color:var(--rv-accent)}
.rv-mega__title{font:600 1.25rem/1.15 var(--rv-font-display);letter-spacing:-.01em;color:#0B1A2B;margin:.3rem 0 .5rem}
.rv-mega__text{color:#A1A5A8;font-size:.8125rem;line-height:1.6}
.rv-mega__intro .rv-link{color:#0B1A2B;border-bottom-color:var(--rv-accent);font-size:.8125rem;font-weight:500;line-height:1.55;padding:0}
.rv-mega__head{font:700 .625rem/1.3 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#6E7884;margin:0 0 .6rem;padding-bottom:.6rem;border-bottom:1px solid #5A6775}
.rv-mega__head a{color:#6E7884;font:inherit;letter-spacing:inherit;padding:0}
.rv-mega__head a:hover{color:#0B1A2B}
.rv-mega__list{list-style:none;margin:0;padding:0}
.rv-mega__list li{margin:.45rem 0}
.rv-mega__list a{color:#0B1A2B;font:400 .875rem/1.5 var(--rv-font-body);padding:0}
.rv-mega__list a:hover{color:#333366}
.rv-mega__list a[aria-current]{color:#0B1A2B;font-weight:600}
.rv-header .rv-btn{margin-left:auto}
@media (max-width:1100px){.rv-nav{display:none}.rv-header .rv-btn{display:none}}
.rv-overlay-menu a{display:block;padding:14px 0;border-bottom:1px solid var(--rv-line);color:var(--rv-ink);text-decoration:none;font:500 1.0625rem/1.3 var(--rv-font-body)}
.rv-overlay-menu a:hover{color:var(--rv-nav-ink-hi)}
.rv-overlay-menu .sub a{padding-left:16px;color:var(--rv-ink-2);font-weight:400}
/* Collapsible groups (Solutions, Company, Resources), as on the reference mobile menu */
.rv-mnav__details{margin:0}
.rv-mnav__details>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--rv-line);color:var(--rv-ink);font:500 1.0625rem/1.3 var(--rv-font-body)}
.rv-mnav__details>summary::-webkit-details-marker{display:none}
.rv-mnav__details>summary::after{content:"";width:.5rem;height:.5rem;border-right:2px solid var(--rv-accent-hi);border-bottom:2px solid var(--rv-accent-hi);transform:rotate(45deg);transition:transform var(--rv-dur-1) var(--rv-ease);margin-right:.3rem}
.rv-mnav__details[open]>summary::after{transform:rotate(-135deg)}
.rv-mnav__panel{padding:.2rem 0 .6rem .8rem}
.rv-mnav__head{margin:.8rem 0 .2rem;font:600 .72rem/1.3 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-accent-hi)}
.rv-mnav__list{list-style:none;margin:0;padding:0}
.rv-overlay-menu .rv-mnav__list a{color:var(--rv-ink-2);font-size:.95rem;font-weight:400;padding:.5rem 0}
.rv-overlay-menu a.rv-mnav__cta{display:inline-flex;justify-content:center;margin-top:1rem;padding:15px 22px;border:1px solid var(--rv-accent);color:var(--rv-on-accent);font:500 .9375rem/1 var(--rv-font-body)}
.rv-footer{background:var(--rv-bg-footer);border-top:1px solid var(--rv-line);color:var(--rv-ink-2);font-size:.875rem}
.rv-footer__inner{padding:64px var(--rv-gutter) 36px}
.rv-footer__grid{display:flex;flex-wrap:wrap;gap:36px 40px}
.rv-footer__brand{flex:2 1 240px}
.rv-footer__brand img{height:30px;width:auto;display:block;margin-bottom:16px}
.rv-footer__col{flex:1 1 150px}
.rv-footer__col p,.rv-footer__head{font:400 .625rem/1.3 var(--rv-font-mono);letter-spacing:.12em;text-transform:uppercase;color:#6E7884;margin:0 0 12px}
.rv-footer ul{list-style:none;margin:0;padding:0}
.rv-footer li{margin:.5rem 0}
.rv-footer{--rv-ink-2:#A1A5A8}
.rv-footer a{color:var(--rv-ink-2);text-decoration:none}
.rv-footer a:hover{color:var(--rv-ink)}
.rv-footer__legal{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;margin-top:48px;padding-top:20px;border-top:1px solid var(--rv-line);font:400 .625rem/1.4 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#48535F}
.rv-footer__legal a{color:#48535F}
.rv-footer__legal a:hover{color:var(--rv-ink-2)}

/* 14 · Forms (HubSpot embed skin) ---------------------------------------- */
.rv-form{padding:28px}
.rv-hs .hs-form{display:grid;gap:16px}
.rv-hs fieldset{max-width:none!important;margin:0;padding:0;border:0}
.rv-hs .form-columns-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));gap:16px}
.rv-hs .form-columns-2 .hs-form-field,.rv-hs .hs-form-field{width:100%!important;float:none!important;padding:0!important;margin:0}
.rv-hs .hs-form-field>label{display:block;font:600 .875rem/1.2 var(--rv-font-body);color:var(--rv-ink);margin-bottom:6px}
.rv-hs .hs-input,.rv-hs select.hs-input,.rv-hs textarea.hs-input{font:400 1rem/1.4 var(--rv-font-body);padding:12px 14px;border:1px solid var(--rv-line-2);border-radius:10px;background:var(--rv-bg-3);color:var(--rv-ink);width:100%!important;box-sizing:border-box;transition:border-color var(--rv-dur-1) var(--rv-ease)}
.rv-hs .hs-input:focus{border-color:var(--rv-accent);outline:none;box-shadow:0 0 0 3px var(--rv-accent-soft)}
.rv-hs textarea.hs-input{min-height:96px;resize:vertical}
.rv-hs .hs-input[type="checkbox"],.rv-hs .hs-input[type="radio"]{width:auto!important;accent-color:var(--rv-accent)}
.rv-hs .hs-button{display:inline-flex;align-items:center;font:500 .9375rem/1 var(--rv-font-body);padding:15px 22px;border-radius:var(--rv-r-pill);background:var(--rv-accent);color:var(--rv-on-accent);border:1px solid var(--rv-accent);cursor:pointer;transition:background var(--rv-dur-1) var(--rv-ease),transform var(--rv-dur-1) var(--rv-ease)}
.rv-hs .hs-button:hover{background:var(--rv-accent-hover);border-color:var(--rv-accent-hover);transform:translateY(-1px)}
.rv-hs .hs-error-msgs{list-style:none;margin:6px 0 0;padding:0;font-size:.8125rem;color:var(--rv-accent-hi)}
.rv-hs .hs-form-required{color:var(--rv-accent-hi)}
.rv-hs .legal-consent-container,.rv-hs .hs-richtext{font-size:var(--rv-text-fine);color:var(--rv-ink-3)}
.rv-hs .submitted-message{padding:14px 16px;border-left:3px solid var(--rv-accent);background:var(--rv-bg-3);color:var(--rv-ink)}

/* 15 · Media & slots ------------------------------------------------------ */
.rv-media{display:block;width:100%;height:auto;border-radius:var(--rv-r-m);border:1px solid var(--rv-line);object-fit:cover}
.rv-media--16x10{aspect-ratio:16/10} .rv-media--16x9{aspect-ratio:16/9} .rv-media--4x5{aspect-ratio:4/5} .rv-media--3x2{aspect-ratio:3/2}
.rv-slot{display:flex;align-items:flex-end;padding:14px;border-radius:var(--rv-r-m);border:1px solid var(--rv-line);background:repeating-linear-gradient(135deg,var(--rv-stripe) 0 2px,transparent 2px 12px),var(--rv-bg-2)}
.rv-slot__label{font:500 var(--rv-text-kicker)/1.4 var(--rv-font-mono);color:var(--rv-ink-2)}
/* Inline video player (core/video with poster; the MP4 loads on play) */
.rv-video{display:block;aspect-ratio:16/9;border-radius:var(--rv-r-xl);overflow:hidden;background:var(--rv-bg-1);border:1px solid var(--rv-card-edge)}
.rv-video figure,.rv-video .wp-block-video{margin:0;height:100%}
.rv-video video{display:block;width:100%;height:100%;object-fit:cover}

/* 16 · Motion ------------------------------------------------------------- */
@keyframes rv-reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){
  @supports (animation-timeline:view()){
    .rv-reveal{animation:rv-reveal var(--rv-dur-3) var(--rv-ease) both;animation-timeline:view();animation-range:entry 0% entry 35%}
  }
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* 17 · Light-mode fixes (whole-page light mode: posts and the blog/news listings) ------- */
body.rv-light .rv-section--navy .rv-lede{color:#ACACA8}
body.rv-light .rv-hero{border-bottom-color:var(--rv-line)}
body.rv-light .rv-card{box-shadow:0 1px 2px rgba(13,23,37,.04)}
body.rv-light .rv-timeline li::before{background:var(--rv-bg-0)}

/* 18 · Build additions ------------------------------------------------------
   Class hooks for GenerateBlocks text tags (b/small are not Text-block tags),
   dynamic page hero, CSS-only navigation, WordPress/GeneratePress resets. */

/* GeneratePress shell */
.full-width-content .site-content,.full-width-content .inside-article,.full-width-content .entry-content{padding:0;margin:0}
.full-width-content .container.grid-container{max-width:100%}
.site-content>.content-area>.site-main{margin:0}
.entry-content>:last-child{margin-bottom:0}
.error404 .site-main>.inside-article{display:none}
a:visited{color:var(--rv-accent-ink)}
.rv-btn:visited,.rv-row:visited,.rv-linklist a:visited,.rv-indrow a:visited,a.rv-card:visited,.rv-nav a:visited,.rv-footer a:visited,.rv-agent a:visited,.rv-crumbs a:visited,.rv-mega__head a:visited,.rv-mega__list a:visited,.rv-overlay-menu a:visited,.rv-rail .rv-h3 a:visited,.rv-link:visited{color:inherit}
.rv-btn--primary:visited{color:var(--rv-on-accent)}
.rv-row__cta,.rv-card__cta,.rv-agent a,.rv-link--arrow{color:var(--rv-accent-ink)}
.rv-actions{align-items:center}

/* Page hero (GP Premium element with dynamic tags) */
.rv-hero--page :is(.rv-kicker,.is-style-rv-kicker):empty,.rv-hero--page .rv-lede:empty{display:none}
.rv-hero__cta:not([data-cta="value-scan"]){display:none}
.rv-bigstat:has(.rv-stat--xl:empty){display:none}
.rv-hero--page .rv-crumbs+.rv-hero__grid{margin-top:0}

/* Timeline, industry row, ledger, value panel, families, backers, core */
.rv-timeline__title{display:block;font:600 1.1875rem/1.3 var(--rv-font-body);color:var(--rv-ink)}
.rv-indrow .rv-indrow__title{display:block;font:600 1.1875rem/1.3 var(--rv-font-body);letter-spacing:-.01em;margin-bottom:4px;color:var(--rv-ink)}
.rv-indrow a:hover .rv-indrow__title{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}
.rv-ledger__title{font:600 var(--rv-text-small)/1.4 var(--rv-font-body);color:var(--rv-ink)}
.rv-ledger__tlabel{display:block;font-size:.75rem;color:var(--rv-ink-2)}
.rv-ledger__tval{display:block;font:600 clamp(1.0625rem,1.4vw,1.375rem)/1.2 var(--rv-font-display);font-variant-numeric:tabular-nums;color:var(--rv-ink);white-space:nowrap}
@media (max-width:560px){.rv-ledger__totals>div{padding:12px 11px}.rv-ledger__tval{font-size:1.05rem}}
.rv-ledger__rtitle{display:block;font:600 var(--rv-text-small)/1.4 var(--rv-font-body);color:var(--rv-ink)}
.rv-ledger__rtext{font-size:.8125rem;color:var(--rv-ink-2)}
.rv-ledger__amount{display:block;font:600 1.0625rem/1.3 var(--rv-font-display);color:var(--rv-accent-hi);font-variant-numeric:tabular-nums}
.rv-ledger__kind{font-size:.75rem;color:var(--rv-ink-2)}
/* Live ledger (assets/js/ledger.js): rows sit in a fixed window so the feed never moves the hero */
.rv-ledger__rows{height:332px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 calc(100% - 56px),transparent);mask-image:linear-gradient(#000 calc(100% - 56px),transparent)}
.rv-ledger__rows.block-editor-block-list__block{height:auto;-webkit-mask-image:none;mask-image:none}
.rv-ledger.is-live .rv-ledger__tag{display:inline-flex;align-items:center;gap:8px}
.rv-ledger.is-live .rv-ledger__tag::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--rv-accent);flex-shrink:0;animation:rv-pulse 2s infinite}
.rv-ledger__row.is-new{animation:rv-ledger-in .55s ease-out}
@keyframes rv-pulse{50%{opacity:.3}}
@keyframes rv-ledger-in{from{opacity:0;transform:translateY(-14px);background:rgba(193,65,0,.18)}to{opacity:1;transform:none;background:transparent}}
.rv-value__label{display:block;font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-ink-2)}
.rv-value__num{display:block;font:600 1.875rem/1.1 var(--rv-font-display);font-variant-numeric:tabular-nums;margin-top:8px;color:var(--rv-ink)}
.rv-value__line .rv-value__amt{font:600 1.375rem/1.1 var(--rv-font-display);font-variant-numeric:tabular-nums;color:var(--rv-ink)}
.rv-value__total .rv-value__amt{font:600 clamp(1.75rem,2.6vw,2.375rem)/1.1 var(--rv-font-display);color:var(--rv-accent-hi);font-variant-numeric:tabular-nums}
/* Value calculator (assets/js/value-calc.js swaps each .rv-value__num for an input).
   `.rv-value input.` outranks GeneratePress' input[type="number"] skin. */
.rv-value.is-live .rv-value__inputs>div{display:flex;flex-direction:column;justify-content:space-between;gap:10px}
.rv-value label.rv-value__label{cursor:pointer;margin:0}
.rv-value input.rv-value__input{display:block;width:100%;box-sizing:border-box;margin:0;padding:10px 14px;font:600 1.5rem/1.2 var(--rv-font-display);font-variant-numeric:tabular-nums;color:var(--rv-ink);background:var(--rv-bg-3);border:1px solid var(--rv-line-2);border-radius:10px;transition:border-color var(--rv-dur-1) var(--rv-ease)}
.rv-value input.rv-value__input:hover{border-color:var(--rv-ink-3)}
.rv-value input.rv-value__input:focus{border-color:var(--rv-accent);outline:none;box-shadow:0 0 0 3px var(--rv-accent-soft)}
.rv-value input.rv-value__input[aria-invalid="true"]{border-color:var(--rv-accent-hi)}
.rv-value__error{margin:0;font-size:var(--rv-text-fine);line-height:1.4;color:var(--rv-accent-hi)}
.rv-value__error:empty{display:none}
.rv-value.is-invalid .rv-value__amt{color:var(--rv-ink-3)}
/* Ledger pause control (assets/js/ledger.js) */
.rv-ledger.is-live .rv-ledger__tag{margin-left:auto}
/* Fixed width: "Resume" is longer than "Pause" and would wrap the head (QA round 1 #15). */
.rv-ledger button.rv-ledger__pause{min-width:5.25rem;text-align:center;background:none;border:1px solid var(--rv-line-2);border-radius:var(--rv-r-pill);padding:4px 12px;font:600 .75rem/1.2 var(--rv-font-body);color:var(--rv-ink-2);cursor:pointer}
.rv-ledger button.rv-ledger__pause:hover,.rv-ledger button.rv-ledger__pause:focus-visible{color:var(--rv-ink);border-color:var(--rv-ink-3);background:none}
.rv-ledger.is-paused .rv-ledger__tag::before{animation:none;opacity:.45}
.rv-fam-head__tag{font:600 var(--rv-text-kicker)/1.2 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-accent-hi)}
.rv-backers .rv-backers__name{font:600 1.375rem/1 var(--rv-font-display);color:var(--rv-ink);margin-left:0}
.rv-core__title{font:600 1.25rem/1.2 var(--rv-font-body);letter-spacing:-.01em}
.rv-core__tag{font:600 var(--rv-text-kicker)/1.2 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:.9}
.rv-arch__hop{display:flex;align-items:center;gap:8px}
.rv-arch__arrow{color:var(--rv-accent-hi);font-size:1.125rem;line-height:1}
.rv-people .rv-slot{margin-bottom:16px}
.rv-footer__tagline{margin-bottom:12px}
.rv-footer__brand p+p{margin-top:4px}
/* Social icon links under the email (site.footer.social): the icon is a mask filled with the link color */
.rv-footer__social{display:flex;gap:4px;margin:6px 0 6px -8px}
.rv-footer .rv-social{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;color:var(--rv-ink-2);transition:color var(--rv-dur-1) var(--rv-ease)}
.rv-footer .rv-social:hover{color:var(--rv-accent-hi)}
.rv-footer .rv-social:focus-visible{outline:2px solid var(--rv-accent-hi);outline-offset:0}
.rv-social__icon{width:20px;height:20px;background:currentColor;-webkit-mask:var(--rv-icon) center/contain no-repeat;mask:var(--rv-icon) center/contain no-repeat}
.rv-social--linkedin{--rv-icon:url(../img/icons/linkedin.svg)}
.rv-social--x{--rv-icon:url(../img/icons/x.svg)}
/* Office cities, "Seattle, US | Singapore | Pune, India", the bars dimmed as on rivvun.ai */
.rv-footer__place+.rv-footer__place::before{content:"|";content:"|" / "";margin:0 .55em 0 .3em;color:var(--rv-ink-3)}

/* Record table (core/table inside .rv-record-wrap) */
.rv-record{margin:0;width:100%}
.rv-record table{width:100%;border-collapse:collapse;font-size:var(--rv-text-small);margin:0;border:0}
.rv-record th,.rv-record td{border:0;border-bottom:1px solid var(--rv-line)}
.rv-record tbody tr:last-child td{font:600 1.1875rem/1.35 var(--rv-font-display);color:var(--rv-accent-hi);background:var(--rv-bg-3)}
.rv-record figcaption{text-align:left;padding:10px 18px 12px;margin:0;font-size:var(--rv-text-fine);color:var(--rv-ink-3)}

/* FAQ with core/details */
.rv-faq details{margin:0;padding:0}
.rv-faq summary{padding-left:0;padding-right:0}

/* Header navigation (works without JS: hover / focus-within mega panel, details overlay on mobile;
   assets/js/nav.js adds aria-expanded, Escape, focus return and an inert background) */
.rv-nav__list{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:1.35rem}
.rv-nav__item{position:static;display:flex;align-items:center;min-height:80px}
@media (max-width:1240px){.rv-nav__list{gap:1rem}}
.rv-nav__btn,.rv-nav__btn:hover,.rv-nav__btn:focus,.rv-nav__btn:active{background:none;border:0;border-radius:0;padding:12px 0;font:400 .875rem/1 var(--rv-font-body);color:var(--rv-nav-ink);cursor:pointer;display:inline-flex;align-items:center;box-shadow:none}
.rv-nav__btn::after{content:"";width:6px;height:6px;margin-left:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.rv-nav__btn:hover,.rv-nav__item--mega:hover>.rv-nav__btn,.rv-header:not(.rv-nav-js) .rv-nav__item--mega:focus-within>.rv-nav__btn,.rv-nav__item--mega.is-open>.rv-nav__btn{color:var(--rv-nav-ink-hi)}
/* The bar anchors the mobile overlay menu; on desktop the mega panel anchors to the sticky header instead, so it spans the window. */
.rv-header__bar{position:relative}
@media (min-width:1101px){.rv-header__bar{position:static}}
.rv-mega{position:absolute;top:100%;left:0;right:0;display:none;z-index:30;width:auto;max-width:none}
/* With assets/js/nav.js (.rv-nav-js) keyboard opening is explicit (aria-expanded), not focus-within. */
.rv-nav__item--mega:hover>.rv-mega,.rv-header:not(.rv-nav-js) .rv-nav__item--mega:focus-within>.rv-mega,.rv-nav__item--mega.is-open>.rv-mega{display:grid}
.rv-nav__item--mega.is-dismissed>.rv-mega{display:none}
.rv-mnav{display:none;margin-left:auto;position:static}
/* Hamburger toggle: the summary text ("Menu", "Close" while open; nav.js) stays as its accessible
   name but is hidden; three bars drawn in CSS turn into a cross when the menu is open */
.rv-mnav>summary{list-style:none;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid var(--rv-line-2);border-radius:10px;font-size:0;line-height:0;color:transparent;--rv-bars:var(--rv-ink)}
.rv-mnav>summary::before,.rv-mnav>summary::after{content:"";position:absolute;left:50%;top:50%;width:20px;height:2px;margin:-1px 0 0 -10px;border-radius:2px;background:var(--rv-bars);transition:transform var(--rv-dur-1) var(--rv-ease),box-shadow var(--rv-dur-1) var(--rv-ease)}
.rv-mnav>summary::before{box-shadow:0 -6px 0 var(--rv-bars),0 6px 0 var(--rv-bars)}
.rv-mnav>summary::after{opacity:0}
.rv-mnav>summary:hover{border-color:var(--rv-ink-3)}
.rv-mnav>summary::-webkit-details-marker{display:none}
.rv-mnav[open]>summary{border-color:var(--rv-accent-ink);--rv-bars:var(--rv-accent-hi)}
.rv-mnav[open]>summary::before{box-shadow:none;transform:rotate(45deg)}
.rv-mnav[open]>summary::after{opacity:1;transform:rotate(-45deg)}
/* The overlay hangs off the sticky header (its containing block), so it starts below the
   header even when the bar wraps; nav.js sets --rv-header-bottom for the exact height. */
.rv-overlay-menu{position:absolute;left:0;right:0;top:100%;height:calc(100vh - var(--rv-header-bottom,80px));height:calc(100dvh - var(--rv-header-bottom,80px));background:var(--rv-bg-1);padding:8px 24px 40px;overflow:auto;overscroll-behavior:contain;z-index:40;border-top:1px solid var(--rv-line)}
html.rv-menu-open{overflow:hidden}
/* Keep logo + Menu on one 80px row down to 320px wide. */
@media (max-width:480px){.rv-header__bar{gap:16px}.rv-logo img{height:40px}}
.rv-overlay-menu ul{list-style:none;margin:0 auto;padding:0;max-width:var(--rv-container)}
@media (max-width:1100px){.rv-mnav{display:block}}

/* HubSpot fallback card */
.rv-hs--fallback .rv-actions{margin-top:var(--rv-s5)}

/* 20 · Blog and news (posts migrated from rivvun.ai; site/import-posts.php) --
   Single posts and job pages: light reading mode, hero from the Page Hero element, article body
   in a 720px measure (the editor canvas gets the same rules and column). Listings (/blogs/, /news/): GenerateBlocks query loop of rv-rows. */
.full-width-content:is(.single-post,.single-job_listing) .entry-content{max-width:calc(720px + 2*var(--rv-gutter));margin:0 auto;padding:var(--rv-section-tight) var(--rv-gutter) var(--rv-section)}
/* Post hero (blog, news, webinar), as on rivvun.ai: a navy band under the header with the title
   running the container width; the article below stays in the light reading column */
.single-post .rv-hero--page{background:var(--rv-bg-1)}
.single-post .rv-hero--page .rv-hero__copy{flex-basis:100%}
.single-post .rv-hero--page .rv-h1{max-width:none;font-size:clamp(1.75rem,1.2rem + 1.9vw,2.5rem);line-height:1.2;letter-spacing:-.02em}
.single-post .rv-hero--page .rv-lede{max-width:68ch}
.rv-bigstat:not(:has(*)){display:none}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container){font-size:1.0625rem;line-height:1.7;color:var(--rv-ink)}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container)>*+*{margin-top:1.1em}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) p{margin-bottom:0}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) h2{font-size:clamp(1.5rem,1.2rem + 1vw,2rem);line-height:1.2;letter-spacing:-.02em;margin-top:2.2em}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) h3{font-size:1.125rem;line-height:1.3;letter-spacing:-.01em;margin-top:1.8em}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) h4{font-size:1.0625rem;line-height:1.35;margin-top:1.4em}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) :is(.rv-kicker,.is-style-rv-kicker){margin:2.6em 0 0}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) :is(.rv-kicker,.is-style-rv-kicker)+h2,:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) :is(.rv-kicker,.is-style-rv-kicker)+h3,:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) :is(.rv-kicker,.is-style-rv-kicker)+h4{margin-top:.35em}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) ul,:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) ol{padding-left:1.25em;margin-left:0}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) li+li{margin-top:.35em}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) a:not(.rv-btn){color:var(--rv-accent-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) a:not(.rv-btn):hover{color:var(--rv-accent-hi)}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) blockquote{margin:2em 0;padding:4px 0 4px 24px;border-left:3px solid var(--rv-accent);background:none}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) blockquote p{font:600 clamp(1.1875rem,1rem + .6vw,1.375rem)/1.45 var(--rv-font-display);letter-spacing:-.01em;color:var(--rv-ink);font-style:normal}
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) blockquote cite{display:block;margin-top:10px;font:500 var(--rv-text-small)/1.4 var(--rv-font-body);font-style:normal;color:var(--rv-ink-3)}
.rv-byline{display:flex;align-items:center;gap:14px;padding-bottom:24px;margin-bottom:8px;border-bottom:1px solid var(--rv-line)}
.rv-byline__photo{width:56px;height:56px;border-radius:50%;object-fit:cover;flex-shrink:0}
.rv-byline__text{display:flex;flex-direction:column;gap:2px;min-width:0}
.rv-byline__name{font:600 1rem/1.3 var(--rv-font-body);color:var(--rv-ink)}
.rv-byline__meta{font-size:var(--rv-text-fine);line-height:1.4;color:var(--rv-ink-3)}
.rv-postlist .rv-rows{margin-top:0}
.rv-row__date{flex:0 0 auto;font:500 .875rem/1.4 var(--rv-font-body);color:var(--rv-ink-3);white-space:nowrap}
.rv-pager{display:flex;flex-wrap:wrap;gap:8px;margin-top:32px}
.rv-pager:not(:has(.page-numbers)){display:none}
.rv-pager__nums{display:contents}
.rv-pager .prev,.rv-pager .next{padding:0 16px}
/* Blog and webinar listings: whitepaper-hub cards (rv-card--resource) from the query loop;
   columns keep their width when a page has fewer than three cards. */
.rv-postlist--cards .rv-grid--cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
.rv-postlist--cards .gb-loop-item{display:flex;min-width:0}
.rv-postlist--cards .gb-loop-item>.rv-card{flex:1 1 auto;min-width:0}
.rv-postlist--cards .rv-pager{margin-top:40px}
.rv-pager .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 12px;border:1px solid var(--rv-line-2);border-radius:var(--rv-r-pill);color:var(--rv-ink);text-decoration:none;font:600 .875rem/1 var(--rv-font-body)}
.rv-pager .page-numbers.current{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-on-accent)}
.rv-pager a.page-numbers:hover{border-color:var(--rv-ink-3);color:var(--rv-ink)}

/* 21 · 2026-10-11 update ---------------------------------------------------
   One light (cream) section per page, h2 rails, pull quote, customer results cards. */

/* Light section: the reference's section.light palette, scoped like the navy band */
.rv-section--light{
  --rv-bg-0:#F3F1EB; --rv-bg-1:#ECE7DC; --rv-bg-2:#FFFFFF; --rv-bg-3:#ECE7DC;
  --rv-line:#D9D3C4; --rv-line-2:#C9C1AE;
  --rv-ink:#0B1A2B; --rv-ink-2:#1B2D44; --rv-ink-3:#56606E; --rv-ink-dim:#56606E;
  --rv-accent-hover:#A33700; --rv-accent-ink:#C14100; --rv-accent-hi:#C14100;
  --rv-accent-soft:rgba(193,65,0,.10); --rv-glow-blue:rgba(36,74,110,.12);
  --rv-grid-line:rgba(13,23,37,.03); --rv-stripe:rgba(13,23,37,.06);
  --rv-shadow-1:0 1px 2px rgba(13,23,37,.05),0 16px 40px -28px rgba(13,23,37,.25);
  --rv-card-fill:#FFFFFF; --rv-card-fill-2:#FFFFFF; --rv-card-solid:#FFFFFF; --rv-card-edge:#E2DCCD; --rv-card-rule:#E6E2DA;
  background:var(--rv-bg-0);color:var(--rv-ink);color-scheme:light}
.rv-section--light .rv-btn{border-color:var(--rv-ink);color:var(--rv-ink)}
.rv-section--light .rv-btn:hover{border-color:var(--rv-ink);background:var(--rv-stripe);color:var(--rv-ink)}
.rv-section--light .rv-btn--primary,.rv-section--light .rv-btn--primary:hover{border-color:var(--rv-accent);color:var(--rv-on-accent)}
.rv-section--light .rv-link{color:var(--rv-ink)}
.rv-section--light .rv-link:hover{color:var(--rv-ink);border-bottom-color:var(--rv-accent-ink)}
.rv-section--light .rv-hs .hs-input,.rv-section--light .rv-hs select.hs-input,.rv-section--light .rv-hs textarea.hs-input{background:#FFFFFF;border-color:#C9C1AE}
.rv-section--light .rv-form{background:#FFFFFF;border-color:#E2DCCD}
.rv-section--light .rv-timeline li::before{background:var(--rv-bg-0)}
.rv-section--light .rv-card{box-shadow:0 1px 2px rgba(13,23,37,.04)}
.rv-section--light .rv-answer :is(.rv-kicker,.is-style-rv-kicker){color:var(--rv-accent)}
.rv-section--light .rv-faq summary::after,.rv-section--light .rv-list--check li::before{border-color:#C14100}
.rv-section--light .rv-list--metric li::before{background:#C14100}

/* h2 rails (About principles): h2 sized like the rail h3 */
.rv-rail h2.rv-h3{font-size:1.2rem;letter-spacing:-.035em;margin-bottom:.45rem}

/* Pull quote (core/quote) */
:is(.rv-quote,.is-style-rv-quote),.wp-block-quote:is(.rv-quote,.is-style-rv-quote){margin:0;max-width:900px;padding:1rem 0 1rem 1.4rem;border:0;border-left:3px solid var(--rv-accent);background:none;font:400 clamp(1.3rem,2.4vw,1.8rem)/1.4 var(--rv-font-display);letter-spacing:-.015em;color:var(--rv-ink)}
:is(.rv-quote,.is-style-rv-quote) p{margin:0;font:inherit;color:inherit}
:is(.rv-quote,.is-style-rv-quote) p+p{margin-top:.6em}

/* Customer results: three edge cards; rows line up across cards (subgrid) */
.rv-cases{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(7,auto);column-gap:1.2rem;row-gap:0}
.rv-case{background:var(--rv-card-solid);border:1px solid var(--rv-card-edge);border-top:3px solid var(--rv-accent);border-radius:18px;padding:1.6rem;display:grid;grid-row:span 7;grid-template-rows:subgrid;row-gap:0;min-width:0}
.rv-case>*{margin:0 0 .85rem}
.rv-case :is(.rv-kicker,.is-style-rv-kicker){align-self:start}
.rv-case .rv-h3{font-size:1.125rem}
.rv-case__big .rv-stat{display:block;font-size:3rem;font-weight:600;letter-spacing:-.035em;color:var(--rv-accent-hi);line-height:1}
.rv-case__big .rv-stat-label{display:block;margin-top:.35rem}
.rv-case strong{color:var(--rv-ink);font-weight:600}
.rv-case__more{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;padding-top:.8rem;border-top:1px solid var(--rv-card-edge);min-height:3.2rem;align-self:start}
.rv-case__more>div{min-width:0}
.rv-case__fact{display:block;font:600 1.75rem/1.1 var(--rv-font-display);letter-spacing:-.035em;color:var(--rv-ink)}
.rv-case__label{font-size:.82rem;color:var(--rv-ink-2)}
.rv-case>:is(.rv-link,.rv-case__tag){margin:0;align-self:end;justify-self:start}
.rv-case__tag{font-weight:600;color:var(--rv-ink);border-bottom:1.5px solid var(--rv-accent);padding-bottom:2px}
@media (max-width:960px){.rv-cases{grid-template-columns:1fr;grid-template-rows:none;row-gap:1.2rem}.rv-case{grid-row:auto;display:flex;flex-direction:column}.rv-case>:is(.rv-link,.rv-case__tag){align-self:flex-start}}

/* Inline CTA band with two buttons */
.rv-cta-band .rv-actions--inline{flex-wrap:wrap}

/* 22 · Long-form pages -----------------------------------------------------
   .rv-prose: site/prose/*.html and post sources (site/lib/prose.js) in a reading measure;
   design-system groups for callouts, stats, steps, columns, facts, contents. */
.rv-prose{max-width:760px;margin-inline:auto;font-size:1.0625rem;line-height:1.7;color:var(--rv-ink)}
.rv-prose>*+*{margin-top:1.1em}
.rv-prose>:first-child{margin-top:0}
.rv-prose p{margin-bottom:0}
.rv-prose h2{font-size:clamp(1.5rem,1.2rem + 1vw,1.875rem);line-height:1.2;margin-top:2.2em;max-width:none}
.rv-prose h3{font-size:1.25rem;line-height:1.3;margin-top:1.8em}
.rv-prose h4{font-size:1.0625rem;line-height:1.35;margin-top:1.4em}
.rv-prose h2[id],.rv-prose h3[id]{scroll-margin-top:110px}
.rv-prose :is(.rv-kicker,.is-style-rv-kicker){margin:2.6em 0 0}
.rv-prose :is(.rv-kicker,.is-style-rv-kicker)+h2,.rv-prose :is(.rv-kicker,.is-style-rv-kicker)+h3,.rv-prose :is(.rv-kicker,.is-style-rv-kicker)+h4{margin-top:.35em}
.rv-prose ul.wp-block-list,.rv-prose ol.wp-block-list{padding-left:1.25em;margin-left:0}
.rv-prose li+li{margin-top:.35em}
.rv-prose a:not(.rv-btn){color:var(--rv-accent-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.rv-prose a:not(.rv-btn):hover{color:var(--rv-accent-hi)}
.rv-prose :is(.rv-fine,.is-style-rv-fine){font-size:var(--rv-text-fine);color:var(--rv-ink-3)}
.rv-prose .rv-actions{margin-top:1.4em}
.rv-prose .wp-block-image{margin:2em 0 0}
.rv-prose .wp-block-image img{border-radius:var(--rv-r-m);border:1px solid var(--rv-line)}
.rv-prose .wp-block-image figcaption{font-size:var(--rv-text-small);color:var(--rv-ink-2);margin-top:.6em;text-align:left}
.rv-prose .wp-block-separator{border:0;border-top:1px solid var(--rv-line);margin:2.4em 0}
.rv-prose details{border-bottom:1px solid var(--rv-line);margin:0}
.rv-prose details+details{margin-top:0}
.rv-prose summary{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 0;font:600 1.0625rem/1.4 var(--rv-font-body);cursor:pointer;list-style:none}
.rv-prose summary::-webkit-details-marker{display:none}
.rv-prose summary::after{content:"";flex-shrink:0;width:9px;height:9px;border-right:2px solid var(--rv-accent-hi);border-bottom:2px solid var(--rv-accent-hi);transform:rotate(45deg);transition:transform var(--rv-dur-2) var(--rv-ease)}
.rv-prose details[open] summary::after{transform:rotate(-135deg)}
.rv-prose details>p{padding:0 0 18px;color:var(--rv-ink-2)}
.rv-prose :is(.rv-quote,.is-style-rv-quote){margin:2em 0}
/* Tables */
:is(.rv-table,:where(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container) .wp-block-table){margin:1.6em 0 0;overflow-x:auto}
:is(.rv-table,:where(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container) .wp-block-table) table{width:100%;margin:0;border-collapse:collapse;font-size:var(--rv-text-small);line-height:1.5;background:var(--rv-card-solid);border:1px solid var(--rv-card-edge)}
:is(.rv-table,:where(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container) .wp-block-table) th,:is(.rv-table,:where(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container) .wp-block-table) td{text-align:left;vertical-align:top;padding:10px 14px;border:0;border-bottom:1px solid var(--rv-card-rule)}
:is(.rv-table,:where(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container) .wp-block-table) thead th{font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--rv-ink-2);background:var(--rv-bg-3)}
:is(.rv-table,:where(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container) .wp-block-table) tbody tr:last-child td{border-bottom:0}
:is(.rv-table,:where(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container) .wp-block-table) code{font-size:.85em}
/* Callout */
.rv-callout{background:var(--rv-card-solid);border:1px solid var(--rv-card-edge);border-left:3px solid var(--rv-accent);border-radius:14px;padding:1.2rem 1.4rem}
.rv-callout--dark{background:var(--rv-bg-1);color:var(--rv-ink)}
.rv-callout__label{font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-accent-hi);margin:0 0 .5rem}
.rv-callout .rv-body-2+.rv-body-2{margin-top:.6rem}
.rv-callout .rv-body-2{color:var(--rv-ink)}
.rv-callout ul,.rv-callout ol{margin:.6rem 0 0;padding-left:1.2em}
/* Stats */
.rv-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:1rem}
.rv-stats__item{background:var(--rv-card-fill);border:1px solid var(--rv-card-edge);border-top:3px solid var(--rv-accent);border-radius:16px;padding:1.1rem 1.2rem;min-width:0}
.rv-stats__item .rv-stat{font-size:clamp(1.6rem,2.4vw,2.1rem);color:var(--rv-accent-hi)}
.rv-stats__item .rv-stat-label{margin-top:.45rem}
.rv-stats__item .rv-body-2{margin-top:.4rem;font-size:var(--rv-text-small)}
.rv-prose .rv-stats{margin-top:1.6em}
/* Numbered steps: see section 24 */
/* Side-by-side lists */
.rv-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:1rem;margin-top:1.6em}
.rv-columns__col{background:var(--rv-card-solid);border:1px solid var(--rv-card-edge);border-radius:14px;padding:1.1rem 1.3rem}
.rv-columns__col .rv-h3{font-size:1.0625rem;margin:0 0 .5rem}
.rv-columns__col ul{margin:0;padding-left:1.15em;font-size:var(--rv-text-small)}
/* Facts row (published, audience …) */
.rv-facts{display:flex;flex-wrap:wrap;gap:12px 32px;margin:0;padding:0 0 1.2em;border-bottom:1px solid var(--rv-line)}
.rv-facts>div{min-width:0}
.rv-facts dt{font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--rv-ink-3);margin:0}
.rv-facts dd{margin:.25rem 0 0;font-weight:500;font-size:var(--rv-text-small);color:var(--rv-ink)}
/* Contents box */
.rv-toc{background:var(--rv-card-solid);border:1px solid var(--rv-card-edge);border-radius:14px;padding:1rem 1.3rem}
.rv-toc .rv-callout__label{color:var(--rv-ink-3)}
.rv-toc ol{margin:0;padding-left:1.3em;columns:2;column-gap:2rem;font-size:var(--rv-text-small)}
.rv-toc li{break-inside:avoid}
/* Long policy pages and whitepapers: contents in a sticky side column on desktop (QA round 1 #16). */
@media (min-width:1200px){
.rv-prose:has(>.rv-toc){max-width:1100px;display:grid;grid-template-columns:15rem minmax(0,760px);column-gap:3.5rem;align-items:start}
.rv-prose:has(>.rv-toc)>*{grid-column:2}
.rv-prose:has(>.rv-toc)>.rv-toc{grid-column:1;grid-row:1/span 999;position:sticky;top:calc(var(--rv-header-bottom,80px) + 24px);max-height:calc(100vh - var(--rv-header-bottom,80px) - 48px);overflow:auto;margin-top:0}
.rv-prose:has(>.rv-toc)>.rv-toc ol{columns:1}
}
@media (max-width:640px){.rv-toc ol{columns:1}}
/* Resource cards (whitepapers hub) */
.rv-card--resource{display:flex;flex-direction:column;gap:.6rem;border-radius:var(--rv-r-xl);padding:1.6rem}
.rv-card--resource :is(.rv-kicker,.is-style-rv-kicker){margin:0}
.rv-card--resource .rv-h3{margin:0}
.rv-card--resource :is(.rv-fine,.is-style-rv-fine){margin-top:auto;padding-top:.4rem}
.rv-card--resource .rv-card__cta{margin-top:.4rem}
/* Gated recording and HubSpot frame embed */
.rv-video--gated{max-width:900px;margin-inline:auto}
.rv-callout--gate{max-width:620px;margin-inline:auto}
.rv-hs--frame{min-height:320px}
.rv-hs--frame .hs-form-frame{width:100%}

/* 23 · Careers (WP Job Manager; inc/jobs.php) ---------------------------------
   [rv_jobs] rows on /careers/ and /jobs/; job pages use the post reading column (20). */
.rv-rows--jobs .rv-row__title{flex:2 1 280px;max-width:none}
.rv-rows--jobs .rv-row__text{flex:2 1 220px}
.rv-jobs__empty{margin-top:32px}
.rv-jobs__note{margin-top:24px;color:var(--rv-ink-2)}
.rv-jobs__note a{color:var(--rv-accent-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.single-job_listing .entry-content .rv-callout--apply{margin-top:2.4em}
.single-job_listing .entry-content .rv-callout .rv-actions{margin-top:1rem}
.single-job_listing .entry-content .rv-callout--gate{margin-inline:0}
.rv-job__back{font-size:var(--rv-text-small)}

/* 24 · Article components (site/lib/prose.js vocabulary) -----------------------
   Blog posts, webinars and whitepaper reading pages share these; theme patterns
   "Article · …" insert them in the editor. Internals use three-class selectors so
   the reading typography of posts (.single-post .entry-content h3 …) does not leak in. */
:is(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) :is(h2,h3) em{font-style:normal;color:var(--rv-accent-ink)}
:is(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) p:is(.rv-intro,.is-style-rv-intro){font-size:1.1875rem;line-height:1.55;font-weight:500;color:var(--rv-ink)}
:is(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) p:is(.rv-tagline,.is-style-rv-tagline){margin-top:1.6em;padding:14px 20px;border:1px solid var(--rv-card-edge);border-radius:var(--rv-r-pill);background:var(--rv-card-solid);font:600 var(--rv-text-kicker)/1.4 var(--rv-font-mono);letter-spacing:.14em;text-transform:uppercase;text-align:center;color:var(--rv-accent-ink)}
/* Numbered panel: cells divided by hairlines; columns from the container queries below */
.rv-steps{list-style:none;margin:1.6em 0 0;padding:0;display:grid;grid-template-columns:1fr;gap:1px;background:var(--rv-card-edge);border:1px solid var(--rv-card-edge);border-radius:14px;overflow:hidden}
.rv-steps>.rv-step.rv-step{margin:0;padding:1.3rem 1.3rem 1.4rem;background:var(--rv-card-solid);min-width:0}
.rv-steps .rv-step .rv-step__n{display:block;font:500 clamp(1.6rem,1.25rem + 1vw,2rem)/1 var(--rv-font-display);letter-spacing:-.02em;color:var(--rv-accent-ink)}
.rv-steps .rv-step .rv-h3{margin:.75rem 0 .45rem;font:600 1rem/1.35 var(--rv-font-body);letter-spacing:0;color:var(--rv-ink)}
.rv-steps .rv-step .rv-body-2{margin:0;font-size:var(--rv-text-small);line-height:1.6;color:var(--rv-ink-2)}
.rv-steps .rv-step .rv-step__n+.rv-body-2{margin-top:.7rem;color:var(--rv-ink)}
.rv-steps--dark{background:var(--rv-line);border-color:var(--rv-bg-1)}
.rv-steps--dark>.rv-step.rv-step{background:var(--rv-bg-1)}
.rv-steps--dark .rv-step .rv-h3{font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.1em;text-transform:uppercase}
/* Card figure: optional label, cards with label/title/text/tags; flow adds arrows */
.rv-figure{margin:2em 0 0}
.rv-figure .rv-figure__label{margin:0 0 .9rem;font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--rv-accent-ink);text-align:left}
.rv-figcards{display:grid;grid-template-columns:1fr;gap:14px}
.rv-figcards .rv-figcard{position:relative;display:flex;flex-direction:column;gap:.45rem;margin:0;padding:1.1rem 1.2rem 1.2rem;background:var(--rv-card-solid);border:1px solid var(--rv-card-edge);border-top:3px solid var(--rv-accent);border-radius:14px;min-width:0;color:var(--rv-ink)}
.rv-figcards .rv-figcard .rv-figcard__label{margin:0;font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--rv-accent-ink)}
.rv-figcards .rv-figcard .rv-figcard__title{margin:0;font:600 1.0625rem/1.3 var(--rv-font-display);letter-spacing:-.01em;color:var(--rv-ink)}
.rv-figcards .rv-figcard .rv-figcard__text{margin:0;font-size:var(--rv-text-small);line-height:1.65;color:var(--rv-ink-2)}
.rv-figcards .rv-figcard .rv-figcard__tags{margin:auto 0 0;padding-top:.5rem;font:500 .75rem/1.4 var(--rv-font-mono);letter-spacing:.04em;color:var(--rv-ink-3)}
.rv-figcards .rv-figcard--highlight{background:var(--rv-bg-1);border-color:var(--rv-bg-1);border-top-color:var(--rv-accent)}
.rv-figcards--flow{gap:30px}
.rv-figcards--flow>.rv-figcard:not(:nth-last-child(1 of .rv-figcard))::after{content:"\2193";position:absolute;left:50%;bottom:-26px;transform:translateX(-50%);font:600 1.1rem/1 var(--rv-font-body);color:var(--rv-accent-ink)}
/* Columns follow the width of the reading column (container queries), not the window, and
   the number of items (:has), so adding or removing a card in the editor keeps the layout */
:is(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container){container-type:inline-size}
/* Editor canvas in light mode (inc/editor.php adds rv-light to the canvas body): GeneratePress'
   editor colours and the dark colour scheme of the root would otherwise keep it dark */
body.editor-styles-wrapper.rv-light{min-height:100vh;background:var(--rv-bg-0);color:var(--rv-ink)}
html:has(>body.editor-styles-wrapper.rv-light){color-scheme:light}
/* Editor canvas of posts and job pages: the front end's 720px reading column */
.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing) .is-root-container{max-width:calc(720px + 2*var(--rv-gutter));margin-inline:auto;padding-inline:var(--rv-gutter);box-sizing:border-box}
/* Item counts skip the editor's block appender (.block-list-appender), the last child of an
   unlocked component in the editor canvas, so the canvas lays out like the front end */
@container (min-width:480px){
  .rv-steps:has(>:nth-child(2 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))),.rv-figcards:has(>:nth-child(2 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))),.rv-figcards:has(>:nth-child(4 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))),.rv-figcards:has(>:nth-child(6 of :not(.block-list-appender))),.rv-stats:has(>:nth-child(2 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))),.rv-stats:has(>:nth-child(4 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))){grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-figcards--flow>.rv-figcard:not(:nth-last-child(1 of .rv-figcard))::after{content:"\2192";left:auto;right:-22px;bottom:auto;top:50%;transform:translateY(-50%)}
}
@container (min-width:600px){
  .rv-steps:has(>:nth-child(3 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))),.rv-steps:has(>:nth-child(6 of :not(.block-list-appender))),.rv-figcards:has(>:nth-child(3 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))),.rv-figcards:has(>:nth-child(5 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))),.rv-figcards:has(>:nth-child(6 of :not(.block-list-appender))),.rv-stats:has(>:nth-child(3 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))){grid-template-columns:repeat(3,minmax(0,1fr))}
  .rv-steps:has(>:nth-child(4 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))){grid-template-columns:repeat(4,minmax(0,1fr))}
}
@container (min-width:680px){
  .rv-steps:has(>:nth-child(5 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))){grid-template-columns:repeat(5,minmax(0,1fr))}
  .rv-steps:has(>:nth-child(5 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender)))>.rv-step.rv-step{padding:1.1rem .95rem 1.2rem}
}
@container (min-width:960px){
  .rv-figcards:has(>:nth-child(4 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))),.rv-stats:has(>:nth-child(4 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender))){grid-template-columns:repeat(4,minmax(0,1fr))}
}
/* Flow arrows sit between cards only when the cards share one row */
@container (min-width:480px) and (max-width:599.98px){
  .rv-figcards--flow:has(>:nth-child(3 of :not(.block-list-appender)):nth-last-child(1 of :not(.block-list-appender)))>.rv-figcard:not(:nth-last-child(1 of .rv-figcard))::after{content:"\2193";left:50%;right:auto;top:auto;bottom:-26px;transform:translateX(-50%)}
}
/* Closing panel (navy): statement or call to action */
.rv-panel{margin-top:2.2em;padding:2rem 1.8rem;border-radius:18px;background:radial-gradient(120% 140% at 100% 0%,#1B2A3F 0%,var(--rv-bg-1) 55%);text-align:center}
.rv-panel .rv-panel__title{margin:0;font:600 clamp(1.35rem,1.1rem + .9vw,1.75rem)/1.25 var(--rv-font-display);letter-spacing:-.02em;color:var(--rv-ink)}
.rv-panel .rv-panel__text{max-width:36em;margin:.75rem auto 0;font-size:1.0625rem;line-height:1.6;color:var(--rv-ink-2)}
.rv-panel .rv-panel__text:first-child{margin-top:0;font:500 clamp(1.25rem,1.05rem + .8vw,1.6rem)/1.35 var(--rv-font-display);letter-spacing:-.015em;color:var(--rv-ink)}
.rv-panel .rv-panel__text em{font-style:normal;color:var(--rv-accent-ink)}
.rv-panel .rv-actions{justify-content:center;margin-top:1.3rem}
/* Comparison columns and key tables */
.rv-columns .rv-columns__col{border-top:3px solid var(--rv-accent)}
:is(.rv-table--key,.is-style-rv-key) tbody td:first-child{font-weight:600;color:var(--rv-accent-ink)}
/* Pull quotes in posts: the same quote as on reading pages */
:is(.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container) blockquote:is(.rv-quote,.is-style-rv-quote) em,.rv-prose :is(.rv-quote,.is-style-rv-quote) em{font-style:normal;color:var(--rv-accent-ink)}
/* Content-locked component groups (patterns "Article · …"): no GeneratePress group padding;
   the group carries the component's spacing */
.wp-block-group.rv-locked{padding:0;margin-bottom:0}
.wp-block-group.rv-locked>.wp-block-group__inner-container{padding:0;margin:0;max-width:none}
.wp-block-group.rv-locked>:first-child,.wp-block-group.rv-locked>.wp-block-group__inner-container>:first-child{margin-top:0}
*+.wp-block-group.rv-locked{margin-top:1.8em}
/* Spacing and list resets that beat the reading typography of posts and .rv-prose */
.rv-steps.rv-steps.rv-steps{padding:0;margin-left:0;margin-right:0}
:is(.rv-prose,.single-post .entry-content,.single-job_listing .entry-content,:where(.editor-styles-wrapper:is(.post-type-post,.post-type-job_listing)) .is-root-container)>:is(.rv-figure,.rv-steps,.rv-panel,.rv-columns,.rv-stats){margin-top:1.8em}
/* Link panel (rv/link-panel): navy band inside a section, label and sentence left, one button right */
.rv-linkpanel{margin-top:48px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px 40px;padding:24px 28px;border-radius:var(--rv-r-l);background:var(--rv-bg-1);color:var(--rv-ink)}
.rv-linkpanel__text{flex:1 1 380px;max-width:64ch}
.rv-linkpanel__label{margin:0 0 6px;font:600 var(--rv-text-kicker)/1.3 var(--rv-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--rv-ink-3)}
.rv-linkpanel__body{margin:0;color:var(--rv-ink-2)}
.rv-linkpanel .rv-btn{flex:none}
/* A line after a pull quote (quote "after"), aligned with the quote text */
.rv-quote-after{max-width:60ch;margin:1.25rem 0 0;padding-left:calc(1.4rem + 3px);font-size:var(--rv-text-lede);line-height:1.7;color:var(--rv-ink-2)}
/* Home hero visual: agreed vs. booked (rv/outcome-bridge; the outcomes ledger is the backup).
   Bars run from --a to --b percent of the value agreed and grow in turn (--d); the gap box and
   the closing figure fade in last. Without motion everything shows at once. */
.rv-bridge{margin:0;background:var(--rv-card-fill);border:1px solid var(--rv-card-edge);border-top:3px solid var(--rv-accent);border-radius:20px;padding:1rem 1.4rem .9rem;box-shadow:0 30px 60px -30px rgba(0,0,0,.7)}
.rv-br-top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:.6rem;border-bottom:1px solid var(--rv-line)}
.rv-br-kicker{margin:0;font:600 .66rem/1.3 var(--rv-font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--rv-accent-hi)}
.rv-br-title{margin:.2rem 0 0;font:600 1.08rem/1.25 var(--rv-font-display);letter-spacing:-.02em;color:var(--rv-ink)}
.rv-br-tag{flex-shrink:0;font-size:.7rem;color:var(--rv-ink-2);border:1px solid var(--rv-card-edge);border-radius:var(--rv-r-pill);padding:.25rem .65rem;white-space:nowrap}
.rv-br-rows{list-style:none;margin:0;padding:.2rem 0 0}
/* Beside the copy, the panel runs from the top of the headline to the bottom of the stat boxes; the rows share the extra height. */
.rv-hero__grid>.rv-bridge{align-self:stretch;display:flex;flex-direction:column}
.rv-hero__grid>.rv-bridge>.rv-br-rows{flex:1;display:flex;flex-direction:column;justify-content:space-around}
/* With a kicker above the headline, the panel still starts level with the headline (kicker line plus its gap). */
@media (min-width:960px){.rv-hero__copy:has(>.rv-kicker)+.rv-bridge{margin-top:calc(var(--rv-text-kicker) * 1.2 + var(--rv-s3))}}
.rv-br-row{padding:.45rem 0 0;margin:0}
.rv-br-lab{display:flex;justify-content:space-between;align-items:baseline;gap:.3rem 1rem;flex-wrap:wrap}
.rv-br-name{font-size:.86rem;font-weight:600;color:var(--rv-ink)}
.rv-br-range{font-size:.74rem;font-weight:600;color:var(--rv-accent-hi);font-variant-numeric:tabular-nums;white-space:nowrap}
/* "The gap Rivvun closes": a solid orange pill with white text (orange text on the card was 3.4:1, white on
   #C14100 is 5.3:1), and the gap on the bar striped in orange so it reads from across the panel. */
.rv-br-range--gap{background:var(--rv-accent);color:#fff;border-radius:var(--rv-r-pill);padding:.2rem .65rem;font-size:.76rem}
.rv-br-sub{display:block;margin-top:0;font-size:.72rem;line-height:1.35;color:var(--rv-ink-2)}
.rv-br-track{position:relative;height:10px;margin-top:.3rem;border-radius:3px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 1px,transparent 1px 10%)}
.rv-br-bar,.rv-br-gap{position:absolute;top:0;bottom:0;left:calc(var(--a) * 1%);width:calc((var(--b) - var(--a)) * 1%);border-radius:3px}
.rv-br-row--start .rv-br-bar{background:linear-gradient(90deg,#5B6370,#8A919C)}
.rv-br-row--leak .rv-br-bar{background:linear-gradient(90deg,var(--rv-accent),var(--rv-accent-hi))}
.rv-br-row--leak .rv-br-track::before{content:"";position:absolute;top:0;bottom:0;left:0;width:calc(var(--a) * 1%);border-radius:3px;background:rgba(138,145,156,.16)}
.rv-br-row--end .rv-br-bar{background:linear-gradient(90deg,#3E4550,#5B6370)}
.rv-br-gap{top:-3px;bottom:-3px;border:1.5px solid var(--rv-accent);background:repeating-linear-gradient(135deg,rgba(193,65,0,.55) 0 4px,rgba(193,65,0,.18) 4px 8px)}
.rv-br-so{display:flex;align-items:center;gap:.9rem;margin-top:.75rem;padding-top:.7rem;border-top:1px solid var(--rv-line)}
.rv-br-so__fig{margin:0;flex-shrink:0;font:600 1.7rem/1 var(--rv-font-display);letter-spacing:-.03em;color:var(--rv-accent-hi)}
.rv-br-so__text{margin:0;font-size:.8rem;line-height:1.4;color:var(--rv-ink)}
.rv-br-cap{margin-top:.5rem;font-size:.68rem;line-height:1.4;color:var(--rv-ink-3)}
/* Side by side, the panel sits a little higher than the copy (it is the taller column), as the ledger did */
@keyframes rv-br-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes rv-br-fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:no-preference){
  .rv-br-bar{transform-origin:left;animation:rv-br-grow 1.1s cubic-bezier(.2,.7,.2,1) var(--d,0s) both}
  .rv-br-row--leak .rv-br-bar{transform-origin:right;animation-duration:.8s}
  .rv-br-row--leak .rv-br-track::before{animation:rv-br-fade .7s ease var(--d,0s) both}
  .rv-br-gap,.rv-br-range--gap{animation:rv-br-fade .8s ease 3.5s both}
  .rv-br-so{animation:rv-br-fade .8s ease 3.8s both}
}
@media (max-width:560px){
  .rv-bridge{padding:1.2rem 1.1rem 1rem}
  .rv-br-top{flex-direction:column;gap:.6rem}
  .rv-br-so__fig{font-size:1.6rem}
}
/* Trust card (rv/backers) beside the home closing call to action: the card takes the height of the
   text beside it (rv-split--stretch), the logo tiles fill it */
.rv-split--stretch{align-items:stretch}
.rv-trust{display:flex;flex-direction:column;background:var(--rv-card-fill);border:1px solid var(--rv-card-edge);border-radius:var(--rv-r-xl);padding:26px 28px;box-shadow:var(--rv-shadow-1)}
.rv-trust__label{margin:0 0 18px;font:600 clamp(1.25rem,1.05rem + .6vw,1.5rem)/1.2 var(--rv-font-display);letter-spacing:-.02em;color:var(--rv-ink)}
.rv-trust__names{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-auto-rows:minmax(110px,1fr);gap:12px}
.rv-trust__name{display:flex;align-items:center;justify-content:center;margin:0;padding:18px;border:1px solid var(--rv-card-edge);border-radius:var(--rv-r-l);background:rgba(255,255,255,.02);font:600 1.3rem/1.2 var(--rv-font-display);letter-spacing:-.02em;text-align:center;color:var(--rv-ink)}
.rv-trust__logo{display:block;width:auto;height:auto;max-width:78%;max-height:64px}
.rv-trust__note{margin:20px 0 0;padding-top:16px;border-top:1px solid var(--rv-line);font-size:var(--rv-text-small);color:var(--rv-ink-2)}
