/* Venturi docs brand layer on top of Material for MkDocs. */

/* Token values track the Venturi editorial canon (the investor-faqs page):
   pure white canvas, slate ink, 1px hairline structure, measurement blue as the
   single actionable accent (teal stays reserved for live/measured signal, never
   decoration). System font stacks only — no webfonts (theme.font is false in
   mkdocs.yml). The site ships light-only: the palette toggle is removed in
   mkdocs.yml and html is pinned to color-scheme: light.
   NOTE: scripts/validate_contrast.py parses the --venturi-* hex tokens out of
   the light and dark (slate-scheme) token blocks below and asserts the WCAG-AA
   pairs — keep the token NAMES and BOTH blocks intact, and do not mention the
   selectors verbatim in comments above the blocks (the validator locates each
   block by its first occurrence in the file). The dark block is unreachable
   while the palette is light-only, but it stays validated so a dark scheme can
   be re-enabled safely later. */
/* Material's off-canvas drawer and search overlay extend past the viewport on
   narrow screens; without containment the body scrolls ~7px horizontally at
   375px. clip (not hidden) avoids creating a new scroll container. */
body {
  overflow-x: clip;
}

/* Material does not ship a reusable visually-hidden utility. The header
   override adds real text names to its label-based controls; keep those names
   available to assistive technology without rendering them as tiny captions
   under the menu and search icons. */
.md-visually-hidden {
  border: 0 !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  height: 1px !important;
  margin: -1px !important;
  overflow: hidden !important;
  padding: 0 !important;
  position: absolute !important;
  white-space: nowrap !important;
  width: 1px !important;
}

:root {
  --venturi-ink: #0f172a;            /* editorial ink — slate-900 */
  --venturi-muted: #475569;          /* editorial muted — slate-600 (AA on white) */
  --venturi-subtle: #64748b;         /* metadata — slate-500 (AA on white) */
  --venturi-border: #e2e8f0;         /* quiet hairline — slate-200 */
  --venturi-border-strong: #cbd5e1;  /* structural hairline — slate-300 */
  --venturi-canvas: #ffffff;         /* editorial canon: pure white canvas */
  --venturi-surface: #ffffff;
  --venturi-surface-alt: #f1f5f9;    /* alt surface — slate-100 */
  --venturi-navy: #0f172a;           /* brand navy */
  --venturi-teal: #0f766e;           /* signal teal — reserved for live signal */
  --venturi-teal-bright: #0f766e;    /* pinned to the AA-safe teal on white */
  --venturi-blue: #2563eb;           /* measurement blue — PRIMARY accent */
  --venturi-blue-strong: #1d4ed8;    /* accent deep — prose links, hover */
  --venturi-safe-top: env(safe-area-inset-top, 0px);
  --venturi-safe-right: env(safe-area-inset-right, 0px);
  --venturi-safe-bottom: env(safe-area-inset-bottom, 0px);
  --venturi-safe-left: env(safe-area-inset-left, 0px);

  /* Editorial system tokens (non-color; ignored by the contrast validator). */
  --venturi-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --venturi-display: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --venturi-mono: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  --venturi-r-card: 12px;            /* card radius (0.75rem at 16px root) */
  --venturi-r-control: 6px;          /* control radius */
  --venturi-accent-wash: rgb(37 99 235 / 0.07);
  --venturi-shadow-quiet: 0 8px 24px -20px rgb(15 23 42 / 0.18);
  --venturi-operating-measure: 46rem;   /* fills the column at laptop widths; <=86% of the article on a 1920 canvas, where Material scales the root to 22px */

  --md-text-font: var(--venturi-sans);
  --md-code-font: var(--venturi-mono);
  --md-primary-fg-color: var(--venturi-surface);
  --md-primary-bg-color: var(--venturi-ink);
  --md-accent-fg-color: var(--venturi-blue);
  --md-typeset-a-color: var(--venturi-blue-strong);
  --md-default-bg-color: var(--venturi-canvas);
  --md-default-fg-color: var(--venturi-ink);
  --md-default-fg-color--light: var(--venturi-muted);
  --md-code-bg-color: #f1f5f9;
  --md-code-fg-color: #1e293b;
}

/* Retained for scripts/validate_contrast.py and a safe dark re-enable path;
   unreachable while mkdocs.yml pins a single light palette. */
[data-md-color-scheme="slate"] {
  --venturi-ink: #eff3f8;            /* corpus dark text */
  --venturi-muted: #bac5d4;          /* corpus dark secondary */
  --venturi-subtle: #91a0b4;         /* corpus dark metadata */
  --venturi-border: #1e2738;         /* corpus dark quiet hairline */
  --venturi-border-strong: #313e54;  /* corpus dark structural hairline */
  --venturi-canvas: #080b12;         /* corpus dark bg */
  --venturi-surface: #0e131e;        /* corpus dark surface */
  --venturi-surface-alt: #121926;    /* corpus dark alt surface */
  --venturi-navy: #0f172a;           /* corpus navy */
  --venturi-teal: #5ec4b6;           /* corpus dark signal teal — secondary */
  --venturi-teal-bright: #5ec4b6;
  --venturi-blue: #7eb6ff;           /* corpus dark measurement blue — PRIMARY */
  --venturi-blue-strong: #9dc8ff;    /* corpus dark accent hover / active */

  --md-primary-fg-color: #0e131e;
  --md-primary-bg-color: var(--venturi-ink);
  --md-accent-fg-color: var(--venturi-blue);
  --md-typeset-a-color: var(--venturi-blue);
  --md-default-bg-color: var(--venturi-canvas);
  --md-default-fg-color: var(--venturi-ink);
  --md-default-fg-color--light: var(--venturi-muted);
  --md-code-bg-color: #121926;
  --md-code-fg-color: #eff3f8;
}

/* Material's palette stylesheet re-declares --md-typeset-a-color at body
   scheme scope, mapping it onto --md-primary-fg-color — which this layer
   repurposes to white for the header. That mapping made code-inside-link text
   render white on the code background. Pin the link token at the same scope
   so the theme mapping can never win the cascade. */
[data-md-color-scheme="default"] {
  --md-typeset-a-color: var(--venturi-blue-strong);
  /* Material re-declares the light foreground token at this scope too, which
     left code comments, shell variables ($VENTURI_CLIENT_ID), operators and
     punctuation at rgba(0,0,0,.54) on the code surface: 4.47:1, under AA. */
  --md-default-fg-color--light: var(--venturi-muted);
  --md-code-hl-comment-color: var(--venturi-muted);
  --md-code-hl-variable-color: var(--venturi-muted);
  --md-code-hl-operator-color: var(--venturi-muted);
  --md-code-hl-punctuation-color: var(--venturi-muted);
}

html {
  -webkit-text-size-adjust: 100%;
  color-scheme: light;
  scroll-padding-top: calc(3.2rem + var(--venturi-safe-top));
}

body {
  /* Editorial canon: pure white, no gradients, no canvas fades. */
  background: var(--venturi-canvas);
}

.md-grid {
  /* Fluid through ordinary desktop widths, then bounded only on ultrawide
     canvases. 1792px keeps 93% of a 1920px viewport in use (the rendered
     contract bounds the ultrawide shell to 86-94%) so the reading column is as
     wide as the rails allow instead of sitting in a narrow band in the middle. */
  max-width: 1792px;
}

.md-header {
  background: var(--venturi-surface);
  border-bottom: 1px solid var(--venturi-border);
  box-shadow: none;
  color: var(--venturi-ink);
}

.md-header__inner {
  min-height: 3.4rem;
}

