/* ==========================================================================
   RUPESH RAJAN — INTELLIGENCE PAPERS
   Publication design system. Loaded on /insights, /insights/<paper> and on
   the home page (for the Intelligence Papers section only).

   Everything is scoped to `.rr-insights` so the publication identity never
   leaks into the rest of rupeshrajan.com. On publication pages the class sits
   on <body>; on the home page it sits on the section wrapper.

   Colour discipline
   -----------------
   Electric blue  = systems, data, intelligence, connections.
   Signal orange  = critical insights, chapter markers, primary actions.
   Neither is used for small text on light backgrounds — the `-ink` variants
   are the darkened, WCAG-AA-safe versions for that job.
   ========================================================================== */

/* Metric-matched stand-in for Source Serif 4, so the masthead does not reflow
   when the webfont arrives. Overrides are Source Serif 4's own hhea values
   (upm 1000, asc 1036, desc -335, gap 0); size-adjust compensates for
   Georgia's wider glyphs. */
@font-face{
  font-family:'IP Serif Fallback';
  src:local('Georgia'),local('Times New Roman'),local('Times');
  size-adjust:97%;
  ascent-override:103.6%;
  descent-override:33.5%;
  line-gap-override:0%;
}

.rr-insights{
  /* core palette */
  --ip-navy:#071522;
  --ip-deep:#0D2740;
  --ip-blue:#00B8F5;
  --ip-orange:#FF7849;
  --ip-ice:#F5F8FC;
  --ip-graphite:#17202A;
  /* #667789 is the brief's slate grey; used for small metadata it lands at
     4.32:1 on the ice surface, so the token is a shade darker to clear AA */
  --ip-slate:#61707F;

  /* accessible ink variants for small text on light surfaces */
  --ip-blue-ink:#00658C;
  --ip-orange-ink:#C1421F;

  /* surfaces + lines */
  --ip-paper:#ffffff;
  /* the shade behind the home page's title block — tune here */
  --ip-band:#E9EFF6;
  --ip-line:#dde5ef;
  --ip-line-strong:#c3d0de;
  --ip-line-dark:rgba(255,255,255,.13);
  --ip-ice-dim:#8ea3ba;

  /* type */
  --ip-serif:'Source Serif 4','IP Serif Fallback',Georgia,'Times New Roman',serif;
  --ip-display:'Poppins','Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --ip-body:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --ip-mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  /* rhythm */
  --ip-shell:1200px;
  --ip-read:720px;
  --ip-gap:clamp(56px, 7vw, 104px);
  --ip-radius:14px;
  --ip-radius-lg:20px;

  font-family:var(--ip-body);
  color:var(--ip-graphite);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

body.rr-insights{background:var(--ip-paper);line-height:1.6}

/* --------------------------------------------------------------------------
   Layout primitives
   -------------------------------------------------------------------------- */
/* position + z-index keep section content above the decorative grid backdrop */
.rr-insights .ip-shell{
  max-width:var(--ip-shell);margin:0 auto;padding:0 24px;
  position:relative;z-index:1;
}
/* Grid items default to min-width:auto, so one unbreakable child (a <select>
   sized by its longest option, a long mono label) can push a track wider than
   the viewport. Every grid in this stylesheet opts out. */
.rr-insights .ip-hero-inner > *,
.rr-insights .ip-feature-grid > *,
.rr-insights .ip-featured > *,
.rr-insights .ip-subscribe > *,
.rr-insights .ip-assess > *,
.rr-insights .ip-assess-item > *,
.rr-insights .ip-author > *,
.rr-insights .ip-audience > *,
.rr-insights .ip-mat-stage > *,
.rr-insights .ip-phase > *,
.rr-insights .ip-fw-detail > *,
.rr-insights .ip-takeaway,
.rr-insights .ip-card{min-width:0}
.rr-insights .ip-field select{max-width:100%}

/* the site header is sticky — keep anchored targets clear of it */
.rr-insights [id]{scroll-margin-top:96px}
.rr-insights .ip-sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.rr-insights .ip-read{max-width:var(--ip-read);margin:0 auto}
.rr-insights .ip-section{padding:var(--ip-gap) 0}
.rr-insights .ip-section--tight{padding:calc(var(--ip-gap) * .62) 0}
.rr-insights .ip-section--ice{background:var(--ip-ice)}
.rr-insights .ip-section--paper{background:var(--ip-paper)}
/* position + overflow are required: dark sections host the absolutely
   positioned .ip-grid-bg, which otherwise escapes onto the light sections
   above and below it. */
.rr-insights .ip-section--dark{
  background:var(--ip-navy);color:var(--ip-ice);position:relative;overflow:hidden;
}
.rr-insights .ip-section--deep{
  background:var(--ip-deep);color:var(--ip-ice);position:relative;overflow:hidden;
}
.rr-insights .ip-section--dark p,
.rr-insights .ip-section--deep p{color:#bdcddd}

/* the breathing space between movements of the paper */
.rr-insights .ip-rule{
  height:1px;background:var(--ip-line);border:0;margin:0;
}
.rr-insights .ip-breather{
  padding:clamp(30px,5vw,52px) 0;background:var(--ip-paper);
}
.rr-insights .ip-breather-mark{
  display:block;width:34px;height:2px;margin:0 auto;background:var(--ip-orange);
}

/* --------------------------------------------------------------------------
   Type atoms
   -------------------------------------------------------------------------- */
.rr-insights .ip-eyebrow{
  font-family:var(--ip-mono);
  font-size:11.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ip-blue-ink);
  display:flex;align-items:center;gap:12px;margin:0 0 18px;
}
.rr-insights .ip-eyebrow::before{
  content:"";width:26px;height:2px;background:var(--ip-orange);flex:0 0 auto;
}
.rr-insights .ip-eyebrow--center{justify-content:center}
.rr-insights .ip-section--dark .ip-eyebrow,
.rr-insights .ip-section--deep .ip-eyebrow,
.rr-insights .ip-hero .ip-eyebrow{color:var(--ip-blue)}

.rr-insights .ip-meta{
  font-family:var(--ip-mono);
  font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ip-slate);
}
.rr-insights .ip-section--dark .ip-meta,
.rr-insights .ip-section--deep .ip-meta{color:var(--ip-ice-dim)}