.md-header__button.md-logo {
  border-radius: var(--venturi-r-control);
  margin: 0.25rem 0.35rem;
}

.md-header__button.md-logo img,
.md-header__button.md-logo svg {
  height: 1.55rem;
  width: 1.55rem;
}

.md-header__title {
  /* Wordmark register: display stack, weight 650, letter-spacing 0. */
  font-family: var(--venturi-display);
  font-size: 1rem;
  font-weight: 650;
  letter-spacing: 0;
}

.md-search__form {
  background: var(--venturi-surface);
  border: 1px solid var(--venturi-border-strong);
  border-radius: var(--venturi-r-control);
  box-shadow: none;
}

.md-search__form:hover,
.md-search__form:focus-within {
  border-color: var(--venturi-blue);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--venturi-blue) 16%, transparent);
}

.md-search__input,
.md-search__icon {
  color: var(--venturi-ink);
}

.md-search__input::placeholder {
  color: var(--venturi-subtle);
  opacity: 1;
}

.md-main {
  background: transparent;
}

/* Breadcrumbs (navigation.path): quiet metadata register. */
.md-path {
  margin-bottom: 0.2rem;
}

.md-path__list {
  color: var(--venturi-subtle);
  /* Material's breadcrumb row is a no-wrap flex line that hard-clips the last
     item mid-word on narrow screens; wrapping keeps every crumb readable. */
  flex-wrap: wrap;
  font-size: max(0.68rem, 14px);
}

.md-path__link {
  color: var(--venturi-subtle);
}

.md-path__link:is(:focus, :hover) {
  color: var(--venturi-blue-strong);
}

.md-content {
  background: var(--venturi-surface);
  container: venturi-content / inline-size;
}

.md-content__inner {
  margin-bottom: 3rem;
  padding-top: 1.6rem;
}

.md-content__inner::before {
  display: none;
}

.md-sidebar {
  color: var(--venturi-muted);
}

.md-sidebar--primary .md-sidebar__scrollwrap {
  scrollbar-color: var(--venturi-border-strong) transparent;
}

.md-nav__title {
  color: var(--venturi-ink);
  font-weight: 700;
}

/* The primary sidebar exposes 5 predictable customer task groups. */
.md-sidebar--primary .md-nav[data-md-level="0"] > .md-nav__list > .md-nav__item > .md-nav__link {
  color: var(--venturi-ink);
  font-weight: 650;
}

.md-nav--primary > .md-nav__list > .md-nav__item > .md-nav__link {
  white-space: nowrap;
}

.md-sidebar--primary .md-nav[data-md-level="0"] > .md-nav__list > .md-nav__item {
  margin-bottom: 0.1rem;
}

.md-sidebar--primary .md-nav[data-md-level="0"] > .md-nav__list > .md-nav__item > .md-nav__link--active {
  color: var(--venturi-blue-strong);
}

/* Section indexes (navigation.indexes) render as a .md-nav__container holding
   the page link and the expand toggle side by side. The container carries the
   .md-nav__link class itself, so the row padding was applied twice (a 9px
   extra indent) and the visible link fell through to the generic muted
   register — "Start" and "Integrate" read as children of their siblings.
   On the desktop rail the container contributes no padding of its own and
   the inner link keeps the row register of its level. (In the drawer Material
   already moves the padding onto the container and zeroes the children, so
   the reset is desktop-only.) */
@media screen and (min-width: 76.25em) {
  .md-nav__item .md-nav__link.md-nav__container {
    padding: 0;
  }
}

.md-sidebar--primary .md-nav[data-md-level="0"] > .md-nav__list > .md-nav__item > .md-nav__container > a.md-nav__link {
  color: var(--venturi-ink);
  font-weight: 650;
}

.md-sidebar--primary .md-nav[data-md-level="0"] > .md-nav__list > .md-nav__item > .md-nav__container > a.md-nav__link--active {
  color: var(--venturi-blue-strong);
}

/* The expand toggle beside an index link is icon-only; keep it a real target. */
.md-nav__container > label.md-nav__link {
  flex: none;
  justify-content: center;
  min-width: 1.6rem;
}

.md-nav__item .md-nav__link {
  border-radius: var(--venturi-r-control);
  color: var(--venturi-muted);
  font-weight: 500;
  margin: 0.08rem 0;
  padding: 0.35rem 0.45rem;
}

.md-nav__link:is(:focus, :hover) {
  background: var(--venturi-surface-alt);
  color: var(--venturi-ink);
}

.md-header__button:focus-visible,
.md-nav__link:focus-visible,
.md-path__link:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

.md-nav__link--active,
.md-nav__item .md-nav__link--active {
  background: var(--venturi-accent-wash);
  color: var(--venturi-blue-strong);
  font-weight: 650;
}

/* TOC title stays in the load-bearing navigation register: sentence case,
   14px minimum, and quiet tracking. */
.md-sidebar--secondary .md-nav__title {
  color: var(--venturi-muted);
  font-size: max(0.7rem, 14px);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: none;
}

/* Keep long developer headings scannable without dropping below the 14px
   load-bearing navigation floor. */
.md-sidebar--secondary .md-nav__link {
  font-size: max(0.7rem, 14px);
  line-height: 1.42;
  margin: 0.04rem 0;
  padding: 0.26rem 0.4rem;
}

.md-typeset {
  color: var(--venturi-ink);
  font-size: 0.8rem;
}

.md-typeset p,
.md-typeset li {
  line-height: 1.68;
}

.md-typeset h1,
.md-typeset h2,
.md-typeset h3,
.md-typeset h4 {
  color: var(--venturi-ink);
  font-family: var(--venturi-display);
  font-weight: 650;
  letter-spacing: 0;
}

.md-typeset h1 {
  border-bottom: 1px solid var(--venturi-border);
  font-size: 2rem;
  line-height: 1.12;
  margin: 0 0 1.35rem;
  padding-bottom: 0.85rem;
}

.md-typeset h2 {
  font-size: 1.32rem;
  line-height: 1.15;
  margin-top: 2.15rem;
}

.md-typeset h3 {
  font-size: 1rem;
  line-height: 1.25;
}

/* Measure: prose, lists, tables, code and grids all share the full content
   column. The column itself is bounded by the shell (max 1792px) and the two
   navigation rails, so line length is governed by the layout rather than by a
   per-block cap that left the text sitting in a narrow band beside full-width
   furniture. */

.md-typeset a {
  color: var(--venturi-blue-strong);
  font-weight: 600;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
  transition: color 150ms ease;
}

.md-typeset a:is(:focus, :hover) {
  color: var(--venturi-ink);
}