.rr-insights h1,.rr-insights h2,.rr-insights h3,
.rr-insights h4,.rr-insights h5{
  font-family:var(--ip-display);font-weight:600;
  color:var(--ip-navy);line-height:1.16;letter-spacing:-.02em;margin:0;
}
.rr-insights .ip-section--dark h2,.rr-insights .ip-section--dark h3,
.rr-insights .ip-section--dark h4,.rr-insights .ip-section--deep h2,
.rr-insights .ip-section--deep h3,.rr-insights .ip-section--deep h4{color:#fff}

.rr-insights .ip-h1{font-size:clamp(34px,5.2vw,62px);font-weight:700;line-height:1.06}
.rr-insights .ip-h2{font-size:clamp(27px,3.4vw,42px)}
.rr-insights .ip-h3{font-size:clamp(20px,2.2vw,26px)}
.rr-insights .ip-lede{
  font-size:clamp(16px,1.35vw,18.5px);line-height:1.68;color:#3d4b5a;
  max-width:56ch;
}
.rr-insights .ip-section--dark .ip-lede,
.rr-insights .ip-section--deep .ip-lede{color:#c3d2e2}

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */
.rr-insights .ip-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--ip-body);font-size:14.5px;font-weight:600;line-height:1.2;
  padding:14px 24px;border-radius:10px;border:1.5px solid transparent;
  cursor:pointer;transition:background .2s,border-color .2s,color .2s,transform .2s;
  text-decoration:none;white-space:nowrap;
}
.rr-insights .ip-btn svg{width:16px;height:16px;flex:0 0 auto}
.rr-insights .ip-btn-primary{background:var(--ip-orange);color:var(--ip-navy)}
.rr-insights .ip-btn-primary:hover{background:#ff8f68;transform:translateY(-1px);color:var(--ip-navy)}
.rr-insights .ip-btn-ghost{
  background:transparent;color:var(--ip-ice);border-color:rgba(245,248,252,.34);
}
.rr-insights .ip-btn-ghost:hover{border-color:var(--ip-blue);color:#fff;background:rgba(0,184,245,.10)}
.rr-insights .ip-btn-outline{
  background:transparent;color:var(--ip-deep);border-color:var(--ip-line-strong);
}
.rr-insights .ip-btn-outline:hover{border-color:var(--ip-deep);background:var(--ip-ice)}
.rr-insights .ip-btn-solid{background:var(--ip-deep);color:#fff}
.rr-insights .ip-btn-solid:hover{background:var(--ip-navy);color:#fff;transform:translateY(-1px)}
.rr-insights .ip-actions{display:flex;flex-wrap:wrap;gap:14px}

.rr-insights a{color:inherit;text-decoration:none}
.rr-insights :focus-visible{
  outline:2px solid var(--ip-blue);outline-offset:3px;border-radius:4px;
}
.rr-insights .ip-section--dark :focus-visible,
.rr-insights .ip-hero :focus-visible{outline-color:var(--ip-orange)}

/* --------------------------------------------------------------------------
   Architectural backdrop — grid + drifting flow lines. Used on dark sections.
   -------------------------------------------------------------------------- */
/* Faded out across the reading column so the decoration never competes with
   the copy — the architectural energy sits on the side carrying the cover. */
.rr-insights .ip-grid-bg{
  position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;
  -webkit-mask-image:linear-gradient(100deg,transparent 4%,rgba(0,0,0,.28) 28%,#000 58%);
  mask-image:linear-gradient(100deg,transparent 4%,rgba(0,0,0,.28) 28%,#000 58%);
}
.rr-insights .ip-grid-bg::before{
  content:"";position:absolute;inset:-2px;
  background-image:
    linear-gradient(to right,rgba(0,184,245,.085) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(0,184,245,.085) 1px,transparent 1px);
  background-size:64px 64px;
  -webkit-mask-image:radial-gradient(ellipse 90% 78% at 62% 34%,#000 12%,transparent 76%);
  mask-image:radial-gradient(ellipse 90% 78% at 62% 34%,#000 12%,transparent 76%);
}
.rr-insights .ip-grid-bg svg{position:absolute;inset:0;width:100%;height:100%}
.rr-insights .ip-flow-line{
  stroke:var(--ip-blue);stroke-width:1.1;fill:none;opacity:.42;
  stroke-dasharray:5 190;
  animation:ip-flow 11s linear infinite;
}
.rr-insights .ip-flow-line.is-2{animation-delay:-3.6s;opacity:.3}
.rr-insights .ip-flow-line.is-3{animation-delay:-7.2s;stroke:var(--ip-orange);opacity:.34}
@keyframes ip-flow{from{stroke-dashoffset:390}to{stroke-dashoffset:0}}
.rr-insights .ip-node{fill:var(--ip-blue);opacity:.5}
.rr-insights .ip-node--accent{fill:var(--ip-orange);opacity:.7}

/* --------------------------------------------------------------------------
   PaperCover — the reusable publication cover (pure SVG, crisp at any DPI)
   -------------------------------------------------------------------------- */
.rr-insights .ip-cover{
  display:block;width:100%;height:auto;
  border-radius:6px;
  box-shadow:0 30px 60px -22px rgba(4,14,26,.62),0 2px 6px rgba(4,14,26,.3);
  background:var(--ip-navy);
}
.rr-insights .ip-cover-frame{position:relative;width:100%}
/* the fine technical labels are unreadable below ~300px of rendered width */
.rr-insights .ip-cover--compact .ip-cover-fine{display:none}

/* angled 3-D presentation used in the paper hero */
.rr-insights .ip-cover-3d{
  perspective:1600px;width:100%;max-width:390px;margin-inline:auto;
}
.rr-insights .ip-cover-3d .ip-cover{
  transform:rotateY(-15deg) rotateX(4deg) rotateZ(-1.2deg);
  transform-origin:center;
  transition:transform .5s cubic-bezier(.22,.68,.35,1);
  box-shadow:
    -22px 34px 64px -20px rgba(0,0,0,.7),
    -2px 2px 0 0 rgba(255,255,255,.07);
}
.rr-insights .ip-cover-3d:hover .ip-cover{transform:rotateY(-8deg) rotateX(2deg) rotateZ(-.5deg)}
/* the page-block edge that makes it read as a printed document */
.rr-insights .ip-cover-3d .ip-cover-frame::after{
  content:"";position:absolute;top:2.4%;bottom:2.4%;right:-9px;width:9px;
  background:linear-gradient(to right,#dfe7f1,#f7fafd 42%,#b9c6d6);
  transform:rotateY(-15deg) rotateX(4deg) rotateZ(-1.2deg) translateZ(-1px) skewY(-2.6deg);
  transform-origin:left center;border-radius:0 3px 3px 0;opacity:.85;
  transition:transform .5s cubic-bezier(.22,.68,.35,1);
}
.rr-insights .ip-cover-3d:hover .ip-cover-frame::after{
  transform:rotateY(-8deg) rotateX(2deg) rotateZ(-.5deg) translateZ(-1px) skewY(-1.4deg);
}

/* --------------------------------------------------------------------------
   PublicationCard
   -------------------------------------------------------------------------- */
.rr-insights .ip-card{
  display:flex;flex-direction:column;position:relative;
  background:var(--ip-paper);border:1px solid var(--ip-line);
  border-radius:var(--ip-radius);overflow:hidden;
  transition:border-color .22s,box-shadow .22s,transform .22s;
}
.rr-insights .ip-card--link:hover{
  transform:translateY(-4px);border-color:var(--ip-line-strong);
  box-shadow:0 20px 44px -24px rgba(7,21,34,.45);
}
.rr-insights .ip-card-cover{
  background:var(--ip-navy);padding:22px 22px 0;
  border-bottom:1px solid var(--ip-line);
}
.rr-insights .ip-card-cover .ip-cover{
  box-shadow:0 -14px 34px -18px rgba(0,0,0,.9);border-radius:5px 5px 0 0;
}
.rr-insights .ip-card-body{padding:20px 22px 22px;display:flex;flex-direction:column;flex:1}
.rr-insights .ip-card-meta{
  display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin-bottom:13px;
}
.rr-insights .ip-card-no{
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.13em;
  color:var(--ip-blue-ink);text-transform:uppercase;
}
.rr-insights .ip-card-cat{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.11em;
  text-transform:uppercase;color:var(--ip-slate);
  padding-left:12px;border-left:1px solid var(--ip-line-strong);
}
.rr-insights .ip-card h3{font-size:19px;line-height:1.28;margin-bottom:9px}
.rr-insights .ip-card p{font-size:14px;line-height:1.62;color:#4e5c6b;margin:0 0 18px}
.rr-insights .ip-card-foot{
  margin-top:auto;padding-top:15px;border-top:1px solid var(--ip-line);
  display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.rr-insights .ip-card-facts{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.08em;
  color:var(--ip-slate);text-transform:uppercase;line-height:1.5;
}
.rr-insights .ip-card-go{
  display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;
  font-size:13px;font-weight:600;color:var(--ip-deep);
}
.rr-insights .ip-card-go svg{width:15px;height:15px;transition:transform .22s}
.rr-insights .ip-card--link:hover .ip-card-go{color:var(--ip-orange-ink)}
.rr-insights .ip-card--link:hover .ip-card-go svg{transform:translateX(4px)}

/* status flag */
.rr-insights .ip-flag{
  position:absolute;top:14px;right:14px;z-index:2;
  font-family:var(--ip-mono);font-size:10px;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;
  padding:5px 10px;border-radius:3px;
}
.rr-insights .ip-flag--featured{background:var(--ip-orange);color:var(--ip-navy)}
.rr-insights .ip-flag--new{background:var(--ip-blue);color:var(--ip-navy)}
.rr-insights .ip-flag--available{background:rgba(245,248,252,.16);color:var(--ip-ice)}
.rr-insights .ip-flag--coming_soon{
  background:rgba(7,21,34,.72);color:#c3d2e2;border:1px solid rgba(255,255,255,.22);
}

/* upcoming publications read as drafts, not as products */
.rr-insights .ip-card--soon{border-style:dashed;background:#fbfcfe}
.rr-insights .ip-card--soon .ip-card-cover{opacity:.5;filter:saturate(.35)}
.rr-insights .ip-card--soon h3{color:#3d4b5a}
.rr-insights .ip-card-soon-note{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ip-slate);
}

/* ==========================================================================
   Featured Intelligence Papers — the home page section, below the hero

   Columns, one per paper. Light and editorial rather than a dark block: the
   hero above ends in a pale blue, so a near-white surface separates the two
   without a hard break, and the covers supply the contrast.
   ========================================================================== */
.rr-insights.ip-feature{
  position:relative;background:var(--ip-paper);
  padding:clamp(52px,6vw,84px) 0 clamp(48px,5.5vw,76px);
  scroll-margin-top:96px;              /* clears the 74px sticky header */
}
/* a whisper of the hero's tint, so the seam reads as intentional */
.rr-insights.ip-feature::before{
  content:"";position:absolute;top:0;left:0;right:0;height:120px;
  background:linear-gradient(180deg,rgba(226,236,250,.55),transparent);
  pointer-events:none;
}
.rr-insights.ip-feature .ip-shell{position:relative;z-index:1}

/* --- section head: heading left, standfirst and library link right ---
   The title block carries its own shade; the rule it used to sit on is gone,
   since the panel now does that job. */
.rr-insights .ip-feature-head{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(20px,3vw,54px);align-items:end;
  background:var(--ip-band);border-radius:var(--ip-radius);
  padding:clamp(26px,3vw,36px) clamp(24px,3vw,38px);
  margin-bottom:clamp(28px,3.4vw,40px);
}
.rr-insights .ip-feature-head h2{margin:0}
.rr-insights .ip-feature-intro{
  font-size:clamp(15px,1.3vw,16.5px);line-height:1.7;color:#4e5c6b;margin:0;
}
.rr-insights .ip-feature-all{margin:16px 0 0}
/* the two secondary actions share one wrapping row, so the link keeps the
   row's spacing rather than its own */
.rr-insights .ip-feature-actions{
  display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin-top:16px;
}
.rr-insights .ip-feature-actions .ip-feature-all{margin:0}
.rr-insights .ip-feature-all a{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ip-blue-ink);
}
.rr-insights .ip-feature-all svg{width:13px;height:13px;transition:transform .2s}
.rr-insights .ip-feature-all a:hover svg{transform:translateX(4px)}

/* FollowButton — the LinkedIn newsletter the series is announced in.
   LinkedIn supplies a 200px blue pill set in SF Pro. It is not used: a brand
   slab dropped into this panel would outrank "Explore the Paper", which is the
   section's actual primary action, and it carries a typeface the site does not
   load. The chip below is built from this stylesheet's own tokens and matches
   the mono library link beside it; only the glyph keeps LinkedIn's blue, which
   is the part that makes it recognisable. */
.rr-insights .ip-follow{
  display:inline-flex;align-items:center;gap:9px;
  padding:9px 16px;border-radius:999px;
  border:1px solid var(--ip-line-strong);background:var(--ip-paper);
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ip-deep);white-space:nowrap;
  transition:border-color .2s,background .2s,color .2s;
}
.rr-insights .ip-follow:hover{
  border-color:var(--ip-deep);background:var(--ip-ice);color:var(--ip-navy);
}
.rr-insights .ip-follow svg{width:15px;height:15px;flex:0 0 auto;color:#0A66C2}

/* --- the paper columns --- */
.rr-insights .ip-feature-grid{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));
  gap:clamp(28px,3.4vw,44px);
}
.rr-insights .ip-pcard{min-width:0;display:flex;flex-direction:column}

/* register line — the cover sits directly beneath it */
.rr-insights .ip-pcard-register{
  display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;
  padding-bottom:14px;margin-bottom:22px;border-bottom:2px solid var(--ip-navy);
}
.rr-insights .ip-pcard-no{
  font-family:var(--ip-mono);font-size:12px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ip-orange-ink);
}
/* status carries an icon and a word — never colour alone */
.rr-insights .ip-pcard-status{
  display:inline-flex;align-items:center;gap:7px;
  font-family:var(--ip-mono);font-size:10px;letter-spacing:.13em;
  text-transform:uppercase;color:#4d5c6c;
  padding:4px 10px;border:1px solid var(--ip-line-strong);border-radius:3px;
}
.rr-insights .ip-pcard-status svg{width:12px;height:12px;flex:0 0 auto;color:var(--ip-blue-ink)}

.rr-insights .ip-pcard-body{display:grid;gap:26px;align-items:start}
.rr-insights .ip-pcard-cover{display:block;width:100%;max-width:230px}
.rr-insights .ip-pcard-content{min-width:0}

.rr-insights .ip-pcard-title{
  font-size:clamp(20px,2.1vw,25px);line-height:1.22;margin:0 0 10px;
}
.rr-insights .ip-pcard-title a{transition:color .2s}
.rr-insights .ip-pcard-title a:hover{color:var(--ip-blue-ink)}
.rr-insights .ip-pcard-subtitle{
  font-family:var(--ip-display);font-weight:400;font-size:15px;line-height:1.5;
  color:var(--ip-blue-ink);margin:0 0 14px;
}
.rr-insights .ip-pcard-summary{
  font-size:15px;line-height:1.7;color:#4e5c6b;margin:0 0 18px;
}
.rr-insights .ip-pcard-tags{
  list-style:none;display:flex;flex-wrap:wrap;gap:7px;margin:0 0 22px;padding:0;
}
.rr-insights .ip-pcard-tags li{
  font-family:var(--ip-mono);font-size:10px;letter-spacing:.11em;
  text-transform:uppercase;color:#4d5c6c;
  background:var(--ip-ice);border:1px solid var(--ip-line);
  border-radius:3px;padding:6px 10px;
}
.rr-insights .ip-pcard-actions{
  display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;
}
.rr-insights .ip-pcard-pending{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ip-slate);margin:0;
}
.rr-insights .ip-pcard-edition{
  margin:20px 0 0;padding-top:14px;border-top:1px solid var(--ip-line);
  font-family:var(--ip-mono);font-size:10px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ip-slate);
}

/* --- a forthcoming paper: announced, but nothing to click yet --- */
.rr-insights .ip-pcard--soon .ip-pcard-register{border-bottom-color:var(--ip-line-strong)}
.rr-insights .ip-pcard--soon .ip-pcard-no{color:var(--ip-slate)}
.rr-insights .ip-pcard--soon .ip-pcard-cover{opacity:.62;filter:saturate(.4)}
.rr-insights .ip-pcard--soon .ip-pcard-cover .ip-cover{box-shadow:0 18px 40px -26px rgba(4,14,26,.5)}
.rr-insights .ip-pcard--soon .ip-pcard-title{color:#3d4b5a}
.rr-insights .ip-pcard-forthcoming{
  display:inline-flex;align-items:center;gap:9px;margin:0;
  padding:11px 14px;border:1px dashed var(--ip-line-strong);border-radius:8px;
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.11em;
  text-transform:uppercase;color:#4d5c6c;background:#fbfcfe;
}
.rr-insights .ip-pcard-forthcoming svg{width:13px;height:13px;flex:0 0 auto;color:var(--ip-slate)}

/* One paper would leave two thirds of the row empty, so its card splits
   internally. The moment a second paper is published this rule stops applying
   and both become stacked columns — no layout work needed to release it. */
.rr-insights .ip-feature-grid.is-single .ip-pcard-body{
  grid-template-columns:290px minmax(0,1fr);gap:clamp(30px,4vw,56px);
}
.rr-insights .ip-feature-grid.is-single .ip-pcard-cover{max-width:290px}

/* entrance: opacity and transform only, so nothing reflows */
.ip-js .rr-insights.ip-feature[data-ip-reveal]{
  opacity:0;transform:translateY(14px);
  transition:opacity .7s ease,transform .7s cubic-bezier(.22,.68,.35,1);
  /* Structural failsafe. The observer normally reveals this on scroll, but an
     entrance effect must never be the reason content stays unreadable — if it
     has not fired within 2.5s, CSS alone shows the section. No JS required. */
  animation:ip-reveal-failsafe 1ms linear 2.5s forwards;
}
@keyframes ip-reveal-failsafe{to{opacity:1;transform:none}}
.ip-js .rr-insights.ip-feature[data-ip-reveal].is-revealed{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .ip-js .rr-insights.ip-feature[data-ip-reveal]{opacity:1;transform:none}
}

@media (max-width:1040px){
  .rr-insights .ip-feature-head{grid-template-columns:1fr;gap:16px;align-items:start}
  .rr-insights .ip-feature-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
  .rr-insights .ip-feature-grid.is-single .ip-pcard-body{
    grid-template-columns:240px minmax(0,1fr);gap:32px;
  }
  .rr-insights .ip-feature-grid.is-single .ip-pcard-cover{max-width:240px}
}
@media (max-width:760px){
  /* stack everywhere; the cover never grows larger than the copy it supports */
  .rr-insights .ip-feature-grid,
  .rr-insights .ip-feature-grid.is-single .ip-pcard-body{grid-template-columns:1fr}
  .rr-insights .ip-feature-grid.is-single .ip-pcard-body{gap:24px}
  .rr-insights .ip-pcard-cover,
  .rr-insights .ip-feature-grid.is-single .ip-pcard-cover{max-width:200px}
  .rr-insights .ip-pcard-cover .ip-cover{transform:none}
  .rr-insights .ip-pcard-cover .ip-cover-frame::after{display:none}
}
@media (max-width:560px){
  .rr-insights .ip-pcard-actions .ip-btn{flex:1 1 100%;justify-content:center}
  .rr-insights .ip-pcard-pending{flex:1 1 100%}
}

/* ==========================================================================
   Publication masthead — the opening page of the series (/papers)

   Composed as a journal front matter block rather than a landing-page hero:
   author identity, masthead, proposition, description, fields, then the
   series statement handing off to the featured paper. The register column
   carries the archival metadata.
   ========================================================================== */
.rr-insights .ip-masthead{
  position:relative;overflow:hidden;background:var(--ip-navy);color:var(--ip-ice);
  padding:clamp(46px,6vw,84px) 0 clamp(28px,3.4vw,44px);
  border-bottom:1px solid rgba(255,255,255,.09);
}
.rr-insights .ip-masthead-grid{
  display:grid;grid-template-columns:minmax(0,1fr) 236px;
  gap:clamp(30px,5vw,68px);align-items:start;
}
.rr-insights .ip-masthead-grid > *{min-width:0}

/* 1 — author identity */
.rr-insights .ip-masthead-author{
  display:flex;align-items:center;gap:13px;
  font-family:var(--ip-display);font-size:clamp(11.5px,1.1vw,13px);font-weight:600;
  letter-spacing:.3em;text-transform:uppercase;color:#e2ecf6;margin:0 0 20px;
}
.rr-insights .ip-masthead-marker{
  width:9px;height:9px;flex:0 0 auto;background:var(--ip-orange);
}

/* thin rules — the structural device of the whole block */
.rr-insights .ip-rule{
  height:0;border:0;border-top:1px solid rgba(255,255,255,.15);margin:0;
}
.rr-insights .ip-rule--lead{
  position:relative;border-top-color:rgba(255,255,255,.3);
}
.rr-insights .ip-rule--lead::before{
  content:"";position:absolute;top:-1px;left:0;width:96px;height:2px;
  background:var(--ip-blue);
}

/* 2 — the masthead itself: the dominant identity on the page */
.rr-insights .ip-masthead-title{
  font-family:var(--ip-serif);font-weight:600;
  font-size:clamp(31px,5.7vw,72px);line-height:1.02;letter-spacing:.012em;
  text-transform:uppercase;color:#fff;
  margin:clamp(18px,2.4vw,30px) 0 clamp(20px,2.6vw,32px);
  text-wrap:balance;
}

/* 3 — formal editorial proposition */
.rr-insights .ip-masthead-proposition{
  font-family:var(--ip-serif);font-weight:400;
  font-size:clamp(17.5px,2vw,26px);line-height:1.44;color:#e8f1f9;
  max-width:34ch;margin:clamp(20px,2.4vw,28px) 0 0;
}

/* 4 — publication description */
.rr-insights .ip-masthead-description{
  font-family:var(--ip-body);font-size:clamp(14.5px,1.15vw,15.5px);
  line-height:1.72;color:#a4b7ca;max-width:64ch;margin:16px 0 clamp(22px,2.6vw,30px);
}

/* 5 — research fields and year */
.rr-insights .ip-masthead-fields{
  font-family:var(--ip-mono);font-size:clamp(10px,1vw,11.5px);
  letter-spacing:.17em;text-transform:uppercase;color:#93a8bc;
  margin:16px 0 0;line-height:2;
}
.rr-insights .ip-masthead-fields span{white-space:nowrap}
.rr-insights .ip-masthead-fields span::after{
  /* generated content is announced by some screen readers, so the separator
     clears AA on navy rather than sitting at a decorative 3:1 */
  content:"·";color:#6d8296;margin-left:10px;
}
.rr-insights .ip-masthead-fields b{color:var(--ip-blue);font-weight:400}

/* register column — archival metadata, deliberately quiet */
.rr-insights .ip-masthead-register{
  border-left:1px solid rgba(255,255,255,.13);
  padding-left:clamp(20px,2vw,28px);padding-top:4px;
}
.rr-insights .ip-masthead-register dl{margin:0;display:grid;gap:18px}
.rr-insights .ip-masthead-register dt{
  font-family:var(--ip-mono);font-size:9.5px;letter-spacing:.2em;
  text-transform:uppercase;color:#8296a9;margin-bottom:6px;
}
.rr-insights .ip-masthead-register dd{
  margin:0;font-family:var(--ip-body);font-size:12.5px;line-height:1.5;color:#dbe7f2;
}

/* 6 — series statement, and the handoff into the featured paper */
/* The series statement sits on a measured rule — a dimension line rather than
   a plain divider, with every fourth tick struck longer. */
.rr-insights .ip-masthead-series{
  position:relative;
  display:flex;align-items:baseline;justify-content:space-between;gap:20px 32px;
  flex-wrap:wrap;
  margin-top:clamp(30px,4vw,52px);padding-top:24px;
  border-top:1px solid rgba(255,255,255,.15);
}
.rr-insights .ip-masthead-series::before{
  content:"";position:absolute;top:0;left:0;right:0;height:11px;
  background-image:
    repeating-linear-gradient(to right,rgba(210,228,242,.34) 0 1px,transparent 1px 328px),
    repeating-linear-gradient(to right,rgba(210,228,242,.18) 0 1px,transparent 1px 82px);
  background-size:100% 11px,100% 6px;
  background-repeat:no-repeat;
  pointer-events:none;
}
.rr-insights .ip-masthead-statement{
  font-family:var(--ip-serif);font-style:italic;font-weight:400;
  font-size:clamp(14.5px,1.5vw,18px);line-height:1.5;color:#cfe0ee;margin:0;
}
.rr-insights .ip-masthead-next{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.17em;
  text-transform:uppercase;color:#8296a9;margin:0;flex:0 0 auto;
}
.rr-insights .ip-masthead-next span{color:var(--ip-orange);margin-right:6px}

/* --------------------------------------------------------------------------
   Publication register backdrop
   -------------------------------------------------------------------------- */
.rr-insights .ip-register-bg{
  position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;
  -webkit-mask-image:linear-gradient(102deg,transparent 2%,rgba(0,0,0,.4) 34%,#000 66%);
  mask-image:linear-gradient(102deg,transparent 2%,rgba(0,0,0,.4) 34%,#000 66%);
}
/* the drafting grid the marks are registered against */
.rr-insights .ip-register-bg::before{
  content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(to right,rgba(140,175,205,.07) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(140,175,205,.07) 1px,transparent 1px);
  background-size:82px 76px;background-position:64px 44px;
}
.rr-insights .ip-register-bg svg{position:absolute;inset:0;width:100%;height:100%}
.rr-insights .ip-reg-frame{stroke:rgba(210,228,242,.16);stroke-width:1;fill:none}
.rr-insights .ip-reg-mark{stroke:rgba(210,228,242,.26);stroke-width:1;fill:none}
.rr-insights .ip-reg-tick{stroke:rgba(210,228,242,.24);stroke-width:1;fill:none}
.rr-insights .ip-reg-num{
  font-family:var(--ip-mono);font-size:10px;letter-spacing:.1em;
  fill:rgba(190,212,231,.42);
}
.rr-insights .ip-reg-plate{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.24em;
  fill:rgba(190,212,231,.38);
}
.rr-insights .ip-reg-trace{
  stroke:var(--ip-blue);stroke-width:1;fill:none;opacity:.26;
}
.rr-insights .ip-reg-pulse{
  stroke:var(--ip-blue);stroke-width:1.4;fill:none;opacity:.6;
  stroke-linecap:round;stroke-dasharray:2 420;
  animation:ip-register-flow 24s linear infinite;
}
@keyframes ip-register-flow{from{stroke-dashoffset:422}to{stroke-dashoffset:0}}
.rr-insights .ip-reg-node{fill:rgba(0,184,245,.5)}
.rr-insights .ip-reg-node--accent{fill:var(--ip-orange);opacity:.62}

/* the footer's .serif heading follows the publication serif on these pages */
.rr-insights .serif{font-family:var(--ip-serif)}

/* --- masthead responsive: the register stacks, the hierarchy does not --- */
/* The routed system geometry needs width to read as a relationship rather
   than as loose dots — below this it is dropped, not scaled down. */
@media (max-width:1140px){
  .rr-insights .ip-reg-system{display:none}
}
@media (max-width:1040px){
  .rr-insights .ip-masthead-grid{grid-template-columns:1fr;gap:0}
  .rr-insights .ip-masthead-register{
    border-left:0;border-top:1px solid rgba(255,255,255,.13);
    padding-left:0;padding-top:22px;margin-top:26px;
  }
  .rr-insights .ip-masthead-register dl{
    grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 28px;
  }
}
@media (max-width:760px){
  .rr-insights .ip-masthead{padding-top:38px}
  .rr-insights .ip-masthead-author{letter-spacing:.22em;gap:10px}
  .rr-insights .ip-masthead-marker{width:8px;height:8px}
  .rr-insights .ip-masthead-proposition{max-width:none}
  .rr-insights .ip-masthead-fields{letter-spacing:.13em;line-height:2.1}
  .rr-insights .ip-masthead-fields i{margin:0 7px}
  .rr-insights .ip-rule--lead::before{width:64px}
  .rr-insights .ip-masthead-series{gap:14px}
  .rr-insights .ip-masthead-next{flex:1 1 100%}
  .rr-insights .ip-masthead-register dl{gap:16px 24px}
  /* simplify the background geometry rather than shrinking it */
  .rr-insights .ip-reg-num{display:none}
  .rr-insights .ip-register-bg::before{background-size:56px 56px}
  .rr-insights .ip-register-bg{
    -webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.5),#000 70%);
    mask-image:linear-gradient(180deg,rgba(0,0,0,.5),#000 70%);
  }
}
@media (max-width:480px){
  .rr-insights .ip-masthead-register dl{grid-template-columns:1fr;gap:16px}
}

/* featured slot */
.rr-insights .ip-featured{
  display:grid;grid-template-columns:300px 1fr;gap:clamp(30px,4vw,56px);
  align-items:center;
}
.rr-insights .ip-featured-body h2{margin:14px 0 16px}
.rr-insights .ip-featured-body .ip-lede{margin-bottom:24px}
.rr-insights .ip-featured-facts{
  display:flex;flex-wrap:wrap;gap:8px 26px;margin-bottom:26px;
  padding:14px 0;border-top:1px solid var(--ip-line);border-bottom:1px solid var(--ip-line);
}
.rr-insights .ip-featured-fact{font-family:var(--ip-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ip-slate)}
.rr-insights .ip-featured-fact b{display:block;color:var(--ip-deep);font-weight:500;margin-top:4px;letter-spacing:.06em}

/* filters — editorial, not dashboard */
.rr-insights .ip-filters{
  display:flex;flex-wrap:wrap;gap:6px 30px;align-items:baseline;
  border-bottom:1px solid var(--ip-line);padding-bottom:2px;margin-bottom:38px;
}
.rr-insights .ip-filter{
  appearance:none;background:none;border:0;cursor:pointer;
  font-family:var(--ip-mono);font-size:11.5px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ip-slate);
  padding:12px 0;position:relative;transition:color .2s;
}
.rr-insights .ip-filter:hover{color:var(--ip-deep)}
.rr-insights .ip-filter[aria-pressed="true"]{color:var(--ip-navy);font-weight:500}
.rr-insights .ip-filter[aria-pressed="true"]::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--ip-orange);
}
.rr-insights .ip-lib-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:26px;align-items:stretch;
}
.rr-insights .ip-lib-empty{
  grid-column:1/-1;padding:56px 24px;text-align:center;
  border:1px dashed var(--ip-line-strong);border-radius:var(--ip-radius);
  color:var(--ip-slate);font-size:14.5px;
}
.rr-insights .ip-card[hidden]{display:none}

/* --------------------------------------------------------------------------
   Paper landing hero
   -------------------------------------------------------------------------- */
.rr-insights .ip-hero{
  position:relative;overflow:hidden;background:var(--ip-navy);color:var(--ip-ice);
  padding:clamp(52px,6.5vw,92px) 0 clamp(56px,7vw,96px);
}
.rr-insights .ip-hero-inner{
  position:relative;z-index:2;
  display:grid;grid-template-columns:1fr 400px;gap:clamp(36px,5vw,72px);align-items:center;
}
.rr-insights .ip-hero-breadcrumb{
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ip-ice-dim);margin-bottom:28px;
}
.rr-insights .ip-hero-breadcrumb a:hover{color:var(--ip-blue)}
.rr-insights .ip-hero-breadcrumb span{margin:0 8px;color:#3f5568}
.rr-insights .ip-hero h1{color:#fff;margin-bottom:20px;max-width:15ch}
.rr-insights .ip-hero-sub{
  font-family:var(--ip-display);font-weight:400;
  font-size:clamp(16px,1.7vw,21px);line-height:1.46;color:#9fd9f4;
  max-width:44ch;margin:0 0 30px;letter-spacing:-.01em;
}
.rr-insights .ip-hero-byline{
  display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;
  padding:18px 0;margin-bottom:30px;
  border-top:1px solid var(--ip-line-dark);border-bottom:1px solid var(--ip-line-dark);
}
.rr-insights .ip-hero-author{display:flex;align-items:center;gap:12px}
.rr-insights .ip-hero-author img{
  width:44px;height:44px;border-radius:50%;object-fit:cover;object-position:50% 12%;
  background:var(--ip-deep);border:1px solid rgba(255,255,255,.2);
}
.rr-insights .ip-hero-author b{
  display:block;font-family:var(--ip-display);font-size:14.5px;font-weight:600;color:#fff;
}
.rr-insights .ip-hero-author span{font-size:12px;color:var(--ip-ice-dim)}
.rr-insights .ip-hero-facts{
  display:flex;flex-wrap:wrap;gap:6px 22px;margin-left:auto;
}
.rr-insights .ip-hero-facts div{font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:#7d93a8}
.rr-insights .ip-hero-facts b{display:block;color:#dbe7f2;font-weight:400;margin-top:4px;font-size:11.5px}
.rr-insights .ip-hero-toolkit{
  display:inline-flex;align-items:center;gap:9px;margin-top:24px;
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:#c9dcea;padding:8px 13px;border:1px solid var(--ip-line-dark);border-radius:4px;
}
.rr-insights .ip-hero-toolkit i{width:6px;height:6px;background:var(--ip-orange);border-radius:50%;flex:0 0 auto}
.rr-insights .ip-hero-note{
  margin-top:14px;font-size:12px;color:#7d93a8;max-width:44ch;
}

/* --------------------------------------------------------------------------
   Central argument — the statement section (built to be screenshot-worthy)
   -------------------------------------------------------------------------- */
.rr-insights .ip-statement{
  position:relative;overflow:hidden;background:var(--ip-ice);
  padding:clamp(64px,9vw,128px) 0;
  border-top:1px solid var(--ip-line);border-bottom:1px solid var(--ip-line);
}
.rr-insights .ip-statement::before{
  content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(to right,rgba(13,39,64,.05) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(13,39,64,.05) 1px,transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:linear-gradient(to bottom,#000,transparent 82%);
  mask-image:linear-gradient(to bottom,#000,transparent 82%);
}
.rr-insights .ip-statement-inner{position:relative;z-index:2;max-width:960px;margin:0 auto}
.rr-insights .ip-statement-mark{
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--ip-orange-ink);margin-bottom:30px;
  display:flex;align-items:center;gap:14px;
}
.rr-insights .ip-statement-mark::after{content:"";height:1px;flex:1;background:var(--ip-line-strong)}
.rr-insights .ip-statement blockquote{
  margin:0;font-family:var(--ip-display);font-weight:600;
  font-size:clamp(26px,4.4vw,54px);line-height:1.16;letter-spacing:-.028em;
  color:var(--ip-navy);
}
.rr-insights .ip-statement blockquote em{
  font-style:normal;color:var(--ip-orange-ink);
  box-shadow:inset 0 -.14em 0 rgba(255,120,73,.28);
}
.rr-insights .ip-statement-support{
  margin:36px 0 0;padding-left:22px;border-left:3px solid var(--ip-blue);
  font-size:clamp(15px,1.4vw,18px);line-height:1.7;color:#3d4b5a;max-width:60ch;
}

/* --------------------------------------------------------------------------
   KeyTakeaways
   -------------------------------------------------------------------------- */
.rr-insights .ip-takeaways{
  display:grid;grid-template-columns:repeat(2,1fr);
  border-top:1px solid var(--ip-line);border-left:1px solid var(--ip-line);
}
.rr-insights .ip-takeaway{
  padding:34px 34px 32px;
  border-right:1px solid var(--ip-line);border-bottom:1px solid var(--ip-line);
  position:relative;background:var(--ip-paper);transition:background .22s;
}
.rr-insights .ip-takeaway:hover{background:#fbfdff}
.rr-insights .ip-takeaway-no{
  font-family:var(--ip-mono);font-size:12px;font-weight:500;letter-spacing:.1em;
  color:var(--ip-orange-ink);margin-bottom:16px;display:flex;align-items:center;gap:12px;
}
.rr-insights .ip-takeaway-no::after{content:"";width:30px;height:1px;background:var(--ip-line-strong)}
.rr-insights .ip-takeaway h3{font-size:19.5px;line-height:1.3;margin-bottom:12px}
.rr-insights .ip-takeaway p{font-size:14.5px;line-height:1.68;color:#4e5c6b;margin:0}

/* --------------------------------------------------------------------------
   TechnicalFramework — the Context-to-Action Architecture
   -------------------------------------------------------------------------- */
.rr-insights .ip-framework{position:relative;overflow:hidden}
.rr-insights .ip-framework-head{
  position:relative;z-index:2;max-width:620px;margin-bottom:clamp(34px,4vw,52px);
}
.rr-insights .ip-framework-head h2{margin-bottom:16px}
.rr-insights .ip-framework-body{position:relative;z-index:2}
.rr-insights .ip-fw-chain{
  display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:34px;
}
.rr-insights .ip-fw-step{
  appearance:none;text-align:left;cursor:pointer;
  background:rgba(13,39,64,.55);border:1px solid var(--ip-line-dark);
  border-radius:10px;padding:18px 16px 20px;color:var(--ip-ice);
  display:flex;flex-direction:column;gap:12px;position:relative;
  transition:border-color .22s,background .22s,transform .22s;
}
.rr-insights .ip-fw-step:hover{border-color:rgba(0,184,245,.55);background:rgba(13,39,64,.9)}
.rr-insights .ip-fw-step[aria-selected="true"]{
  border-color:var(--ip-blue);background:rgba(0,184,245,.10);
}
.rr-insights .ip-fw-step[aria-selected="true"]::after{
  content:"";position:absolute;left:16px;right:16px;bottom:-1px;height:2px;background:var(--ip-blue);
}
.rr-insights .ip-fw-step:last-child[aria-selected="true"]::after{background:var(--ip-orange)}
.rr-insights .ip-fw-step-no{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.14em;color:#7d93a8;
  display:flex;align-items:center;justify-content:space-between;
}
.rr-insights .ip-fw-step[aria-selected="true"] .ip-fw-step-no{color:var(--ip-blue)}
.rr-insights .ip-fw-step-name{
  font-family:var(--ip-display);font-size:14.5px;font-weight:600;line-height:1.3;color:#fff;
}
.rr-insights .ip-fw-step-glyph{width:100%;height:38px;opacity:.85}
.rr-insights .ip-fw-arrow{
  display:flex;align-items:center;justify-content:center;color:#3f5568;
}

/* display:grid would otherwise beat the [hidden] UA rule */
.rr-insights .ip-fw-detail[hidden]{display:none}
.rr-insights .ip-fw-detail{
  border:1px solid var(--ip-line-dark);border-radius:var(--ip-radius);
  background:rgba(7,21,34,.6);padding:clamp(24px,3vw,34px);
  display:grid;grid-template-columns:auto 1fr;gap:26px;align-items:start;
}
.rr-insights .ip-fw-detail-no{
  font-family:var(--ip-mono);font-size:38px;font-weight:300;line-height:1;
  color:var(--ip-orange);opacity:.85;
}
.rr-insights .ip-fw-detail h3{font-size:22px;margin-bottom:12px;color:#fff}
.rr-insights .ip-fw-detail p{font-size:15px;line-height:1.72;color:#bdcddd;margin:0 0 14px;max-width:70ch}
.rr-insights .ip-fw-detail p:last-child{margin-bottom:0}
.rr-insights .ip-fw-detail-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.rr-insights .ip-fw-detail-tags span{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:#9fd9f4;border:1px solid rgba(0,184,245,.35);border-radius:3px;padding:5px 9px;
}
.rr-insights .ip-fw-caption{
  margin-top:20px;font-family:var(--ip-mono);font-size:11px;letter-spacing:.1em;
  text-transform:uppercase;color:#7d93a8;
}

/* --------------------------------------------------------------------------
   Executive overview — the reading section
   -------------------------------------------------------------------------- */
.rr-insights .ip-article{max-width:var(--ip-read);margin:0 auto}
.rr-insights .ip-article h2{font-size:clamp(24px,2.8vw,32px);margin:0 0 20px}
.rr-insights .ip-article h3{
  font-size:clamp(18px,2vw,22px);margin:44px 0 14px;
  padding-top:22px;border-top:1px solid var(--ip-line);
}
.rr-insights .ip-article p{
  font-size:17px;line-height:1.78;color:#39465a;margin:0 0 22px;
}
.rr-insights .ip-article p.ip-article-lead{
  font-size:19.5px;line-height:1.68;color:#26313f;
}
.rr-insights .ip-article strong{font-weight:600;color:var(--ip-navy)}
.rr-insights .ip-article a{color:var(--ip-blue-ink);text-decoration:underline;text-underline-offset:2px}
.rr-insights .ip-article ul{margin:0 0 22px;padding-left:0;list-style:none}
.rr-insights .ip-article ul li{
  position:relative;padding-left:26px;margin-bottom:12px;
  font-size:16.5px;line-height:1.7;color:#39465a;
}
.rr-insights .ip-article ul li::before{
  content:"";position:absolute;left:2px;top:11px;width:8px;height:1.5px;background:var(--ip-orange);
}
.rr-insights .ip-article-conclusion{
  margin:34px 0;padding:24px 26px;background:var(--ip-ice);
  border-left:3px solid var(--ip-navy);border-radius:0 10px 10px 0;
  font-family:var(--ip-display);font-size:clamp(17px,1.8vw,20px);font-weight:500;
  line-height:1.5;color:var(--ip-navy);letter-spacing:-.015em;
}

/* InsightCallout */
.rr-insights .ip-callout{
  margin:32px 0;padding:22px 24px 24px;border-radius:0 12px 12px 0;
  border-left:3px solid var(--ip-blue);background:#f4fbfe;
}
.rr-insights .ip-callout-label{
  display:flex;align-items:center;gap:9px;margin-bottom:12px;
  font-family:var(--ip-mono);font-size:10.5px;font-weight:500;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ip-blue-ink);
}
.rr-insights .ip-callout-label svg{width:14px;height:14px;flex:0 0 auto}
.rr-insights .ip-callout p{font-size:15.5px;line-height:1.7;color:#3d4b5a;margin:0 0 12px}
.rr-insights .ip-callout p:last-child{margin-bottom:0}
.rr-insights .ip-callout--decision{border-left-color:var(--ip-orange);background:#fff6f2}
.rr-insights .ip-callout--decision .ip-callout-label{color:var(--ip-orange-ink)}
.rr-insights .ip-callout--business{border-left-color:var(--ip-navy);background:var(--ip-ice)}
.rr-insights .ip-callout--business .ip-callout-label{color:var(--ip-deep)}
.rr-insights .ip-callout--reality{border-left-color:var(--ip-slate);background:#f7f9fb}
.rr-insights .ip-callout--reality .ip-callout-label{color:#4d5c6c}
.rr-insights .ip-callout--check{border-left-color:var(--ip-blue);background:#f4fbfe}
.rr-insights .ip-callout--failure{border-left-color:#b3402a;background:#fdf5f3}
.rr-insights .ip-callout--failure .ip-callout-label{color:#a03a24}
.rr-insights .ip-callout ul{margin:0;padding-left:0;list-style:none}
.rr-insights .ip-callout ul li{
  position:relative;padding-left:20px;margin-bottom:9px;font-size:15px;line-height:1.62;color:#3d4b5a;
}
.rr-insights .ip-callout ul li:last-child{margin-bottom:0}
.rr-insights .ip-callout ul li::before{
  content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;
  border:1.5px solid currentColor;color:var(--ip-slate);
}

/* --------------------------------------------------------------------------
   Long-form article furniture: numbered headings, sub-headings, principles
   -------------------------------------------------------------------------- */
.rr-insights .ip-article h4{
  font-family:var(--ip-display);font-size:16px;font-weight:600;
  color:var(--ip-deep);margin:26px 0 8px;letter-spacing:-.005em;
}
.rr-insights .ip-article h4 + p{margin-bottom:16px}

/* the line that sits directly under a section h2 and qualifies it */
.rr-insights .ip-article-standfirst{
  font-family:var(--ip-serif);font-size:clamp(17px,1.8vw,21px);font-weight:400;
  line-height:1.45;color:var(--ip-blue-ink);margin:-8px 0 24px;
}

/* a numbered sub-heading inside a run of h4s — lighter than .ip-h-num, no rule */
.rr-insights .ip-article h4.ip-h-sub{
  display:flex;align-items:baseline;gap:13px;
  font-size:17.5px;margin:38px 0 10px;
}
.rr-insights .ip-h-sub span{
  font-family:var(--ip-mono);font-size:11.5px;font-weight:500;letter-spacing:.08em;
  color:var(--ip-blue-ink);flex:0 0 auto;
}

/* a quoted example inside a table cell */
.rr-insights .ip-table-quote{color:var(--ip-deep);font-style:italic}

/* A plain numbered list. Deliberately NOT scoped to .ip-article — it is also
   used inside the worked example, where an .ip-article ancestor does not
   exist and the list would otherwise fall back to browser numbering on top of
   an inherited bullet marker. */
.rr-insights ol.ip-ol{
  list-style:none;counter-reset:ip-ol;margin:0 0 22px;padding:0;
}
.rr-insights ol.ip-ol > li{
  counter-increment:ip-ol;position:relative;padding-left:34px;margin-bottom:11px;
  font-size:16.5px;line-height:1.7;color:#39465a;
}
.rr-insights ol.ip-ol > li::before{
  content:counter(ip-ol,decimal-leading-zero);
  position:absolute;left:0;top:3px;
  /* reset the dash marker any ancestor list style may have set */
  width:auto;height:auto;background:none;
  font-family:var(--ip-mono);font-size:11.5px;color:var(--ip-blue-ink);
}

/* --------------------------------------------------------------------------
   PaperContents — the contents cards under the hero
   -------------------------------------------------------------------------- */
.rr-insights .ip-contents{display:block;padding:clamp(34px,4vw,52px) 0}
.rr-insights .ip-contents-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:14px 28px;flex-wrap:wrap;margin-bottom:clamp(22px,2.6vw,30px);
}
.rr-insights .ip-contents-head h2{margin:0}
.rr-insights .ip-contents-meta{
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ip-slate);margin:0;
}
.rr-insights .ip-contents-grid{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;
}
.rr-insights .ip-contents-grid > li{min-width:0;display:flex}
.rr-insights .ip-contents-card{
  display:flex;flex-direction:column;width:100%;
  padding:20px 20px 18px;background:var(--ip-paper);
  border:1px solid var(--ip-line);border-radius:var(--ip-radius);
  border-top:2px solid var(--ip-line-strong);
  transition:border-color .2s,box-shadow .2s,transform .2s;
}
.rr-insights .ip-contents-card:hover{
  border-color:var(--ip-line-strong);border-top-color:var(--ip-orange);
  box-shadow:0 16px 34px -22px rgba(7,21,34,.4);transform:translateY(-3px);
}
.rr-insights .ip-contents-no{
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.14em;
  color:var(--ip-orange-ink);margin-bottom:12px;
}
.rr-insights .ip-contents-title{
  font-family:var(--ip-display);font-size:16.5px;font-weight:600;line-height:1.3;
  color:var(--ip-navy);margin-bottom:9px;
}
.rr-insights .ip-contents-summary{
  font-size:13.5px;line-height:1.62;color:#4e5c6b;margin-bottom:16px;
}
.rr-insights .ip-contents-go{
  margin-top:auto;display:inline-flex;align-items:center;gap:7px;
  font-size:12.5px;font-weight:600;color:var(--ip-deep);
}
.rr-insights .ip-contents-go svg{width:14px;height:14px;transition:transform .2s}
.rr-insights .ip-contents-card:hover .ip-contents-go{color:var(--ip-orange-ink)}
.rr-insights .ip-contents-card:hover .ip-contents-go svg{transform:translateX(4px)}

/* Four across is the design; the grid still has to cope when a fifth section
   lands, so it steps down by count rather than assuming exactly four. */
@media (max-width:1040px){
  .rr-insights .ip-contents-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:560px){
  .rr-insights .ip-contents-grid{grid-template-columns:1fr;gap:12px}
  .rr-insights .ip-contents-card{padding:18px}
  .rr-insights .ip-contents-summary{margin-bottom:13px}
}

/* --------------------------------------------------------------------------
   Contrast — a vague formulation set against a precise one
   -------------------------------------------------------------------------- */
.rr-insights .ip-contrast{
  max-width:var(--ip-read);margin:clamp(26px,3vw,34px) auto;
  border-top:1px solid var(--ip-line);
}
.rr-insights .ip-contrast-row{
  display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
  gap:clamp(18px,2.4vw,32px);
  padding:22px 0;border-bottom:1px solid var(--ip-line);
}
.rr-insights .ip-contrast p{margin:0;font-size:15.5px;line-height:1.62}
.rr-insights .ip-contrast span{
  display:block;margin-bottom:8px;
  font-family:var(--ip-mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;
}
.rr-insights .ip-contrast-weak{color:var(--ip-slate)}
.rr-insights .ip-contrast-weak span{color:var(--ip-slate)}
.rr-insights .ip-contrast-strong{
  color:var(--ip-graphite);padding-left:20px;border-left:3px solid var(--ip-orange);
}
.rr-insights .ip-contrast-strong span{color:var(--ip-orange-ink)}
/* single-pair variant reads better stacked, not side by side */
.rr-insights .ip-contrast--stacked .ip-contrast-row{grid-template-columns:1fr;gap:20px}
@media (max-width:760px){
  .rr-insights .ip-contrast-row{grid-template-columns:1fr;gap:18px}
}

/* --------------------------------------------------------------------------
   The use-case contract — a sentence set as a definition list
   -------------------------------------------------------------------------- */
.rr-insights .ip-contract{
  position:relative;z-index:2;max-width:840px;margin:0;
  display:grid;gap:0;
}
.rr-insights .ip-contract > div{
  display:grid;grid-template-columns:minmax(0,220px) 1fr;gap:8px 28px;
  align-items:baseline;padding:15px 0;border-top:1px solid var(--ip-line-dark);
}
.rr-insights .ip-contract > div:last-child{border-bottom:1px solid var(--ip-line-dark)}
.rr-insights .ip-contract dt{
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ip-blue);
}
.rr-insights .ip-contract dd{
  margin:0;font-family:var(--ip-serif);font-size:clamp(16px,1.7vw,19px);
  line-height:1.5;color:#eaf3fa;
}
@media (max-width:760px){
  .rr-insights .ip-contract > div{grid-template-columns:1fr;gap:6px}
}

/* --------------------------------------------------------------------------
   Worked example — a case study set apart from the argument
   -------------------------------------------------------------------------- */
.rr-insights .ip-worked{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 clamp(28px,4vw,56px);
  margin-top:clamp(30px,3.6vw,44px);
}
.rr-insights .ip-worked-item{
  padding:24px 0;border-top:1px solid var(--ip-line-strong);min-width:0;
}
.rr-insights .ip-worked-item h4{
  font-family:var(--ip-display);font-size:16px;font-weight:600;
  color:var(--ip-navy);margin:0 0 10px;
}
.rr-insights .ip-worked-item p{font-size:15px;line-height:1.68;color:#4e5c6b;margin:0 0 10px}
.rr-insights .ip-worked-item ul{list-style:none;margin:0;padding:0}
.rr-insights .ip-worked-item li{
  position:relative;padding-left:20px;margin-bottom:7px;
  font-size:14.5px;line-height:1.6;color:#4e5c6b;
}
.rr-insights .ip-worked-item li::before{
  content:"";position:absolute;left:0;top:10px;width:7px;height:1.5px;background:var(--ip-blue);
}
.rr-insights .ip-worked-item ol.ip-ol li{font-size:14.5px;padding-left:30px}
.rr-insights .ip-worked-note{
  margin-top:12px!important;padding-left:16px;border-left:2px solid var(--ip-line-strong);
  font-size:13.5px!important;color:var(--ip-slate)!important;
}
/* the one block that says what must not happen */
.rr-insights .ip-worked-item--prohibited li::before{background:var(--ip-orange-ink)}
.rr-insights .ip-worked-item--prohibited h4{color:var(--ip-orange-ink)}
@media (max-width:760px){
  .rr-insights .ip-worked{grid-template-columns:1fr}
}

/* --------------------------------------------------------------------------
   Failure patterns — a two-column run on a dark surface
   -------------------------------------------------------------------------- */
.rr-insights .ip-failures{
  position:relative;z-index:2;list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 clamp(28px,4vw,56px);
}
.rr-insights .ip-failures li{
  position:relative;padding:14px 0 14px 28px;min-width:0;
  border-top:1px solid var(--ip-line-dark);
  font-size:15.5px;line-height:1.6;color:#cfdce8;
}
.rr-insights .ip-failures li::before{
  content:"×";position:absolute;left:2px;top:13px;
  font-family:var(--ip-mono);font-size:14px;color:var(--ip-orange);
}
@media (max-width:760px){
  .rr-insights .ip-failures{grid-template-columns:1fr}
}

/* a numbered section heading, the number set as a mono marker in the margin */
.rr-insights .ip-h-num{
  display:flex;align-items:baseline;gap:16px;
  margin:48px 0 18px;padding-top:24px;border-top:1px solid var(--ip-line);
}
.rr-insights .ip-h-num span{
  font-family:var(--ip-mono);font-size:13px;font-weight:500;letter-spacing:.06em;
  color:var(--ip-orange-ink);flex:0 0 auto;
}

/* a short, load-bearing statement inside the reading column */
.rr-insights .ip-principle{
  margin:26px 0;padding:2px 0 2px 22px;border-left:3px solid var(--ip-blue);
  font-family:var(--ip-display);font-size:clamp(16px,1.7vw,19px);font-weight:500;
  line-height:1.5;color:var(--ip-navy);letter-spacing:-.012em;
}

/* an inline "a → b → c" run inside body copy */
.rr-insights .ip-sequence-inline{
  font-family:var(--ip-mono);font-size:13.5px;line-height:1.9;color:var(--ip-deep);
}
.rr-insights .ip-sequence-inline i{font-style:normal;color:var(--ip-orange-ink);margin:0 6px}

/* --------------------------------------------------------------------------
   Publication-status note — the paper is released section by section
   -------------------------------------------------------------------------- */
.rr-insights .ip-continues-note{
  border:1px dashed var(--ip-line-strong);border-radius:var(--ip-radius);
  background:#fbfcfe;padding:clamp(22px,3vw,30px);
}
.rr-insights .ip-continues-note h2{margin-bottom:12px}
.rr-insights .ip-continues-note p{font-size:15.5px;line-height:1.7;color:#4e5c6b;margin:0}
.rr-insights .ip-continues-meta{
  margin-top:16px!important;padding-top:14px;border-top:1px solid var(--ip-line);
  font-family:var(--ip-mono);font-size:11px!important;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ip-slate)!important;
}

/* --------------------------------------------------------------------------
   The central-question statement variant
   -------------------------------------------------------------------------- */
/* these lead-ins are prose, not metadata — setting them in letterspaced mono
   made a full sentence read as a label */
.rr-insights .ip-question-lead{
  font-family:var(--ip-body);font-size:clamp(15px,1.4vw,17px);line-height:1.6;
  color:#4e5c6b;margin:0 0 18px;
}
.rr-insights .ip-question + .ip-question-lead{margin-top:10px}

/* These sit inside .ip-statement, whose `blockquote` rules are (0,2,1) and
   would otherwise win on margin, size and colour. Qualifying with the element
   keeps the variant in control. */
.rr-insights .ip-statement blockquote.ip-question{
  margin:0 0 44px;font-family:var(--ip-display);font-weight:600;
  font-size:clamp(22px,3.4vw,42px);line-height:1.2;letter-spacing:-.025em;
  color:var(--ip-navy);padding-left:26px;border-left:3px solid var(--ip-orange);
}
.rr-insights .ip-statement blockquote.ip-question em{
  font-style:normal;color:var(--ip-orange-ink);
  box-shadow:inset 0 -.14em 0 rgba(255,120,73,.28);
}
/* The question being set aside is quieter than the one that stands — but the
   strikethrough, lighter weight and smaller size carry that, not a washed-out
   colour. #7a8794 came in at 3.45:1 on ice and this drops to 19px on mobile,
   where the large-text exemption no longer applies. */
.rr-insights .ip-statement blockquote.ip-question--weak{
  color:var(--ip-slate);border-left-color:var(--ip-line-strong);
  font-size:clamp(19px,2.6vw,31px);font-weight:500;
}
.rr-insights .ip-statement blockquote.ip-question--weak em{
  color:inherit;box-shadow:none;
  text-decoration:line-through;text-decoration-thickness:1px;
}

/* --------------------------------------------------------------------------
   DiagramFigure — shared frame for technical drawings
   -------------------------------------------------------------------------- */
.rr-insights .ip-figure{margin:0;padding:0}
.rr-insights .ip-figure-canvas{
  display:block;max-width:820px;margin:0 auto;
}
.rr-insights .ip-figure-canvas svg{width:100%;height:auto;display:block}

/* The stacked reading of the diagram. It is the accessible description at every
   width (aria-describedby), and it replaces the drawing below 860px, where a
   wide technical figure stops being legible. */
.rr-insights .ip-figure-stack{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.rr-insights .ip-figure-caption{
  max-width:820px;margin:22px auto 0;text-align:center;
  font-family:var(--ip-mono);font-size:11px;line-height:1.7;letter-spacing:.08em;
  color:#8ea3ba;
}
.rr-insights .ip-figure--light .ip-figure-caption{color:var(--ip-slate)}

@media (max-width:860px){
  .rr-insights .ip-figure-canvas{display:none}
  .rr-insights .ip-figure-stack{
    position:static;width:auto;height:auto;padding:0;margin:0;
    overflow:visible;clip:auto;white-space:normal;
    list-style:none;display:grid;gap:2px;
  }
  .rr-insights .ip-figure-stack li{
    display:flex;gap:14px;align-items:baseline;
    padding:15px 0;border-top:1px solid var(--ip-line-dark);
  }
  .rr-insights .ip-figure-stack li:last-child{border-bottom:1px solid var(--ip-line-dark)}
  .rr-insights .ip-figure-step{
    font-family:var(--ip-mono);font-size:11px;color:var(--ip-blue);flex:0 0 auto;
  }
  .rr-insights .ip-figure-stack b{
    display:block;font-family:var(--ip-display);font-size:15px;font-weight:600;
    color:#fff;line-height:1.35;margin-bottom:5px;
  }
  .rr-insights .ip-figure-note{
    display:block;font-size:13.5px;line-height:1.6;color:#a9bccf;
  }
  .rr-insights .ip-figure-caption{text-align:left;margin-top:20px}
}

/* --------------------------------------------------------------------------
   Architecture drawing
   -------------------------------------------------------------------------- */
.rr-insights .ip-arch{overflow:visible}
.rr-insights .ip-arch-node rect{
  fill:rgba(13,39,64,.72);stroke:rgba(0,184,245,.34);stroke-width:1;
}
.rr-insights .ip-arch-node.is-core rect{
  fill:rgba(0,184,245,.10);stroke:var(--ip-blue);stroke-width:1.4;
}
.rr-insights .ip-arch-node.is-out rect{
  fill:none;stroke:rgba(255,120,73,.6);stroke-dasharray:4 4;
}
.rr-insights .ip-arch-kicker{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.18em;fill:#7fa8c4;
}
.rr-insights .ip-arch-kicker.is-core{fill:var(--ip-blue)}
.rr-insights .ip-arch-kicker.is-out{fill:#ffa07d}
.rr-insights .ip-arch-label{
  font-family:var(--ip-display);font-size:16px;font-weight:600;fill:#eaf3fa;
}
.rr-insights .ip-arch-label.is-sm{font-size:13.5px;font-weight:500;fill:#dbe7f2}
.rr-insights .ip-arch-link path{
  fill:none;stroke:rgba(0,184,245,.45);stroke-width:1.2;
}
.rr-insights .ip-arch-head{fill:rgba(0,184,245,.75)}
/* a return path — dashed and quieter than the forward chain */
.rr-insights .ip-arch-link.is-feedback path{
  stroke:rgba(255,120,73,.55);stroke-dasharray:5 5;
}
.rr-insights .ip-arch-head.is-muted{fill:rgba(255,120,73,.7)}
.rr-insights .ip-arch-kicker.is-feedback{fill:#ffa07d;letter-spacing:.2em}
.rr-insights .ip-arch-dot circle{fill:var(--ip-blue);opacity:.7}

.rr-insights .ip-arch-roles{
  max-width:820px;margin:clamp(30px,4vw,46px) auto 0;
  padding-top:26px;border-top:1px solid var(--ip-line-dark);
}
.rr-insights .ip-arch-roles ul{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:11px}
.rr-insights .ip-arch-roles li{
  position:relative;padding-left:22px;font-size:15.5px;line-height:1.6;color:#bdcddd;
}
.rr-insights .ip-arch-roles li::before{
  content:"";position:absolute;left:0;top:10px;width:9px;height:1.5px;background:var(--ip-blue);
}
.rr-insights .ip-arch-roles b{color:#fff;font-weight:600}
.rr-insights .ip-arch-warning{
  margin:24px 0 0;padding:16px 20px;border-left:3px solid var(--ip-orange);
  background:rgba(255,120,73,.07);
  font-size:15px;line-height:1.65;color:#e2ecf6;
}

/* --------------------------------------------------------------------------
   SequenceDiagram — an ordered interaction as text
   -------------------------------------------------------------------------- */
.rr-insights .ip-sequence{max-width:880px;margin:0 auto}
.rr-insights .ip-sequence-legend{
  list-style:none;margin:0 0 26px;padding:0 0 20px;
  border-bottom:1px solid var(--ip-line);
  display:flex;flex-wrap:wrap;gap:10px 26px;
}
.rr-insights .ip-sequence-legend li{
  display:flex;align-items:center;gap:9px;
  font-size:13.5px;color:var(--ip-deep);
}
.rr-insights .ip-sequence-key{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;flex:0 0 auto;border-radius:3px;
  background:var(--ip-deep);color:#fff;
  font-family:var(--ip-mono);font-size:11px;
}
.rr-insights .ip-sequence-steps{list-style:none;margin:0;padding:0;counter-reset:none}
.rr-insights .ip-sequence-step{
  display:grid;grid-template-columns:38px minmax(0,236px) 1fr;gap:8px 20px;
  align-items:baseline;padding:14px 0;border-bottom:1px solid var(--ip-line);
}
.rr-insights .ip-sequence-step:first-child{border-top:1px solid var(--ip-line)}
.rr-insights .ip-sequence-no{
  font-family:var(--ip-mono);font-size:11px;color:var(--ip-slate);
}
.rr-insights .ip-sequence-route{
  font-family:var(--ip-mono);font-size:11.5px;line-height:1.6;color:var(--ip-deep);
}
.rr-insights .ip-sequence-route b{font-weight:500}
.rr-insights .ip-sequence-route i{font-style:normal;color:var(--ip-blue-ink);margin:0 6px}
.rr-insights .ip-sequence-msg{font-size:15px;line-height:1.6;color:#39465a}
/* a step the retrieval layer performs on itself — the governance moments */
.rr-insights .ip-sequence-step--self .ip-sequence-route i{color:var(--ip-orange-ink)}
.rr-insights .ip-sequence-step--self .ip-sequence-msg{color:var(--ip-navy);font-weight:500}
.rr-insights .ip-sequence-step--return .ip-sequence-route{color:var(--ip-slate)}
.rr-insights .ip-sequence-step--return .ip-sequence-route i{color:var(--ip-slate)}
.rr-insights .ip-sequence-caption{
  margin:22px 0 0;font-family:var(--ip-mono);font-size:11px;line-height:1.7;
  letter-spacing:.08em;color:var(--ip-slate);
}
@media (max-width:760px){
  .rr-insights .ip-sequence-step{grid-template-columns:30px 1fr;gap:4px 14px}
  .rr-insights .ip-sequence-route{grid-column:2}
  .rr-insights .ip-sequence-msg{grid-column:2}
}

/* --------------------------------------------------------------------------
   The governed reasoning cycle — a numbered run on a dark surface
   -------------------------------------------------------------------------- */
.rr-insights .ip-cycle{
  list-style:none;margin:0;padding:0;position:relative;z-index:2;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 clamp(28px,4vw,56px);
}
.rr-insights .ip-cycle li{
  display:flex;align-items:baseline;gap:16px;min-width:0;
  padding:15px 0;border-top:1px solid var(--ip-line-dark);
  font-size:15.5px;line-height:1.6;color:#cfdce8;
}
.rr-insights .ip-cycle-no{
  font-family:var(--ip-mono);font-size:11.5px;letter-spacing:.08em;
  color:var(--ip-blue);flex:0 0 auto;
}
/* Rules sit on the top edge only. With nine steps in two columns the last row
   is half-empty, and a bottom rule there would end the block ragged. */
.rr-insights .ip-cycle li:last-child .ip-cycle-no{color:var(--ip-orange)}
.rr-insights .ip-cycle-note{
  position:relative;z-index:2;
  max-width:74ch;margin:clamp(26px,3.4vw,38px) 0 0;padding-left:22px;
  border-left:3px solid rgba(0,184,245,.4);
  font-size:15px;line-height:1.7;color:#a9bccf;
}
@media (max-width:760px){
  .rr-insights .ip-cycle{grid-template-columns:1fr}
}

/* --------------------------------------------------------------------------
   Tables
   -------------------------------------------------------------------------- */
.rr-insights .ip-table-wrap{
  overflow-x:auto;-webkit-overflow-scrolling:touch;
  border:1px solid var(--ip-line);border-radius:var(--ip-radius);background:var(--ip-paper);
}
.rr-insights .ip-table-wrap:focus-visible{outline:2px solid var(--ip-blue);outline-offset:2px}
.rr-insights .ip-table{
  width:100%;min-width:640px;border-collapse:collapse;text-align:left;
}
.rr-insights .ip-table th,
.rr-insights .ip-table td{
  padding:15px 20px;border-bottom:1px solid var(--ip-line);vertical-align:top;
  font-size:14.5px;line-height:1.6;
}
.rr-insights .ip-table thead th{
  font-family:var(--ip-mono);font-size:10.5px;font-weight:500;letter-spacing:.15em;
  text-transform:uppercase;color:var(--ip-blue-ink);
  background:var(--ip-ice);border-bottom:1px solid var(--ip-line-strong);
  white-space:nowrap;
}
.rr-insights .ip-table tbody th{
  font-family:var(--ip-display);font-weight:600;color:var(--ip-navy);
  width:1%;white-space:nowrap;
}
.rr-insights .ip-table td{color:#4e5c6b}
.rr-insights .ip-table tbody tr:last-child th,
.rr-insights .ip-table tbody tr:last-child td{border-bottom:0}
.rr-insights .ip-table tbody tr:hover{background:#fbfdff}

/* --------------------------------------------------------------------------
   MaturityModel — from systems to intelligence
   -------------------------------------------------------------------------- */
.rr-insights .ip-maturity{display:grid;gap:0;position:relative}
.rr-insights .ip-mat-stage{
  display:grid;grid-template-columns:88px 1fr;gap:clamp(18px,3vw,40px);
  padding:26px 0;border-top:1px solid var(--ip-line);position:relative;
}
.rr-insights .ip-mat-stage:last-child{border-bottom:1px solid var(--ip-line)}
.rr-insights .ip-mat-rail{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.rr-insights .ip-mat-level{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ip-slate);
}
/* the widening bar carries the progression without needing a chart */
.rr-insights .ip-mat-bar{
  height:6px;border-radius:3px;background:var(--ip-line-strong);width:100%;position:relative;overflow:hidden;
}
.rr-insights .ip-mat-bar i{
  position:absolute;inset:0 auto 0 0;border-radius:3px;display:block;
  background:linear-gradient(90deg,var(--ip-deep),var(--ip-blue));
}
.rr-insights .ip-mat-stage:last-child .ip-mat-bar i{
  background:linear-gradient(90deg,var(--ip-blue),var(--ip-orange));
}
.rr-insights .ip-mat-body h3{font-size:19px;margin-bottom:10px}
.rr-insights .ip-mat-body p{font-size:15px;line-height:1.68;color:#4e5c6b;margin:0 0 12px;max-width:62ch}
.rr-insights .ip-mat-traits{display:flex;flex-wrap:wrap;gap:7px}
.rr-insights .ip-mat-traits span{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
  color:#4d5c6c;background:var(--ip-paper);border:1px solid var(--ip-line);
  border-radius:3px;padding:5px 9px;
}
.rr-insights .ip-mat-stage--peak .ip-mat-body h3{color:var(--ip-orange-ink)}

/* --------------------------------------------------------------------------
   Application areas
   -------------------------------------------------------------------------- */
.rr-insights .ip-apps{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.rr-insights .ip-app{
  padding:30px 30px 30px 0;border-top:1px solid var(--ip-line);
}
.rr-insights .ip-app + .ip-app{padding-left:30px;border-left:1px solid var(--ip-line)}
.rr-insights .ip-apps .ip-app:nth-child(3n+1){padding-left:0;border-left:0}
.rr-insights .ip-app-key{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ip-blue-ink);margin-bottom:12px;
}
.rr-insights .ip-app h3{font-size:18px;margin-bottom:11px;line-height:1.3}
.rr-insights .ip-app p{font-size:14.5px;line-height:1.68;color:#4e5c6b;margin:0}
.rr-insights .ip-app-note{
  margin-top:34px;padding-top:22px;border-top:1px solid var(--ip-line);
}
.rr-insights .ip-app-note p{
  font-size:14px;color:var(--ip-slate);max-width:74ch;line-height:1.7;margin:0;
}
.rr-insights .ip-app-note a{color:var(--ip-blue-ink);text-decoration:underline;text-underline-offset:2px}

/* --------------------------------------------------------------------------
   ImplementationRoadmap
   -------------------------------------------------------------------------- */
.rr-insights .ip-roadmap{
  position:relative;z-index:2;display:grid;gap:0;
  list-style:none;margin:0;padding:0;
}
.rr-insights .ip-phase{
  display:grid;grid-template-columns:64px 1fr 250px;gap:clamp(16px,2.6vw,34px);
  align-items:start;padding:24px 0;border-top:1px solid var(--ip-line-dark);
}
.rr-insights .ip-phase:last-child{border-bottom:1px solid var(--ip-line-dark)}
.rr-insights .ip-phase-no{
  font-family:var(--ip-mono);font-size:13px;letter-spacing:.08em;color:var(--ip-blue);
  padding-top:4px;position:relative;
}
.rr-insights .ip-phase-no::after{
  content:"";position:absolute;left:0;top:26px;bottom:-30px;width:1px;
  background:linear-gradient(to bottom,rgba(0,184,245,.5),transparent);
}
.rr-insights .ip-phase:last-child .ip-phase-no::after{display:none}
.rr-insights .ip-phase h3{font-size:19px;color:#fff;margin-bottom:9px;line-height:1.3}
.rr-insights .ip-phase p{font-size:14.5px;line-height:1.68;color:#a9bccf;margin:0;max-width:60ch}
.rr-insights .ip-phase-out{
  font-family:var(--ip-mono);font-size:11px;line-height:1.6;letter-spacing:.06em;
  color:#8fb9d4;padding-left:18px;border-left:1px solid rgba(0,184,245,.35);
}
.rr-insights .ip-phase-out b{
  display:block;font-weight:500;font-size:9.5px;letter-spacing:.18em;
  text-transform:uppercase;color:#7C93A6;margin-bottom:7px;
}
.rr-insights .ip-phase--final h3{color:var(--ip-orange)}
.rr-insights .ip-phase--final .ip-phase-no{color:var(--ip-orange)}
.rr-insights .ip-phase--final .ip-phase-out{border-left-color:rgba(255,120,73,.45)}

/* --------------------------------------------------------------------------
   ReadinessAssessment
   -------------------------------------------------------------------------- */
.rr-insights .ip-assess{
  display:grid;grid-template-columns:1fr 340px;gap:clamp(28px,4vw,52px);align-items:start;
}
.rr-insights .ip-assess-list{display:grid;gap:0;border-top:1px solid var(--ip-line)}
.rr-insights .ip-assess-item{
  padding:18px 0;border-bottom:1px solid var(--ip-line);
  display:grid;grid-template-columns:1fr auto;gap:14px 24px;align-items:center;
}
.rr-insights .ip-assess-q{max-width:52ch}
.rr-insights .ip-assess-dim{
  font-family:var(--ip-mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--ip-blue-ink);margin-bottom:6px;
}
.rr-insights .ip-assess-q p{font-size:15px;line-height:1.55;color:#39465a;margin:0;font-weight:500}
.rr-insights .ip-assess-opts{display:flex;gap:6px;flex:0 0 auto}
.rr-insights .ip-assess-opts label{
  cursor:pointer;position:relative;
}
.rr-insights .ip-assess-opts input{
  position:absolute;opacity:0;width:0;height:0;
}
.rr-insights .ip-assess-opts span{
  display:flex;align-items:center;justify-content:center;
  min-width:52px;min-height:44px;padding:0 14px;
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ip-slate);background:var(--ip-paper);
  border:1px solid var(--ip-line-strong);border-radius:8px;
  transition:all .18s;user-select:none;
}
.rr-insights .ip-assess-opts label:hover span{border-color:var(--ip-deep);color:var(--ip-deep)}
.rr-insights .ip-assess-opts input:focus-visible + span{outline:2px solid var(--ip-blue);outline-offset:2px}
.rr-insights .ip-assess-opts input:checked + span{
  background:var(--ip-deep);border-color:var(--ip-deep);color:#fff;
}
.rr-insights .ip-assess-opts label.is-no input:checked + span{background:#7a8794;border-color:#7a8794}
.rr-insights .ip-assess-opts label.is-part input:checked + span{background:var(--ip-blue-ink);border-color:var(--ip-blue-ink)}

.rr-insights .ip-assess-panel{
  position:sticky;top:96px;
  border:1px solid var(--ip-line);border-radius:var(--ip-radius);
  background:var(--ip-paper);padding:26px 24px 24px;
}
.rr-insights .ip-assess-score{
  font-family:var(--ip-display);font-size:52px;font-weight:600;line-height:1;
  color:var(--ip-navy);letter-spacing:-.03em;
}
.rr-insights .ip-assess-score small{font-size:20px;color:var(--ip-slate);font-weight:400}
.rr-insights .ip-assess-track{
  height:8px;border-radius:4px;background:var(--ip-ice);overflow:hidden;margin:18px 0 20px;
  border:1px solid var(--ip-line);
}
.rr-insights .ip-assess-track i{
  display:block;height:100%;width:0;border-radius:4px;
  background:linear-gradient(90deg,var(--ip-deep),var(--ip-blue));
  transition:width .4s cubic-bezier(.3,.7,.3,1);
}
.rr-insights .ip-assess-panel[data-level="advanced"] .ip-assess-track i{
  background:linear-gradient(90deg,var(--ip-blue),var(--ip-orange));
}
.rr-insights .ip-assess-level{
  font-family:var(--ip-display);font-size:19px;font-weight:600;color:var(--ip-navy);margin-bottom:10px;
}
.rr-insights .ip-assess-verdict{font-size:14px;line-height:1.65;color:#4e5c6b;margin:0 0 18px}
.rr-insights .ip-assess-panel .ip-btn{width:100%}
.rr-insights .ip-assess-disclaimer{
  margin-top:16px;padding-top:14px;border-top:1px solid var(--ip-line);
  font-size:11.5px;line-height:1.6;color:var(--ip-slate);
}
.rr-insights .ip-assess-progress{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ip-slate);margin-bottom:14px;
}

/* --------------------------------------------------------------------------
   Audience
   -------------------------------------------------------------------------- */
.rr-insights .ip-audience{display:grid;grid-template-columns:1fr 1.35fr;gap:clamp(28px,4vw,60px);align-items:start}
.rr-insights .ip-audience-list{
  display:grid;grid-template-columns:repeat(2,1fr);gap:0;
  border-top:1px solid var(--ip-line);
}
.rr-insights .ip-audience-list li{
  list-style:none;padding:16px 18px 16px 0;border-bottom:1px solid var(--ip-line);
  display:flex;align-items:baseline;gap:12px;
  font-size:15.5px;color:#39465a;line-height:1.5;
}
.rr-insights .ip-audience-list li b{
  font-family:var(--ip-mono);font-size:10.5px;font-weight:500;color:var(--ip-orange-ink);flex:0 0 auto;
}

/* --------------------------------------------------------------------------
   AuthorProfile
   -------------------------------------------------------------------------- */
.rr-insights .ip-author{
  display:grid;grid-template-columns:220px 1fr;gap:clamp(28px,4vw,52px);align-items:center;
  position:relative;z-index:2;
}
.rr-insights .ip-author-portrait{
  position:relative;border-radius:var(--ip-radius);overflow:hidden;
  background:linear-gradient(160deg,#123b57,#0d2740);
  aspect-ratio:1/1;
}
.rr-insights .ip-author-portrait img{
  width:100%;height:100%;object-fit:cover;object-position:50% 8%;display:block;
}
.rr-insights .ip-author h2{color:#fff;font-size:clamp(24px,2.8vw,32px);margin-bottom:6px}
.rr-insights .ip-author-role{
  font-family:var(--ip-mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ip-blue);margin-bottom:20px;
}
.rr-insights .ip-author p{font-size:16px;line-height:1.75;color:#bdcddd;margin:0 0 22px;max-width:64ch}
.rr-insights .ip-author-links{display:flex;flex-wrap:wrap;gap:10px}
.rr-insights .ip-author-links a{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:#cfe0ee;border:1px solid var(--ip-line-dark);border-radius:6px;padding:10px 14px;
  transition:border-color .2s,color .2s,background .2s;
}
.rr-insights .ip-author-links a:hover{border-color:var(--ip-blue);color:#fff;background:rgba(0,184,245,.1)}
.rr-insights .ip-author-links a svg{width:13px;height:13px;flex:0 0 auto;opacity:.8}

/* --------------------------------------------------------------------------
   SubscriptionForm — Intelligence Briefings
   -------------------------------------------------------------------------- */
.rr-insights .ip-subscribe{
  display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(30px,4vw,64px);align-items:start;
}
.rr-insights .ip-subscribe-copy h2{margin-bottom:16px;font-size:clamp(23px,3vw,36px)}
/* "Intelligence Briefings" does not fit on one line on a 320px screen */
@media (max-width:560px){.rr-insights .ip-subscribe-copy h2 br{display:none}}
.rr-insights .ip-subscribe-copy p{font-size:16px;line-height:1.7;color:#4e5c6b;margin:0 0 20px;max-width:46ch}
.rr-insights .ip-subscribe-freq{
  display:flex;align-items:flex-start;gap:12px;padding:16px 18px;
  background:var(--ip-paper);border:1px solid var(--ip-line);border-radius:10px;
  font-family:var(--ip-mono);font-size:11.5px;line-height:1.65;letter-spacing:.05em;
  color:#4d5c6c;max-width:44ch;
}
.rr-insights .ip-subscribe-freq i{
  width:7px;height:7px;border-radius:50%;background:var(--ip-orange);flex:0 0 auto;margin-top:5px;
}
.rr-insights .ip-subscribe-form{
  background:var(--ip-paper);border:1px solid var(--ip-line);border-radius:var(--ip-radius-lg);
  padding:clamp(24px,3vw,34px);
}
.rr-insights .ip-field{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.rr-insights .ip-field label{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ip-deep);display:flex;gap:8px;align-items:baseline;
}
.rr-insights .ip-field label em{font-style:normal;color:var(--ip-slate);letter-spacing:.08em}
.rr-insights .ip-field input,
.rr-insights .ip-field select{
  font-family:var(--ip-body);font-size:15px;color:var(--ip-graphite);
  background:var(--ip-paper);border:1px solid var(--ip-line-strong);
  border-radius:9px;padding:13px 14px;min-height:48px;width:100%;
  transition:border-color .2s,box-shadow .2s;
}
.rr-insights .ip-field select{
  appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23667789' stroke-width='2' stroke-linecap='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;background-size:16px;
  padding-right:40px;
}
.rr-insights .ip-field input:focus,
.rr-insights .ip-field select:focus{
  outline:none;border-color:var(--ip-blue-ink);box-shadow:0 0 0 3px rgba(0,184,245,.18);
}
.rr-insights .ip-field input[aria-invalid="true"]{border-color:#b3402a;box-shadow:0 0 0 3px rgba(179,64,42,.13)}
.rr-insights .ip-field-error{font-size:12.5px;color:#a03a24;min-height:1px}
.rr-insights .ip-subscribe-form .ip-btn{width:100%;margin-top:4px}
.rr-insights .ip-subscribe-form .ip-btn[disabled]{opacity:.6;cursor:default;transform:none}
.rr-insights .ip-form-msg{
  margin-top:16px;font-size:13.5px;line-height:1.6;min-height:1px;
  padding:0;color:#4e5c6b;
}
.rr-insights .ip-form-msg.is-success{
  color:#0f6c3d;background:#f0faf4;border:1px solid #bde5cd;border-radius:9px;padding:12px 14px;
}
.rr-insights .ip-form-msg.is-error{
  color:#a03a24;background:#fdf3f1;border:1px solid #f0cfc6;border-radius:9px;padding:12px 14px;
}
.rr-insights .ip-form-fine{
  margin-top:14px;font-size:11.5px;line-height:1.6;color:var(--ip-slate);
}
.rr-insights .ip-spinner{
  width:15px;height:15px;border-radius:50%;flex:0 0 auto;
  border:2px solid rgba(7,21,34,.28);border-top-color:var(--ip-navy);
  animation:ip-spin .7s linear infinite;
}
@keyframes ip-spin{to{transform:rotate(360deg)}}

/* --------------------------------------------------------------------------
   RelatedPapers
   -------------------------------------------------------------------------- */
.rr-insights .ip-related-head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  margin-bottom:34px;flex-wrap:wrap;
}
.rr-insights .ip-related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}

/* --------------------------------------------------------------------------
   Responsive — every breakpoint is designed, not shrunk
   -------------------------------------------------------------------------- */
@media (max-width:1040px){
  .rr-insights .ip-hero-inner{grid-template-columns:1fr;gap:38px}
  /* cover moves below the hero copy on smaller screens */
  .rr-insights .ip-hero-cover{order:2;max-width:320px;margin:0 auto}
  .rr-insights .ip-hero-copy{order:1}
  .rr-insights .ip-cover-3d .ip-cover{transform:none}
  .rr-insights .ip-cover-3d .ip-cover-frame::after{display:none}
  .rr-insights .ip-featured{grid-template-columns:230px 1fr;gap:32px}
  .rr-insights .ip-lib-grid,
  .rr-insights .ip-related-grid{grid-template-columns:repeat(2,1fr)}
  .rr-insights .ip-apps{grid-template-columns:repeat(2,1fr)}
  .rr-insights .ip-apps .ip-app:nth-child(3n+1){padding-left:30px;border-left:1px solid var(--ip-line)}
  .rr-insights .ip-apps .ip-app:nth-child(2n+1){padding-left:0;border-left:0}
  .rr-insights .ip-assess{grid-template-columns:1fr}
  .rr-insights .ip-assess-panel{position:static}
  .rr-insights .ip-audience{grid-template-columns:1fr}
  .rr-insights .ip-fw-chain{grid-template-columns:repeat(3,1fr)}
  .rr-insights .ip-phase{grid-template-columns:52px 1fr;gap:18px}
  .rr-insights .ip-phase-out{grid-column:2;padding-left:0;padding-top:14px;border-left:0;border-top:1px solid var(--ip-line-dark);margin-top:14px}
}

@media (max-width:760px){
  .rr-insights .ip-shell{padding:0 20px}
  .rr-insights .ip-takeaways{grid-template-columns:1fr}
  .rr-insights .ip-takeaway{padding:26px 0}
  .rr-insights .ip-takeaways{border-left:0}
  .rr-insights .ip-takeaway{border-right:0}
  .rr-insights .ip-featured{grid-template-columns:1fr;gap:28px}
  .rr-insights .ip-featured-cover{max-width:240px}
  .rr-insights .ip-lib-grid,
  .rr-insights .ip-related-grid{grid-template-columns:1fr;max-width:420px;margin-inline:auto}
  .rr-insights .ip-apps{grid-template-columns:1fr}
  .rr-insights .ip-apps .ip-app,
  .rr-insights .ip-apps .ip-app:nth-child(3n+1),
  .rr-insights .ip-apps .ip-app:nth-child(2n+1){padding:24px 0 22px;border-left:0}
  .rr-insights .ip-subscribe{grid-template-columns:1fr}
  .rr-insights .ip-author{grid-template-columns:1fr;gap:26px}
  .rr-insights .ip-author-portrait{max-width:180px}
  .rr-insights .ip-audience-list{grid-template-columns:1fr}
  .rr-insights .ip-mat-stage{grid-template-columns:1fr;gap:14px}
  .rr-insights .ip-mat-rail{flex-direction:row;align-items:center;gap:14px}
  .rr-insights .ip-mat-bar{width:120px;flex:0 0 auto}
  .rr-insights .ip-hero-facts{margin-left:0;width:100%;gap:14px 20px}
  .rr-insights .ip-actions .ip-btn{flex:1 1 100%}
  .rr-insights .ip-fw-detail{grid-template-columns:1fr;gap:14px}
  .rr-insights .ip-fw-detail-no{font-size:28px}
  .rr-insights .ip-assess-item{grid-template-columns:1fr}
  .rr-insights .ip-assess-opts{width:100%}
  .rr-insights .ip-assess-opts label{flex:1}
  .rr-insights .ip-assess-opts span{width:100%}
  .rr-insights .ip-statement-support{padding-left:18px}
  .rr-insights .ip-filters{gap:2px 22px}
}

/* The framework chain becomes a readable vertical stack rather than a
   squeezed row — the arrows rotate to keep the sequence obvious. */
@media (max-width:600px){
  .rr-insights .ip-fw-chain{grid-template-columns:1fr;gap:8px}
  .rr-insights .ip-fw-step{
    flex-direction:row;align-items:center;gap:14px;padding:14px 16px;
  }
  .rr-insights .ip-fw-step-glyph{width:44px;height:32px;flex:0 0 auto}
  .rr-insights .ip-fw-step-no{flex-direction:column;align-items:flex-start;gap:4px;flex:0 0 auto}
  /* the chain runs downward here, so the connector should point that way */
  .rr-insights .ip-fw-chevron{transform:rotate(90deg)}
  .rr-insights .ip-fw-step-inner{display:flex;flex-direction:column;gap:4px}
}

/* --------------------------------------------------------------------------
   Motion + print
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  .rr-insights *,
  .rr-insights *::before,
  .rr-insights *::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
  /* the whole path is drawn rather than a travelling dash — keep it quieter */
  .rr-insights .ip-flow-line{stroke-dasharray:none;opacity:.16}
  /* the travelling mark is the only motion here — remove it entirely */
  .rr-insights .ip-reg-pulse{display:none}
  .rr-insights .ip-cover-3d .ip-cover{transform:none}
  .rr-insights .ip-cover-3d .ip-cover-frame::after{display:none}
}

/* The download CTA falls back to this print view until a PDF edition exists. */
@media print{
  .rr-insights .site-header,
  .rr-insights .site-footer,
  .site-header,.site-footer,
  .rr-insights .ip-hero-cover,
  .rr-insights .ip-actions,
  .rr-insights .ip-assess-opts,
  .rr-insights .ip-subscribe,
  .rr-insights .ip-related,
  .rr-insights .ip-hero-breadcrumb,
  .rr-insights .ip-hero-note,
  .rr-insights .ip-assess-panel,
  #rr-consent-bar,
  .rr-insights .ip-grid-bg{display:none!important}
  .rr-insights .ip-section,
  .rr-insights .ip-hero,
  .rr-insights .ip-statement{
    padding:22px 0!important;background:#fff!important;color:#000!important;
    break-inside:avoid;
  }
  .rr-insights .ip-hero h1,.rr-insights .ip-hero-sub,
  .rr-insights .ip-section--dark h2,.rr-insights .ip-section--dark h3,
  .rr-insights .ip-section--deep h2,.rr-insights .ip-section--deep h3,
  .rr-insights .ip-author h2{color:#071522!important}
  .rr-insights .ip-section--dark p,.rr-insights .ip-section--deep p,
  .rr-insights .ip-author p,.rr-insights .ip-phase p{color:#333!important}
  .rr-insights .ip-fw-step{border:1px solid #ccc!important;background:#fff!important;color:#000!important}
  .rr-insights .ip-fw-step-name{color:#071522!important}
  .rr-insights .ip-hero-inner{display:block}
  .rr-insights .ip-article{max-width:none}
}

/* --------------------------------------------------------------------------
   PaperFeedback — the reader comment dialog, opened from the hero
   -------------------------------------------------------------------------- */
.rr-insights .ip-feedback-badge{
  font-family:var(--ip-mono);font-size:10.5px;line-height:1;
  padding:4px 7px;border-radius:20px;
  background:rgba(245,248,252,.16);color:inherit;
}

.rr-insights .ip-feedback-backdrop{
  /* above the consent banner (z-index 2000, set in rr_analytics.js) — while a
     modal dialog is open nothing may sit over it, and the banner is still
     there to answer once the dialog is closed */
  position:fixed;inset:0;z-index:2100;
  display:flex;align-items:center;justify-content:center;padding:clamp(12px,3vw,40px);
  background:rgba(7,21,34,.66);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;transition:opacity .22s ease;
}
.rr-insights .ip-feedback-backdrop[hidden]{display:none}
.rr-insights .ip-feedback-backdrop.is-open{opacity:1}

.rr-insights .ip-feedback-modal{
  background:var(--ip-paper);border-radius:var(--ip-radius-lg);
  width:min(1020px,100%);max-height:min(88vh,900px);
  display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 30px 80px rgba(7,21,34,.42);
  transform:translateY(14px) scale(.985);transition:transform .22s ease;
}
.rr-insights .ip-feedback-backdrop.is-open .ip-feedback-modal{transform:none}
@media (prefers-reduced-motion:reduce){
  .rr-insights .ip-feedback-backdrop,
  .rr-insights .ip-feedback-modal{transition:none}
}

.rr-insights .ip-feedback-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  padding:clamp(20px,2.6vw,30px) clamp(20px,3vw,34px);
  background:var(--ip-navy);color:var(--ip-ice);flex:0 0 auto;
}
.rr-insights .ip-feedback-head .ip-eyebrow{color:var(--ip-blue);margin-bottom:8px}
.rr-insights .ip-feedback-title{
  font-family:var(--ip-display);font-size:clamp(19px,2.2vw,25px);font-weight:600;
  line-height:1.25;letter-spacing:-.02em;color:#fff;margin:0;
}
.rr-insights .ip-feedback-standfirst{
  margin:8px 0 0;font-size:13.5px;line-height:1.6;color:var(--ip-ice-dim);max-width:60ch;
}
.rr-insights .ip-feedback-close{
  flex:0 0 auto;width:40px;height:40px;border-radius:10px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:rgba(245,248,252,.10);border:1px solid rgba(245,248,252,.20);
  color:var(--ip-ice);transition:background .2s,border-color .2s;
}
.rr-insights .ip-feedback-close:hover{background:rgba(245,248,252,.20);border-color:var(--ip-blue)}
.rr-insights .ip-feedback-close svg{width:18px;height:18px}

.rr-insights .ip-feedback-body{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(20px,3vw,38px);
  padding:clamp(20px,3vw,34px);
  overflow-y:auto;-webkit-overflow-scrolling:touch;
}

.rr-insights .ip-feedback-form{align-self:start}
.rr-insights .ip-feedback-form-title{
  font-family:var(--ip-display);font-size:17px;font-weight:600;color:var(--ip-navy);
  margin:0 0 18px;
}
.rr-insights .ip-feedback-row{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.rr-insights .ip-feedback-form .ip-field textarea{
  font-family:var(--ip-body);font-size:15px;color:var(--ip-graphite);line-height:1.6;
  background:var(--ip-paper);border:1px solid var(--ip-line-strong);
  border-radius:9px;padding:13px 14px;width:100%;resize:vertical;min-height:120px;
  transition:border-color .2s,box-shadow .2s;
}
.rr-insights .ip-feedback-form .ip-field textarea:focus{
  outline:none;border-color:var(--ip-blue-ink);box-shadow:0 0 0 3px rgba(0,184,245,.18);
}
.rr-insights .ip-feedback-form .ip-field textarea[aria-invalid="true"]{
  border-color:#b3402a;box-shadow:0 0 0 3px rgba(179,64,42,.13);
}
.rr-insights .ip-feedback-form .ip-btn{width:100%;margin-top:4px}
.rr-insights .ip-feedback-form .ip-btn[disabled]{opacity:.6;cursor:default;transform:none}

.rr-insights .ip-feedback-thread{
  border-left:1px solid var(--ip-line);padding-left:clamp(20px,3vw,38px);min-width:0;
}
.rr-insights .ip-feedback-thread-title{
  font-family:var(--ip-display);font-size:17px;font-weight:600;color:var(--ip-navy);
  margin:0 0 18px;display:flex;align-items:baseline;gap:8px;
}
.rr-insights .ip-feedback-thread-title span{
  font-family:var(--ip-mono);font-size:11px;font-weight:500;color:var(--ip-slate);
}
.rr-insights .ip-feedback-state{font-size:13.5px;line-height:1.6;color:var(--ip-slate);margin:0}
.rr-insights .ip-feedback-state.is-error{color:#a03a24}

.rr-insights .ip-feedback-list{list-style:none;margin:0;padding:0;display:grid;gap:0}
.rr-insights .ip-feedback-list li{
  padding:18px 0;border-bottom:1px solid var(--ip-line);
}
.rr-insights .ip-feedback-list li:first-child{padding-top:0}
.rr-insights .ip-feedback-list li:last-child{border-bottom:0}
.rr-insights .ip-feedback-list li.is-new{animation:ip-fb-in .35s ease}
@keyframes ip-fb-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

.rr-insights .ip-feedback-meta{
  display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;margin-bottom:8px;
}
.rr-insights .ip-feedback-who{
  font-family:var(--ip-display);font-size:14.5px;font-weight:600;color:var(--ip-navy);
}
.rr-insights .ip-feedback-org{font-size:13px;color:var(--ip-slate)}
.rr-insights .ip-feedback-when{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.10em;text-transform:uppercase;
  color:var(--ip-slate);margin-left:auto;
}
.rr-insights .ip-feedback-text{
  font-size:15px;line-height:1.68;color:#39465a;margin:0;white-space:pre-wrap;
  overflow-wrap:anywhere;
}

/* --- feedback responsive: the thread moves under the form --- */
@media (max-width:900px){
  .rr-insights .ip-feedback-body{grid-template-columns:1fr}
  .rr-insights .ip-feedback-thread{
    border-left:0;padding-left:0;
    border-top:1px solid var(--ip-line);padding-top:clamp(20px,4vw,28px);
  }
  .rr-insights .ip-feedback-when{margin-left:0}
}
@media (max-width:560px){
  .rr-insights .ip-feedback-row{grid-template-columns:1fr}
  .rr-insights .ip-feedback-modal{max-height:94vh}
}

/* the dialog is a browser surface, not part of the paper — never print it */
@media print{
  .rr-insights .ip-feedback-backdrop{display:none !important}
}

/* --------------------------------------------------------------------------
   PaperIndex — the full section index under the contents cards

   The contents cards carry a paper's shape; this carries every one of its
   numbered sections. Used by papers long enough that the cards alone cannot
   reach a named section (Paper 02 runs to 37). Closed by default, so the page
   still opens on the paper rather than on a wall of navigation.
   -------------------------------------------------------------------------- */
.rr-insights .ip-index-band{
  background:var(--ip-ice);padding:0 0 clamp(34px,4vw,52px);
}
.rr-insights .ip-index details{
  border:1px solid var(--ip-line);border-radius:var(--ip-radius);
  background:var(--ip-paper);
}
.rr-insights .ip-index-summary{
  display:flex;align-items:center;gap:14px;cursor:pointer;
  padding:16px 20px;list-style:none;
}
/* the default disclosure triangle is replaced by the chevron on the right */
.rr-insights .ip-index-summary::-webkit-details-marker{display:none}
.rr-insights .ip-index-summary::marker{content:""}
.rr-insights .ip-index-summary:focus-visible{outline:2px solid var(--ip-blue);outline-offset:2px}
.rr-insights .ip-index-label{
  font-family:var(--ip-display);font-size:15px;font-weight:600;color:var(--ip-navy);
}
.rr-insights .ip-index-count{
  font-family:var(--ip-mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ip-slate);
}
.rr-insights .ip-index-chevron{
  width:16px;height:16px;margin-left:auto;flex:0 0 auto;
  color:var(--ip-slate);transition:transform .2s;
}
.rr-insights .ip-index details[open] .ip-index-chevron{transform:rotate(180deg)}
@media (prefers-reduced-motion:reduce){
  .rr-insights .ip-index-chevron{transition:none}
}
.rr-insights .ip-index-body{
  border-top:1px solid var(--ip-line);
  padding:clamp(20px,2.6vw,28px) 20px;
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(20px,2.6vw,32px);
}
.rr-insights .ip-index-group{min-width:0}
.rr-insights .ip-index-group-title{
  font-family:var(--ip-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ip-orange-ink);margin:0 0 10px;padding-bottom:8px;
  border-bottom:1px solid var(--ip-line);
}
.rr-insights .ip-index-group-title a{color:inherit;text-decoration:none}
.rr-insights .ip-index-group-title a:hover{text-decoration:underline}
.rr-insights .ip-index-list{list-style:none;margin:0;padding:0;display:grid;gap:1px}
.rr-insights .ip-index-list a{
  display:flex;gap:10px;align-items:baseline;padding:5px 0;
  font-size:14px;line-height:1.5;color:#39465a;text-decoration:none;
}
.rr-insights .ip-index-list a:hover{color:var(--ip-blue-ink)}
.rr-insights .ip-index-list a:focus-visible{outline:2px solid var(--ip-blue);outline-offset:2px}
.rr-insights .ip-index-no{
  font-family:var(--ip-mono);font-size:11px;color:var(--ip-slate);
  flex:0 0 auto;min-width:20px;
}
.rr-insights .ip-index-list a:hover .ip-index-no{color:var(--ip-orange-ink)}
@media (max-width:940px){
  .rr-insights .ip-index-body{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:620px){
  .rr-insights .ip-index-body{grid-template-columns:1fr;padding-left:16px;padding-right:16px}
  .rr-insights .ip-index-summary{padding:14px 16px;flex-wrap:wrap;gap:4px 12px}
  .rr-insights .ip-index-chevron{margin-left:auto}
}

/* --------------------------------------------------------------------------
   Long-form furniture that the reading column had not needed before
   -------------------------------------------------------------------------- */
/* a table set inside the reading column rather than at full shell width */
.rr-insights .ip-article .ip-table-wrap{margin:28px 0 26px}

/* A two-column table has no need of the 640px floor that keeps a wide,
   many-column table legible. On a phone that floor hides the second column
   behind a horizontal scroll; a two-column table would rather wrap. */
@media (max-width:640px){
  .rr-insights .ip-table--pair{min-width:0}
  .rr-insights .ip-table--pair tbody th{white-space:normal;width:38%}
  .rr-insights .ip-table--pair th,
  .rr-insights .ip-table--pair td{padding:13px 14px}
}

/* a figure set at shell width between two runs of the reading column — the
   figure carries no bottom margin of its own, so the prose would butt onto it */
.rr-insights .ip-figure + .ip-article{margin-top:clamp(30px,4vw,48px)}

/* the statement device carrying several supporting paragraphs, not one */
.rr-insights .ip-statement-support p{margin:0 0 16px}
.rr-insights .ip-statement-support p:last-child{margin-bottom:0}

/* .ip-article on a dark band. The reading column was built for light surfaces,
   so the ink values have to be restated — otherwise list items, rules and bold
   text keep their light-surface colours and disappear. */
/* `.ip-article p` is defined after `.ip-section--dark p` and matches at the
   same specificity, so on a dark band the reading column would otherwise win
   with its light-surface ink and leave body copy at roughly 1.5:1. */
.rr-insights .ip-section--dark .ip-article p,
.rr-insights .ip-section--deep .ip-article p{color:#bdcddd}
.rr-insights .ip-section--dark .ip-article p.ip-article-lead,
.rr-insights .ip-section--deep .ip-article p.ip-article-lead{color:#e2ecf6}
.rr-insights .ip-section--dark .ip-article ul li,
.rr-insights .ip-section--deep .ip-article ul li,
.rr-insights .ip-section--dark ol.ip-ol > li,
.rr-insights .ip-section--deep ol.ip-ol > li{color:#bdcddd}
.rr-insights .ip-section--dark ol.ip-ol > li::before,
.rr-insights .ip-section--deep ol.ip-ol > li::before{color:var(--ip-blue)}
.rr-insights .ip-section--dark .ip-article h3,
.rr-insights .ip-section--deep .ip-article h3,
.rr-insights .ip-section--dark .ip-h-num,
.rr-insights .ip-section--deep .ip-h-num{border-top-color:var(--ip-line-dark)}
.rr-insights .ip-section--dark .ip-h-num span,
.rr-insights .ip-section--deep .ip-h-num span{color:var(--ip-orange)}
.rr-insights .ip-section--dark .ip-article strong,
.rr-insights .ip-section--deep .ip-article strong{color:#fff}
.rr-insights .ip-section--dark .ip-article a,
.rr-insights .ip-section--deep .ip-article a{color:#9fd9f4}
.rr-insights .ip-section--dark .ip-article-standfirst,
.rr-insights .ip-section--deep .ip-article-standfirst{color:#9fd9f4}
.rr-insights .ip-section--dark .ip-principle,
.rr-insights .ip-section--deep .ip-principle{color:#fff}

@media print{
  /* the index is navigation, not the paper */
  .rr-insights .ip-index-band{display:none!important}
  /* a scroll region cannot scroll on paper — let the table set its own width */
  .rr-insights .ip-table-wrap{overflow:visible!important;border-color:#bbb!important}
  .rr-insights .ip-table{min-width:0!important}
  .rr-insights .ip-table th,
  .rr-insights .ip-table td{color:#000!important}
  .rr-insights .ip-table thead th{background:#f1f4f8!important;color:#000!important}
  /* display type sized for a screen band is unreadable at A4 */
  .rr-insights .ip-statement blockquote{font-size:23px!important;line-height:1.3!important}
  .rr-insights .ip-statement-support{color:#333!important}
}