.md-typeset a:focus-visible {
  border-radius: 2px;
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

.md-typeset hr {
  border-bottom-color: var(--venturi-border);
}

.md-typeset strong {
  font-weight: 600;
}

/* Buttons: neutral controls use the active-theme surface; semantic primary
   actions use measurement blue. Compact control radius per the Web Interaction
   Standards: full-radius pills are reserved for badges. */
.md-typeset .md-button {
  align-items: center;
  background: var(--venturi-surface);
  border: 1px solid var(--venturi-border-strong);
  border-radius: var(--venturi-r-control);
  box-shadow: none;
  color: var(--venturi-ink);
  display: inline-flex;
  font-weight: 600;
  justify-content: center;
  min-height: 2.75rem;
  padding: 0.55rem 1rem;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

.md-typeset .md-button:is(:focus, :hover) {
  background: var(--venturi-surface-alt);
  border-color: color-mix(in srgb, var(--venturi-blue) 50%, transparent);
  color: var(--venturi-ink);
}

.md-typeset .md-button--primary {
  background: var(--venturi-blue);
  border-color: var(--venturi-blue);
  border-radius: 6px;
  color: #ffffff;
  min-height: 2.75rem;
}

.md-typeset .md-button:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

/* Dark (slate) scheme is unreachable while the palette is light-only; kept so a
   re-enable cannot ship a low-contrast button (see validate_contrast.py). */
[data-md-color-scheme="slate"] .md-typeset .md-button--primary {
  color: #0f172a;
}

.md-typeset .md-button--primary:is(:hover, :active) {
  background: var(--venturi-blue-strong);
  border-color: var(--venturi-blue-strong);
  color: #ffffff;
}

[data-md-color-scheme="slate"] .md-typeset .md-button--primary:is(:hover, :active) {
  color: #0f172a;
}

.md-typeset .grid.cards > ul {
  gap: 0.85rem;
}

.md-typeset .grid.cards > ul > li {
  background: var(--venturi-surface);
  border: 1px solid var(--venturi-border);
  border-radius: var(--venturi-r-card);
  box-shadow: none;
  transition: background-color 150ms ease, border-color 150ms ease;
}

.md-typeset .grid.cards > ul > li:hover,
.md-typeset .grid.cards > ul > li:focus-within {
  background: var(--venturi-accent-wash);
  border-color: color-mix(in srgb, var(--venturi-blue) 50%, var(--venturi-border));
}

.md-typeset .grid.cards .lg {
  color: var(--venturi-blue);
}

/* Capabilities is a developer task index, not a marketing-card collection.
   One full-width route per workflow keeps destination density even and avoids
   the stranded fifth-card layout at desktop widths. */
.venturi-capability-start {
  align-items: stretch;
  border-block: 1px solid var(--venturi-border);
  display: grid;
  grid-template-columns: max-content repeat(2, minmax(0, 1fr));
  margin: 1.15rem 0 1.75rem;
  max-inline-size: var(--venturi-operating-measure);
  padding: 0;
}

.venturi-capability-start > strong {
  align-items: center;
  display: flex;
  font-size: 0.72rem;
  font-weight: 650;
  padding: 0.7rem 0.85rem 0.7rem 0;
}

.md-typeset .venturi-capability-start > a {
  align-items: center;
  border-left: 1px solid var(--venturi-border);
  color: var(--venturi-blue-strong);
  display: flex;
  font-weight: 600;
  gap: 0.7rem;
  justify-content: space-between;
  min-height: 2.75rem;
  padding: 0.65rem 0.8rem;
  text-decoration: none;
  transition: background-color 150ms ease, color 150ms ease;
}

.md-typeset .venturi-capability-start > a:is(:hover, :active) {
  background: var(--venturi-accent-wash);
  color: var(--venturi-ink);
}

.md-typeset .venturi-capability-start > a:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

.venturi-capability-start__arrow {
  flex: none;
  font-size: 0.9rem;
}

.venturi-capability-index {
  border-top: 1px solid var(--venturi-border-strong);
  display: block;
  margin: 0.7rem 0 1.9rem;
  max-inline-size: var(--venturi-operating-measure);
}

.md-typeset .venturi-capability-row {
  align-items: center;
  border-bottom: 1px solid var(--venturi-border);
  color: var(--venturi-ink);
  display: grid;
  font-weight: 400;
  gap: 0.85rem;
  grid-template-columns: 2.25rem minmax(0, 1fr) 1.5rem;
  min-height: 4.5rem;
  padding: 0.9rem 0.7rem;
  text-decoration: none;
  transition: background-color 150ms ease, color 150ms ease;
}

.md-typeset .venturi-capability-row:is(:focus, :hover) {
  background: var(--venturi-accent-wash);
  color: var(--venturi-ink);
}

.md-typeset .venturi-capability-row:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 2px;
}

.venturi-capability-row__number {
  align-self: start;
  color: var(--venturi-subtle);
  font-family: var(--venturi-mono);
  font-size: 0.64rem;
  font-variant-numeric: tabular-nums;
}

.venturi-capability-row__copy {
  display: grid;
  gap: 0.22rem;
  line-height: 1.48;
}

.venturi-capability-row__copy strong {
  color: var(--venturi-ink);
  font-family: var(--venturi-display);
  font-size: 0.9rem;
  font-weight: 650;
}

.venturi-capability-row__copy > span {
  color: var(--venturi-muted);
  font-size: 0.76rem;
  font-weight: 400;
  max-width: 76ch;
}

.venturi-capability-row__arrow {
  color: var(--venturi-blue-strong);
  font-size: 1rem;
  justify-self: end;
}

.md-typeset .venturi-confidence-bands > ul:not([hidden]),
.md-typeset .venturi-result-contract > ul:not([hidden]) {
  border-block: 1px solid var(--venturi-border);
  display: grid;
  gap: 0;
  list-style: none;
  margin: 0.8rem 0 1.6rem;
  padding: 0;
}

.md-typeset .venturi-confidence-bands > ul:not([hidden]) {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.venturi-confidence-bands > ul > li {
  margin: 0;
  padding: 0.85rem 1rem;
}

.venturi-confidence-bands > ul > li + li {
  border-left: 1px solid var(--venturi-border);
}

.venturi-confidence-bands p,
.venturi-result-contract p {
  margin: 0.25rem 0 0;
}

.venturi-confidence-bands li > strong:first-child,
.venturi-result-contract li > strong:first-child {
  display: block;
}

.venturi-confidence-bands code {
  display: block;
  margin-top: 0.35rem;
  width: max-content;
}

.md-typeset .venturi-result-contract > ul:not([hidden]) {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.venturi-result-contract > ul > li {
  margin: 0;
  padding: 0.8rem 1rem;
}

.venturi-result-contract > ul > li:nth-child(even) {
  border-left: 1px solid var(--venturi-border);
}

.venturi-result-contract > ul > li:nth-child(n + 3) {
  border-top: 1px solid var(--venturi-border);
}

/* Content-furniture type step (GAP extension, derivation: midpoint between
   Material's 0.64rem furniture default and the 0.8rem body register): tables
   and admonitions carry load-bearing copy, so they step up to 0.72rem instead
   of sitting a full register below body text. */
.md-typeset table:not([class]) {
  background: var(--venturi-surface);
  border: 1px solid var(--venturi-border);
  border-radius: var(--venturi-r-card);
  box-shadow: none;
  font-size: 0.72rem;
  overflow: hidden;
}

.md-typeset table:not([class]) th {
  background: var(--venturi-surface-alt);
  color: var(--venturi-ink);
  font-weight: 600;
}

.md-typeset table:not([class]) td,
.md-typeset table:not([class]) th {
  border-color: var(--venturi-border);
  padding: 0.7em 0.9em;
  vertical-align: top;
}

.md-typeset table:not([class]) td {
  font-variant-numeric: tabular-nums;
}

.md-typeset__scrollwrap,
.md-typeset .highlight {
  -webkit-overflow-scrolling: touch;
}

.md-typeset code {
  border: 1px solid color-mix(in srgb, var(--venturi-border) 70%, transparent);
  border-radius: 5px;
  padding: 0.08em 0.34em;
}

.md-typeset pre > code {
  border: 0;
  border-radius: 0;
  padding: 0;
}

.md-typeset .highlight {
  border: 1px solid var(--venturi-border);
  border-radius: var(--venturi-r-card);
  box-shadow: none;
  overflow: hidden;
}

.md-typeset .highlight > pre {
  -webkit-overflow-scrolling: touch;
}

.md-typeset .admonition,
.md-typeset details {
  background: var(--venturi-surface);
  border: 1px solid var(--venturi-border);
  border-left: 2px solid var(--venturi-blue);
  border-radius: var(--venturi-r-card);
  box-shadow: none;
  font-size: 0.72rem;
}

.md-typeset .admonition-title,
.md-typeset summary {
  background: var(--venturi-accent-wash);
  color: var(--venturi-ink);
  font-weight: 650;
}

/* Task-list checkmarks report verification outcomes ("verify.sh exited 0"),
   which is live/measured signal — Material's hardcoded #00e676 green is the
   one off-palette color that leaks through the brand layer. */
.md-typeset [type="checkbox"]:checked + .task-list-indicator::before {
  background-color: var(--venturi-teal);
}

/* Semantic admonition types → Venturi palette (corpus alignment). Informational
   types (note/info/abstract) use measurement blue; tip uses the corpus signal
   teal. True-status types (warning/danger/success/failure/bug) keep Material's
   semantic status colors, per the corpus rule that status colors are reserved
   for true status. The box border stays a neutral 1px hairline; only the thin
   left rule, title wash, and icon carry the accent. */
.md-typeset .admonition.note,
.md-typeset details.note,
.md-typeset .admonition.info,
.md-typeset details.info,
.md-typeset .admonition.abstract,
.md-typeset details.abstract {
  border-color: var(--venturi-border);
  border-left-color: var(--venturi-blue);
}
.md-typeset .note > .admonition-title,
.md-typeset .note > summary,
.md-typeset .info > .admonition-title,
.md-typeset .info > summary,
.md-typeset .abstract > .admonition-title,
.md-typeset .abstract > summary {
  background-color: var(--venturi-accent-wash);
}
.md-typeset .note > .admonition-title::before,
.md-typeset .note > summary::before,
.md-typeset .info > .admonition-title::before,
.md-typeset .info > summary::before,
.md-typeset .abstract > .admonition-title::before,
.md-typeset .abstract > summary::before {
  background-color: var(--venturi-blue);
}

.md-typeset .admonition.question,
.md-typeset details.question {
  border-color: var(--venturi-border);
  border-left-color: var(--venturi-blue);
}
.md-typeset .question > .admonition-title,
.md-typeset .question > summary {
  background-color: var(--venturi-accent-wash);
}
.md-typeset .question > .admonition-title::before,
.md-typeset .question > summary::before {
  background-color: var(--venturi-blue);
}

.md-typeset .admonition.tip,
.md-typeset details.tip {
  border-color: var(--venturi-border);
  border-left-color: var(--venturi-teal);
}
.md-typeset .tip > .admonition-title,
.md-typeset .tip > summary {
  background-color: color-mix(in srgb, var(--venturi-teal) 8%, transparent);
}
.md-typeset .tip > .admonition-title::before,
.md-typeset .tip > summary::before {
  background-color: var(--venturi-teal);
}

.md-typeset .tabbed-set {
  margin: 1.1rem 0;
}

.md-typeset .tabbed-labels {
  gap: 0.3rem;
}

.md-typeset .tabbed-labels > label {
  border: 1px solid var(--venturi-border);
  border-radius: var(--venturi-r-control) var(--venturi-r-control) 0 0;
  color: var(--venturi-muted);
  font-weight: 600;
  padding: 0.55rem 0.75rem;
}

.md-typeset .tabbed-labels > label:hover {
  color: var(--venturi-ink);
}

.md-typeset .tabbed-content {
  background: var(--venturi-surface);
  border: 1px solid var(--venturi-border);
  border-radius: 0 var(--venturi-r-card) var(--venturi-r-card);
  padding: 0.15rem 0.95rem 0.95rem;
}

/* Quickstart: expose the operating contract as a compact summary and keep
   each step's success/recovery evidence beside the action it qualifies. This
   uses the wide content rail for information hierarchy, not longer lines. */
.venturi-quickstart-summary {
  border-block: 1px solid var(--venturi-border-strong);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(11rem, 0.9fr);
  margin: 0 0 1.6rem;
}

.venturi-quickstart-summary__item {
  min-width: 0;
  padding: 0.85rem 1rem;
}

.venturi-quickstart-summary__item + .venturi-quickstart-summary__item {
  border-left: 1px solid var(--venturi-border);
}

.venturi-quickstart-summary__label,
.venturi-quickstart-summary__value,
.venturi-quickstart-summary__detail {
  display: block;
}

.venturi-quickstart-summary__label {
  color: var(--venturi-subtle);
  font-size: max(0.64rem, 14px);
  font-weight: 650;
  letter-spacing: 0.04em;
  margin-bottom: 0.3rem;
  text-transform: uppercase;
}

.venturi-quickstart-summary__value {
  color: var(--venturi-ink);
  font-size: 0.86rem;
  font-weight: 650;
  line-height: 1.35;
}

.venturi-quickstart-summary__detail {
  color: var(--venturi-muted);
  font-size: 0.72rem;
  line-height: 1.5;
  margin-top: 0.25rem;
}

.md-typeset .venturi-quickstart-summary__action {
  align-items: center;
  background: var(--venturi-blue);
  color: #ffffff;
  display: flex;
  font-weight: 650;
  gap: 0.75rem;
  justify-content: space-between;
  min-height: 2.75rem;
  padding: 0.85rem 1rem;
  text-decoration: none;
  transition: background-color 150ms ease;
}

.md-typeset .venturi-quickstart-summary__action:is(:hover, :active) {
  background: var(--venturi-blue-strong);
  color: #ffffff;
}

.md-typeset .venturi-quickstart-summary__action:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

.venturi-availability {
  border-left: 3px solid var(--venturi-blue);
  margin: 0 0 1.5rem;
  max-width: var(--venturi-operating-measure);
  padding: 0.15rem 0 0.15rem 1rem;
}

.venturi-availability p {
  margin: 0;
}

.venturi-availability p + p {
  margin-top: 0.65rem;
}

.venturi-milestone-compare {
  border-block: 1px solid var(--venturi-border-strong);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0.8rem 0 2rem;
}

.venturi-milestone-compare > div {
  min-width: 0;
  padding: 0.85rem 1rem;
}

.venturi-milestone-compare > div + div {
  border-left: 1px solid var(--venturi-border);
}

.venturi-milestone-compare strong,
.venturi-milestone-compare span {
  display: block;
}

.venturi-milestone-compare strong {
  color: var(--venturi-ink);
  font-size: 0.8rem;
  font-weight: 650;
}

.venturi-milestone-compare span {
  color: var(--venturi-muted);
  font-size: 0.72rem;
  line-height: 1.52;
  margin-top: 0.3rem;
}

.venturi-runbook {
  border-bottom: 1px solid var(--venturi-border-strong);
  counter-reset: venturi-runbook-step;
  margin-top: 0.8rem;
}

.venturi-runbook-step {
  border-top: 1px solid var(--venturi-border-strong);
  counter-increment: venturi-runbook-step;
  display: grid;
  gap: 1.15rem 1.75rem;
  grid-template-columns: minmax(0, 1.65fr) minmax(15rem, 0.75fr);
  padding: 1.35rem 0;
}

.md-typeset .venturi-runbook-step > h2 {
  grid-column: 1 / -1;
  margin: 0;
  padding-left: 3.1rem;
  position: relative;
}

.md-typeset .venturi-runbook-step > h2::before {
  color: var(--venturi-blue-strong);
  content: counter(venturi-runbook-step, decimal-leading-zero);
  font-family: var(--venturi-mono);
  font-size: max(0.64rem, 14px);
  font-variant-numeric: tabular-nums;
  font-weight: 500;
  left: 0.1rem;
  line-height: 1.55;
  position: absolute;
  top: 0.05rem;
}

.venturi-runbook-step__role {
  color: var(--venturi-muted);
  font-size: 0.72rem;
  grid-column: 1 / -1;
  line-height: 1.5;
  margin: -0.75rem 0 0 3.1rem;
}

.venturi-runbook-step__body {
  min-width: 0;
}

.venturi-runbook-step__body > :first-child,
.venturi-runbook-step__proof > :first-child {
  margin-top: 0;
}

.venturi-runbook-step__body > :last-child,
.venturi-runbook-step__proof > :last-child {
  margin-bottom: 0;
}

.venturi-runbook-step__proof {
  align-self: start;
  background: color-mix(in srgb, var(--venturi-blue) 3%, var(--venturi-surface));
  border-left: 3px solid var(--venturi-border-strong);
  color: var(--venturi-muted);
  font-size: 0.72rem;
  line-height: 1.55;
  min-width: 0;
  padding: 0.8rem 0.95rem;
}

.venturi-runbook-step__proof p {
  margin: 0;
}

.venturi-runbook-step__proof p + p {
  border-top: 1px solid var(--venturi-border);
  margin-top: 0.7rem;
  padding-top: 0.7rem;
}

.venturi-runbook-step__proof strong {
  color: var(--venturi-ink);
  display: block;
  font-size: max(0.68rem, 14px);
  margin-bottom: 0.15rem;
}

@container venturi-content (max-width: 56rem) {
  .venturi-quickstart-summary {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .md-typeset .venturi-quickstart-summary__action {
    grid-column: 1 / -1;
  }
}

@container venturi-content (max-width: 42rem) {
  .venturi-quickstart-summary,
  .venturi-milestone-compare,
  .venturi-runbook-step {
    grid-template-columns: 1fr;
  }

  .venturi-quickstart-summary__item + .venturi-quickstart-summary__item,
  .venturi-milestone-compare > div + div {
    border-left: 0;
    border-top: 1px solid var(--venturi-border);
  }

  .md-typeset .venturi-quickstart-summary__action {
    grid-column: auto;
  }

  .venturi-runbook-step {
    gap: 0.9rem;
  }
}

/* On phone layouts, retain the 3 decision facts while dropping their repeated
   explanatory lines. The runbook immediately below carries the full detail;
   this keeps the first executable action in the initial viewport instead of
   presenting a wall of summary copy. */
@media screen and (max-width: 38em) {
  .venturi-quickstart-summary__item {
    padding: 0.65rem 0.75rem;
  }

  .venturi-quickstart-summary__label {
    margin-bottom: 0.15rem;
  }

  .venturi-quickstart-summary__detail {
    display: none;
  }

  .md-typeset .venturi-quickstart-summary__action {
    padding: 0.7rem 0.75rem;
  }
}

/* Homepage: a compact task index and explanatory rails, not a marketing hero
   or card grid. The same row contract serves task and role entry points. */
.venturi-home-lead {
  color: var(--venturi-muted);
  font-size: 0.92rem;
  line-height: 1.62;
  margin: -0.45rem 0 1.9rem;
}

.venturi-home-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
}

.venturi-home-section {
  min-width: 0;
}

.venturi-index {
  border-top: 1px solid var(--venturi-border-strong);
  display: block;
  margin: 0.7rem 0 2rem;
}

.md-typeset .venturi-index__row {
  align-items: baseline;
  border-bottom: 1px solid var(--venturi-border);
  color: var(--venturi-ink);
  display: grid;
  gap: 1rem;
  grid-template-columns: minmax(0, 1fr) max-content;
  min-height: 3.35rem;
  padding: 0.78rem 0.35rem;
  text-decoration: none;
  transition: background-color 150ms ease, color 150ms ease;
}

.md-typeset .venturi-index__row:is(:hover, :active) {
  background: var(--venturi-accent-wash);
  color: var(--venturi-ink);
}

.md-typeset .venturi-index__row:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

.venturi-index__label {
  line-height: 1.5;
  min-width: 0;
}

.venturi-index__label > strong {
  color: var(--venturi-ink);
  font-weight: 650;
}

.venturi-index__action {
  color: var(--venturi-blue-strong);
  font-size: 0.7rem;
  font-weight: 650;
  white-space: nowrap;
}

.md-typeset ol.venturi-system-map:not([hidden]) {
  display: grid;
}

.venturi-system-map {
  border-block: 1px solid var(--venturi-border-strong);
  gap: 0;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  list-style: none;
  margin: 0.7rem 0 1rem;
  padding: 0;
}

.md-typeset .venturi-system-map > li {
  margin: 0;
  min-width: 0;
  padding: 0.85rem;
}

.md-typeset .venturi-system-map > li:nth-child(even) {
  border-left: 1px solid var(--venturi-border);
}

.md-typeset .venturi-system-map > li:nth-child(n + 3) {
  border-top: 1px solid var(--venturi-border);
}

.venturi-system-map strong,
.venturi-system-map span {
  display: block;
}

.venturi-system-map strong {
  color: var(--venturi-ink);
  font-size: 0.76rem;
  font-weight: 650;
  line-height: 1.35;
  margin-bottom: 0.35rem;
}

.venturi-system-map span {
  color: var(--venturi-muted);
  font-size: max(0.7rem, 14px);
  line-height: 1.5;
}

.venturi-state-key {
  border-block: 1px solid var(--venturi-border-strong);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0.9rem 0 1.6rem;
}

.venturi-state-key > div {
  margin: 0;
  padding: 0.8rem;
}

.venturi-state-key > div:nth-child(even) {
  border-left: 1px solid var(--venturi-border);
}

.venturi-state-key > div:nth-child(n + 3) {
  border-top: 1px solid var(--venturi-border);
}

.venturi-state-key dt {
  color: var(--venturi-ink);
  font-size: 0.74rem;
  font-weight: 650;
}

.md-typeset .venturi-state-key dd {
  color: var(--venturi-muted);
  font-size: 0.7rem;
  line-height: 1.5;
  margin: 0.25rem 0 0;
}

/* Back-to-top (navigation.top): quiet outlined pill instead of elevation.
   The state rule mirrors the outlined-button states; without it Material's
   own :focus/:hover rule fills the pill with solid accent blue. */
.md-top {
  background: var(--venturi-surface);
  border: 1px solid var(--venturi-border-strong);
  box-shadow: var(--venturi-shadow-quiet);
  color: var(--venturi-muted);
}

.md-top:is(:focus, :hover) {
  background: var(--venturi-surface-alt);
  border-color: color-mix(in srgb, var(--venturi-blue) 50%, var(--venturi-border));
  color: var(--venturi-ink);
}

/* Footer: light surface with hairline structure instead of Material's solid
   dark band. Prev/next become quiet cards in the site register. */
.md-footer {
  background: var(--venturi-surface);
  border-top: 1px solid var(--venturi-border);
  color: var(--venturi-ink);
}

.md-footer__link {
  align-items: center;
  border: 1px solid var(--venturi-border);
  border-radius: var(--venturi-r-card);
  background: var(--venturi-surface);
  margin: 0.7rem 0;
  padding: 0.45rem 0.7rem;
  opacity: 1;
  transition: border-color 150ms ease, background-color 150ms ease;
}

.md-footer__link:is(:focus, :hover) {
  border-color: color-mix(in srgb, var(--venturi-blue) 50%, var(--venturi-border));
  background: var(--venturi-accent-wash);
  opacity: 1;
}

.md-footer__title {
  color: var(--venturi-ink);
  font-weight: 650;
}

.md-footer__direction {
  color: var(--venturi-subtle);
  opacity: 1;
}

.md-footer__button {
  color: var(--venturi-muted);
}

.md-footer-meta {
  background: transparent;
  border-top: 1px solid var(--venturi-border);
}

.md-footer-meta__inner {
  justify-content: flex-start;
  min-height: 3.4rem;
}

.md-copyright,
.md-copyright:empty {
  display: none;
}

html .md-footer-meta.md-typeset a,
.md-copyright,
.md-copyright__highlight {
  color: var(--venturi-subtle);
}

html .md-footer-meta.md-typeset a:is(:focus, :hover) {
  color: var(--venturi-blue-strong);
}

.md-social {
  align-items: center;
  display: flex;
  padding: 0.3rem 0;
}

.md-social__link {
  align-items: center;
  border-radius: 6px;
  display: inline-flex;
  height: 2.75rem;
  justify-content: center;
  margin: 0;
  width: 2.75rem;
}

html .md-footer-meta .md-social__link:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

.md-social__link svg {
  fill: var(--venturi-subtle);
  height: 1.2rem;
  max-height: none;
  width: 1.2rem;
}

@media screen and (max-width: 76.1875em) {
  /* Mobile drawer: Material colors the active link and section title with
     --md-primary-fg-color, which this theme sets to the (white) surface for
     the light header — leaving the active item near-invisible. Pin drawer
     text back to the token palette. */
  .md-nav--primary .md-nav__title {
    background: var(--venturi-surface-alt);
    color: var(--venturi-ink);
  }

  .md-nav--primary .md-nav__title .md-nav__icon {
    color: var(--venturi-ink);
  }

  .md-nav--primary .md-nav__item .md-nav__link--active,
  .md-nav--primary .md-nav__link--active {
    color: var(--venturi-blue-strong);
  }

  .md-nav--primary .md-nav__item .md-nav__link--active .md-nav__icon,
  .md-nav--primary .md-nav__button {
    color: var(--venturi-muted);
  }

  /* Index rows split into link + toggle; the toggle is the only way to expand
     the group without navigating, so it gets the 44px touch floor. */
  .md-nav--primary .md-nav__container > label.md-nav__link {
    min-width: 2.75rem;
  }
}

@media screen and (max-width: 59.9375em) {
  .md-header {
    padding-top: var(--venturi-safe-top);
  }

  .md-header__inner {
    min-height: 2.7rem;
    padding-left: max(0.2rem, var(--venturi-safe-left));
    padding-right: max(0.2rem, var(--venturi-safe-right));
  }

  /* 2.75rem = 44px: touch-target floor for standalone header controls. */
  .md-header__button {
    align-items: center;
    display: inline-flex;
    justify-content: center;
    min-height: 2.75rem;
    min-width: 2.75rem;
  }

  .md-header__button.md-logo {
    height: 2.75rem;
    margin: 0 0.15rem;
    width: 2.75rem;
  }

  .md-search__form {
    min-height: 2.75rem;
  }

  .md-search__overlay {
    height: 2.75rem;
    width: 2.75rem;
  }

  .md-nav__item .md-nav__link {
    align-items: center;
    display: flex;
    min-height: 2.75rem;
    padding-bottom: 0.55rem;
    padding-top: 0.55rem;
  }

  .md-sidebar--primary .md-sidebar__scrollwrap {
    padding-bottom: max(1rem, var(--venturi-safe-bottom));
  }

  .md-content__inner {
    padding-top: 1.4rem;
  }

  .md-typeset h1 {
    font-size: 1.72rem;
    margin-bottom: 1.35rem;
  }

}

/* Material hides the Previous footer label below this width (restoring it
   crowds out the Next card), but this theme's card chrome stays — leaving an
   empty bordered card at every page ending. Drop the chrome so the icon-only
   Previous control reads as a quiet arrow, not an empty card. */
@media screen and (max-width: 44.984375em) {
  .md-footer__link--prev {
    background: transparent;
    border: 0;
  }
}

@media screen and (max-width: 38em) {
  .md-typeset {
    font-size: 0.78rem;
  }

  .md-content__inner {
    padding-left: 0.9rem;
    padding-right: 0.9rem;
  }

  .md-typeset h1 {
    font-size: 1.54rem;
    line-height: 1.16;
    margin-bottom: 1rem;
  }

  .md-typeset p,
  .md-typeset li {
    line-height: 1.58;
  }

  .venturi-capability-start {
    grid-template-columns: 1fr;
    margin: 0.85rem 0 1.35rem;
  }

  .venturi-capability-start > strong {
    padding: 0.65rem 0;
  }

  .md-typeset .venturi-capability-start > a {
    border-left: 0;
    border-top: 1px solid var(--venturi-border);
    min-height: 2.75rem;
    padding: 0.65rem 0.15rem;
  }

  .md-typeset .venturi-capability-row {
    gap: 0.65rem;
    grid-template-columns: 1.75rem minmax(0, 1fr) 1.15rem;
    min-height: 4.75rem;
    padding: 0.8rem 0.25rem;
  }

  .venturi-capability-row__copy > span {
    font-size: 0.74rem;
    line-height: 1.5;
  }

  .md-typeset .venturi-confidence-bands > ul:not([hidden]),
  .md-typeset .venturi-result-contract > ul:not([hidden]) {
    grid-template-columns: 1fr;
  }

  .venturi-confidence-bands > ul > li,
  .venturi-result-contract > ul > li {
    border-left: 0 !important;
    padding: 0.75rem 0.2rem;
  }

  .venturi-confidence-bands > ul > li + li,
  .venturi-result-contract > ul > li + li {
    border-top: 1px solid var(--venturi-border);
  }

  .md-typeset code:not(pre code) {
    border-radius: 4px;
    overflow-wrap: anywhere;
    padding: 0.04em 0.24em;
    word-break: break-word;
  }

  /* Inside tables the anywhere-wrap above fractures copyable identifiers
     (contact@ventu/ri.systems, export:creat/e). Tables already live in their
     own horizontal scroll container, so tokens wrap only as whole units. */
  .md-typeset table:not([class]) code {
    overflow-wrap: normal;
    word-break: normal;
  }

  .md-typeset .highlight,
  .md-typeset__scrollwrap {
    margin-left: 0 !important;
    margin-right: 0 !important;
    max-width: 100%;
  }

  .md-typeset .highlight {
    border-radius: var(--venturi-r-control);
  }

  .md-typeset .highlight > pre,
  .md-typeset__scrollwrap {
    overflow-x: auto;
  }

  .md-typeset table:not([class]) td,
  .md-typeset table:not([class]) th {
    padding: 0.6em 0.72em;
  }

  .md-typeset .tabbed-content {
    padding-left: 0.7rem;
    padding-right: 0.7rem;
  }

  .venturi-system-map,
  .venturi-state-key {
    grid-template-columns: 1fr;
  }

  .md-typeset .venturi-system-map > li,
  .venturi-state-key > div {
    border-left: 0;
  }

  .md-typeset .venturi-system-map > li:nth-child(even) {
    border-left: 0;
  }

  .venturi-state-key > div:nth-child(even) {
    border-left: 0;
  }

  .md-typeset .venturi-system-map > li + li,
  .venturi-state-key > div + div {
    border-left: 0;
    border-top: 1px solid var(--venturi-border);
  }

  .md-typeset .venturi-index__row {
    align-items: start;
    gap: 0.7rem;
    grid-template-columns: 1fr;
    min-height: 3.6rem;
    padding-inline: 0.15rem;
  }

  .venturi-index__action {
    white-space: normal;
  }

}

/* Connector catalog: a compact factual snapshot, explicit state comparison,
   native disclosure groups, and compact row boundaries. */
.venturi-catalog-snapshot {
  border-block: 1px solid var(--venturi-border-strong);
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin: 0.9rem 0 1.8rem;
}

.venturi-catalog-snapshot__item {
  min-width: 0;
  padding: 0.8rem 0.9rem;
}

.venturi-catalog-snapshot__item + .venturi-catalog-snapshot__item {
  border-left: 1px solid var(--venturi-border);
}

.venturi-catalog-snapshot__item strong,
.venturi-catalog-snapshot__item span {
  display: block;
}

.venturi-catalog-snapshot__item strong {
  color: var(--venturi-ink);
  font-family: var(--venturi-display);
  font-size: 1.12rem;
  font-variant-numeric: tabular-nums;
  font-weight: 650;
  line-height: 1.1;
}

.venturi-catalog-snapshot__item span {
  color: var(--venturi-muted);
  font-size: max(0.68rem, 14px);
  line-height: 1.4;
  margin-top: 0.3rem;
}

.venturi-catalog-status-guide {
  border-block: 1px solid var(--venturi-border-strong);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0.8rem 0 0;
  max-width: var(--venturi-operating-measure);
}

.venturi-catalog-status-guide > div {
  min-width: 0;
  padding: 0.85rem 1rem;
}

.venturi-catalog-status-guide > div + div {
  border-left: 1px solid var(--venturi-border);
}

.venturi-catalog-status-guide p {
  color: var(--venturi-muted);
  font-size: 0.72rem;
  line-height: 1.5;
  margin: 0.6rem 0 0;
}

.md-typeset .venturi-catalog-status-note {
  border-bottom: 1px solid var(--venturi-border);
  color: var(--venturi-muted);
  font-size: 0.72rem;
  line-height: 1.55;
  margin: 0;
  max-width: var(--venturi-operating-measure);
  padding: 0.75rem 1rem;
}

@container venturi-content (max-width: 42rem) {
  .venturi-catalog-snapshot {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .venturi-catalog-snapshot__item {
    border-left: 0 !important;
    border-top: 1px solid var(--venturi-border);
  }

  .venturi-catalog-snapshot__item:nth-child(odd) {
    border-right: 1px solid var(--venturi-border);
  }

  .venturi-catalog-snapshot__item:nth-child(-n + 2) {
    border-top: 0;
  }

  .venturi-catalog-snapshot__item:last-child {
    border-right: 0;
    grid-column: 1 / -1;
  }

  .venturi-catalog-status-guide {
    grid-template-columns: 1fr;
  }

  .venturi-catalog-status-guide > div + div {
    border-left: 0;
    border-top: 1px solid var(--venturi-border);
  }
}

.venturi-catalog {
  border-bottom: 1px solid var(--venturi-border-strong);
  margin: 1rem 0 2rem;
}

.md-typeset .venturi-catalog__group {
  background: transparent;
  border: 0;
  border-top: 1px solid var(--venturi-border-strong);
  border-radius: 0;
  font-size: max(0.72rem, 14px);
  margin: 0;
}

.md-typeset .venturi-catalog__group > summary {
  background: transparent;
  box-sizing: border-box;
  color: var(--venturi-ink);
  cursor: pointer;
  line-height: 1.5;
  min-height: 44px;
  padding: 0.7rem 2.25rem 0.7rem 0.35rem;
  transition: background-color 150ms ease, color 150ms ease;
}

.md-typeset .venturi-catalog__group > summary::before {
  display: none;
}

.md-typeset .venturi-catalog__group > summary:is(:hover, :active) {
  background: var(--venturi-accent-wash);
}

.md-typeset .venturi-catalog__group > summary:focus-visible,
.md-typeset .venturi-reference-guide__link:focus-visible,
.md-typeset .venturi-acquisition-planned a:focus-visible,
.md-typeset .venturi-acquisition-index a:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

.venturi-catalog__category {
  font-weight: 650;
}

.venturi-catalog__count {
  color: var(--venturi-muted);
  float: right;
  font-weight: 500;
}

.venturi-catalog__rows {
  contain-intrinsic-size: auto 60rem;
  content-visibility: auto;
}

.venturi-catalog__row {
  align-items: start;
  border-top: 1px solid var(--venturi-border);
  display: grid;
  gap: 0.65rem 1rem;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1.35fr) minmax(0, 0.5fr) minmax(0, 1.7fr);
  min-width: 0;
  padding: 0.75rem 0.35rem;
}

.venturi-catalog__provider,
.venturi-catalog__fact,
.venturi-catalog__missing {
  min-width: 0;
}

.venturi-catalog__provider {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.venturi-catalog__fact > span:first-child,
.venturi-catalog__missing > span:first-child {
  color: var(--venturi-muted);
  display: block;
  font-size: max(0.68rem, 14px);
  font-weight: 600;
  margin-bottom: 0.18rem;
}

.venturi-catalog__fact > strong,
.venturi-catalog__missing > strong {
  color: var(--venturi-ink);
  display: block;
  font-size: max(0.7rem, 14px);
  line-height: 1.45;
}

.venturi-catalog__missing small {
  color: var(--venturi-muted);
  display: block;
  font-size: max(0.68rem, 14px);
  line-height: 1.5;
  margin-top: 0.3rem;
  overflow-wrap: anywhere;
}

.venturi-status {
  border: 1px solid var(--venturi-border-strong);
  border-radius: 999px;
  color: var(--venturi-muted);
  font-size: max(0.66rem, 14px);
  font-weight: 650;
  line-height: 1.4;
  padding: 0.08rem 0.45rem;
}

.venturi-status--certified,
.venturi-status--available {
  border-color: var(--venturi-teal);
  color: var(--venturi-ink);
}

.venturi-status--planned {
  border-color: var(--venturi-border-strong);
  color: var(--venturi-muted);
}

/* Catalog filtering. The default result set is Available now, and these two
   rules deliver that without JavaScript: the checkbox drives the hiding, so a
   reader with scripting disabled still gets the connectable providers first and
   can still reveal the rest. connector-catalog.js layers search, a live count,
   and URL state on top and hides rows with the same [hidden] attribute. */
.venturi-catalog:not(:has(.venturi-catalog-filters__checkbox--planned:checked))
  .venturi-catalog__row[data-availability="planned"] {
  display: none;
}

.venturi-catalog:not(:has(.venturi-catalog-filters__checkbox--planned:checked))
  .venturi-catalog__group[data-available="0"] {
  display: none;
}

.venturi-catalog:has(.venturi-catalog-filters__checkbox--guide:checked)
  .venturi-catalog__row[data-guide="none"] {
  display: none;
}

/* [hidden] is a UA rule, and the author display on these two would otherwise
   win it. */
.venturi-catalog__row[hidden],
.md-typeset .venturi-catalog__group[hidden] {
  display: none;
}

.venturi-catalog-filters {
  align-items: end;
  border-top: 1px solid var(--venturi-border-strong);
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 1.2rem;
  padding: 0.85rem 0.35rem;
}

.venturi-catalog-filters__field {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: min(100%, 16rem);
}

.venturi-catalog-filters label {
  color: var(--venturi-muted);
  font-size: max(0.68rem, 14px);
  font-weight: 600;
}

.venturi-catalog-filters__search {
  background: var(--venturi-surface);
  border: 1px solid var(--venturi-border-strong);
  border-radius: var(--venturi-r-control);
  color: var(--venturi-ink);
  font: inherit;
  min-height: 44px;
  padding: 0.35rem 0.6rem;
  width: 100%;
}

.venturi-catalog-filters__toggle {
  align-items: center;
  display: flex;
  gap: 0.4rem;
  min-height: 44px;
}

.venturi-catalog-filters__checkbox {
  height: 20px;
  width: 20px;
}

.md-typeset .venturi-catalog-filters__reset {
  background: transparent;
  border: 1px solid var(--venturi-border-strong);
  border-radius: var(--venturi-r-control);
  color: var(--venturi-ink);
  cursor: pointer;
  font: inherit;
  min-height: 44px;
  padding: 0.35rem 0.9rem;
  transition: background-color 150ms ease;
}

.md-typeset .venturi-catalog-filters__reset:is(:hover, :active) {
  background: var(--venturi-accent-wash);
}

.venturi-catalog-filters__search:focus-visible,
.venturi-catalog-filters__checkbox:focus-visible,
.md-typeset .venturi-catalog-filters__reset:focus-visible {
  outline: 2px solid var(--venturi-blue);
  outline-offset: 3px;
}

.md-typeset .venturi-catalog-filters__count {
  color: var(--venturi-muted);
  flex-basis: 100%;
  font-size: max(0.68rem, 14px);
  line-height: 1.5;
  margin: 0;
}

.venturi-reference-guides,
.venturi-acquisition-planned,
.venturi-acquisition-index {
  border-top: 1px solid var(--venturi-border-strong);
  margin: 0.8rem 0 1.8rem;
  max-inline-size: var(--venturi-operating-measure);
}

@container venturi-content (min-width: 48rem) {
  .venturi-home-grid {
    align-items: start;
    column-gap: 2rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    row-gap: 0.6rem;
  }
}

.md-typeset .venturi-reference-guide__link {
  align-items: baseline;
  border-bottom: 1px solid var(--venturi-border);
  color: var(--venturi-ink);
  display: grid;
  gap: 0.45rem 1rem;
  grid-template-columns: minmax(0, 1fr) minmax(10rem, 1fr);
  min-height: 44px;
  padding: 0.65rem 0.35rem;
  text-decoration: none;
  transition: background-color 150ms ease, color 150ms ease;
}

.md-typeset .venturi-reference-guide__link:is(:hover, :active) {
  background: var(--venturi-accent-wash);
}

.venturi-reference-guide__link > span {
  color: var(--venturi-muted);
  font-size: max(0.7rem, 14px);
}

.venturi-acquisition-index__row,
.venturi-acquisition-planned__row {
  align-items: center;
  border-bottom: 1px solid var(--venturi-border);
  display: grid;
  gap: 0.7rem 1.2rem;
  grid-template-columns: minmax(0, 1.45fr) minmax(12rem, 1fr);
  min-width: 0;
  padding: 0.7rem 0.35rem;
}

.venturi-acquisition-index__row > div,
.venturi-acquisition-index__row > nav,
.venturi-acquisition-planned__row > div,
.venturi-acquisition-planned__row > nav {
  min-width: 0;
}

.venturi-acquisition-index__row strong,
.venturi-acquisition-index__row span,
.venturi-acquisition-planned__row strong,
.venturi-acquisition-planned__row span {
  display: block;
}

.venturi-acquisition-index__row span,
.venturi-acquisition-planned__row span {
  color: var(--venturi-muted);
  font-size: max(0.7rem, 14px);
  line-height: 1.5;
  margin-top: 0.2rem;
}

/* The availability pill is a status, not body copy: keep it inline so it reads
   as a label beside the path name rather than a second sentence. */
.venturi-acquisition-index__row .venturi-status,
.venturi-acquisition-planned__row .venturi-status {
  display: inline-block;
  margin-top: 0.3rem;
  width: fit-content;
}

.venturi-acquisition-index__row > nav,
.venturi-acquisition-planned__row > nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0 0.9rem;
}

.md-typeset .venturi-acquisition-planned__row > nav > a,
.md-typeset .venturi-acquisition-index__row > nav > a {
  align-items: center;
  display: inline-flex;
  font-size: max(0.7rem, 14px);
  font-weight: 650;
  min-height: 44px;
  transition: color 150ms ease;
}

@media screen and (max-width: 59.9375em) {
  .venturi-catalog__row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media screen and (max-width: 38em) {
  .venturi-catalog__row,
  .md-typeset .venturi-reference-guide__link,
  .venturi-acquisition-planned__row,
  .venturi-acquisition-index__row {
    grid-template-columns: 1fr;
  }

  .venturi-catalog__row,
  .venturi-acquisition-planned__row,
  .venturi-acquisition-index__row {
    padding-inline: 0.15rem;
  }

  .venturi-catalog__count {
    float: none;
    margin-left: 0.35rem;
  }
}

/* Editorial motion rule: state changes may only fade color/background/border
   (≤180ms); reduced-motion users get instant everything. */
@media (prefers-reduced-motion: reduce) {
  .md-typeset a,
  .md-typeset .md-button,
  .md-typeset .grid.cards > ul > li,
  .md-typeset .venturi-catalog__group > summary,
  .md-footer__link {
    transition: none !important;
  }
}

/* Pre-rendered Mermaid diagrams. The build writes each SVG's natural pixel
   size and an inline fit-to-width rule (width 100%, max-width natural), so a
   diagram renders at its natural size when the column allows and scales down
   proportionally when it does not. Nothing clips and nothing scrolls: the
   diagram sources are laid out top-down where a left-to-right chain would be
   too wide to read at column width. Material's fit-content figure had been
   collapsing every wide diagram to the 300px replaced-element default. */
.md-typeset figure.mermaid {
  display: block;
  margin: 1.4rem 0;
  max-width: 100%;
  overflow: visible;
  text-align: center;
  width: auto;
}

.md-typeset figure.mermaid > svg {
  display: block;
  height: auto;
  margin: 0 auto;
  max-width: 100%;
}

/* Wide tables scroll inside Material's wrapper; the wrapper now shows a
   shadow at whichever edge still has content (the classic local/scroll
   two-layer background), so a clipped column reads as scrollable rather than
   cut off. The table surface is transparent so the cue shows through. */
.md-typeset__scrollwrap {
  background:
    linear-gradient(to right, var(--venturi-surface) 45%, rgb(255 255 255 / 0)) 0 0 / 48px 100% no-repeat local,
    linear-gradient(to left, var(--venturi-surface) 45%, rgb(255 255 255 / 0)) 100% 0 / 48px 100% no-repeat local,
    linear-gradient(to right, rgb(15 23 42 / 0.16), rgb(15 23 42 / 0)) 0 0 / 14px 100% no-repeat scroll,
    linear-gradient(to left, rgb(15 23 42 / 0.16), rgb(15 23 42 / 0)) 100% 0 / 14px 100% no-repeat scroll;
}

.md-typeset table:not([class]) {
  background: transparent;
}

/* Identifiers inside tables and admonitions inherit 0.85em of an already
   smaller register; keep them at a readable floor. */
.md-typeset table:not([class]) code,
.md-typeset .admonition code {
  font-size: max(0.85em, 13px);
}

/* Reference-guide rows are whole-row links; the title carries the link colour
   so the row reads as clickable before hover (touch has no hover). */
.md-typeset .venturi-reference-guide__link > strong {
  color: var(--venturi-blue-strong);
}

.md-typeset .venturi-reference-guide__link:is(:hover, :active) > strong {
  color: var(--venturi-ink);
}
