/* Airframe theme-v16 for the docs sites. Generated from airframe/docs-site/airframe-docs.css by scripts/airframe.py; do not edit. Load after airframe.css. */
@import url("https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,100..900&family=DM+Mono:wght@400;500&family=Red+Hat+Text:ital,wght@0,400..700;1,400..700&display=swap");

/*
  Airframe for the docs sites (Zensical / Material for MkDocs). Source: airframe/docs-site/airframe-docs.css
  in Sean-Koval/agent-factory, published as theme/airframe-docs.css by scripts/airframe.py build. Load after
  airframe.css. It maps the theme's --md-* variables onto Airframe tokens and adds the few Airframe details a
  docs page needs: display type for headings, sentence-case sans labels (theme-v13), the 2px product marker under the active tab,
  tonal blocks instead of boxed cards, the suite strip (airframe-suite.html) that links the family's docs sites and
  the shared footer (airframe-footer.html), both included through overrides/main.html.

  Each site sets its own product hue once (the default is neutral fg), e.g. in docs/stylesheets/product.css:
    :root { --af-product: var(--af-product-hangar); }
  and names itself for the strip in mkdocs.yml: extra: {airframe: {product: hangar}}.
*/

:root { --af-product: var(--af-fg); }

[data-md-color-scheme="slate"],
[data-md-color-scheme="default"] {
  --md-default-bg-color: var(--af-canvas);
  --md-default-bg-color--light: var(--af-surface);
  --md-default-bg-color--lighter: var(--af-raised);
  --md-default-bg-color--lightest: var(--af-overlay);
  --md-default-fg-color: var(--af-fg);
  --md-default-fg-color--light: var(--af-fg-muted);
  --md-default-fg-color--lighter: var(--af-fg-subtle);
  --md-default-fg-color--lightest: var(--af-line);

  --md-primary-fg-color: var(--af-surface);
  --md-primary-fg-color--light: var(--af-raised);
  --md-primary-fg-color--dark: var(--af-canvas);
  --md-primary-bg-color: var(--af-fg);
  --md-primary-bg-color--light: var(--af-fg-muted);

  --md-accent-fg-color: var(--af-brand-text);
  --md-accent-fg-color--transparent: var(--af-selected);
  --md-accent-bg-color: var(--af-on-brand);
  --md-accent-bg-color--light: var(--af-on-brand);

  --md-typeset-color: var(--af-fg);
  --md-typeset-a-color: var(--af-fg);
  --md-typeset-mark-color: var(--af-selected);
  --md-typeset-table-color: var(--af-line);
  --md-typeset-table-color--light: var(--af-surface);
  --md-typeset-kbd-color: var(--af-raised);
  --md-typeset-kbd-border-color: var(--af-line-strong);

  --md-code-fg-color: var(--af-terminal-fg);
  --md-code-bg-color: var(--af-terminal-bg);
  --md-code-hl-color: var(--af-selected);
  --md-code-hl-color--light: var(--af-selected);
  --md-code-hl-keyword-color: var(--af-code-keyword);
  --md-code-hl-function-color: var(--af-code-function);
  --md-code-hl-string-color: var(--af-code-string);
  --md-code-hl-number-color: var(--af-code-number);
  --md-code-hl-constant-color: var(--af-code-number);
  --md-code-hl-special-color: var(--af-code-number);
  --md-code-hl-name-color: var(--af-terminal-fg);
  --md-code-hl-variable-color: var(--af-terminal-fg);
  --md-code-hl-operator-color: var(--af-code-comment);
  --md-code-hl-punctuation-color: var(--af-code-comment);
  --md-code-hl-comment-color: var(--af-code-comment);
  --md-code-hl-generic-color: var(--af-code-comment);

  --md-footer-bg-color: var(--af-surface);
  --md-footer-bg-color--dark: var(--af-canvas);
  --md-footer-fg-color: var(--af-fg);
  --md-footer-fg-color--light: var(--af-fg-muted);
  --md-footer-fg-color--lighter: var(--af-fg-subtle);

  --md-admonition-bg-color: var(--af-surface);
  --md-admonition-fg-color: var(--af-fg);

  --md-mermaid-font-family: var(--af-font-sans);
  --md-mermaid-edge-color: var(--af-fg-subtle);
  --md-mermaid-node-bg-color: var(--af-raised);
  --md-mermaid-node-fg-color: var(--af-fg);
  --md-mermaid-label-bg-color: var(--af-canvas);
  --md-mermaid-label-fg-color: var(--af-fg-muted);

  --md-text-font-family: var(--af-font-sans);
  --md-code-font-family: var(--af-font-mono);
  --md-shadow-z1: none;
  --md-shadow-z2: none;
  --md-shadow-z3: 0 0 0 1px var(--af-line);
}

/* the theme's dark palette sets the link color per primary color, one step more specific than above */
[data-md-color-scheme][data-md-color-primary] { --md-typeset-a-color: var(--af-fg); }

body { background: var(--af-canvas); }
.md-typeset { font-feature-settings: "kern"; }

/* the suite strip (airframe-suite.html): one quiet row above the header; the current product carries the marker */
.md-banner { background: var(--af-canvas); color: var(--af-fg); border-bottom: 1px solid var(--af-line-subtle); overflow: visible; }
.md-banner__inner.md-typeset { margin: 0 auto; padding: 0 .8rem; font-size: inherit; }
.md-typeset .af-suite { display: flex; align-items: stretch; height: 30px; white-space: nowrap; overflow-x: auto; scrollbar-width: none; }
.md-typeset .af-suite::-webkit-scrollbar { display: none; }
.md-typeset .af-suite a { text-decoration: none; }
.md-typeset .af-suite__home { display: inline-flex; align-items: center; gap: .6em; padding-right: 1em; margin-right: .4em; color: var(--af-fg-muted); border-right: 1px solid var(--af-line); font-family: var(--af-font-sans); font-weight: 500; font-size: .6rem; letter-spacing: 0; text-transform: none; }
.md-typeset .af-suite__home::before { content: ""; width: 12px; height: 1px; background: var(--af-brand-line); flex: none; }
.md-typeset .af-suite .af-suite__list { list-style: none; margin: 0; padding: 0; display: flex; }
.md-typeset .af-suite .af-suite__list li { margin: 0; padding: 0; display: block; }
.md-typeset .af-suite__list a, .md-typeset .af-suite__list span { display: inline-flex; align-items: center; gap: .55em; height: 30px; padding: 0 .8em; line-height: 1; color: var(--af-fg-muted); font-family: var(--af-font-display); font-stretch: var(--af-display-stretch); font-weight: 700; font-size: .6rem; letter-spacing: 0; }
.md-typeset .af-suite__list small { font-family: var(--af-font-sans); font-weight: 500; font-size: .55rem; line-height: 1; padding-top: 1px; letter-spacing: 0; text-transform: none; color: var(--af-fg-subtle); opacity: 1; }
.md-typeset .af-suite__list span { color: var(--af-fg-subtle); }
.md-typeset .af-suite a:hover, .md-typeset .af-suite a:focus-visible { color: var(--af-fg); }
.md-typeset .af-suite [aria-current] { color: var(--af-fg); box-shadow: inset 0 -2px 0 var(--af-product); }
.md-typeset .af-suite__home[aria-current] { box-shadow: none; color: var(--af-fg); }
.md-typeset .af-suite__home[aria-current]::before { background: var(--af-brand); }
/* narrow screens: the row scrolls sideways and snaps to an item, a fade on each edge that has more says so (the
   partial's script scrolls the current item into view and marks the banner data-af-scrolled / data-af-at-end),
   and a spacer after the last item lets it scroll clear of the fade; nothing is cut */
@media (max-width: 959px) {
  .md-banner__inner.md-typeset { position: relative; }
  .md-banner__inner.md-typeset::before, .md-banner__inner.md-typeset::after { content: ""; position: absolute; top: 0; bottom: 0; width: 2.4rem; pointer-events: none; z-index: 1; transition: opacity var(--af-dur-fast, 120ms) linear; }
  .md-banner__inner.md-typeset::after { right: 0; background: linear-gradient(to right, transparent, var(--af-canvas) 70%); }
  .md-banner__inner.md-typeset::before { left: 0; opacity: 0; background: linear-gradient(to left, transparent, var(--af-canvas) 70%); }
  .md-banner__inner[data-af-scrolled]::before { opacity: 1; }
  .md-banner__inner[data-af-at-end]::after { opacity: 0; }
  .md-typeset .af-suite { scroll-snap-type: x proximity; overscroll-behavior-x: contain; }
  .md-typeset .af-suite .af-suite__list li, .md-typeset .af-suite__home { scroll-snap-align: start; }
  .md-typeset .af-suite .af-suite__list::after { content: ""; flex: none; width: 2.4rem; }
}
/* phones: product names only (the role words return in the suite's home page and each product's hero) */
@media (max-width: 480px) {
  .md-typeset .af-suite__home { padding-right: .6em; margin-right: 0; gap: .4em; }
  .md-typeset .af-suite__list small { display: none; }
  .md-typeset .af-suite__list a, .md-typeset .af-suite__list span { padding: 0 .55em; }
}

/* header and tabs: flat, with the product's 2px marker */
.md-header, .md-tabs { background: var(--af-canvas); color: var(--af-fg); box-shadow: none; }
.md-header { border-bottom: 1px solid var(--af-line); }
.md-header__title { font-family: var(--af-font-display); font-stretch: var(--af-display-stretch); font-weight: var(--af-display-weight); letter-spacing: var(--af-display-track); }
.md-tabs { border-bottom: 1px solid var(--af-line); }
.md-tabs__link { font-family: var(--af-font-sans); font-weight: 500; font-size: .62rem; letter-spacing: 0; text-transform: none; opacity: 1; color: var(--af-fg-muted); }
.md-tabs__link--active, .md-tabs__link:hover { color: var(--af-fg); }
.md-tabs__item--active { box-shadow: inset 0 -2px 0 var(--af-product); }
/* the repository widget: the name and a link, never the star and fork counts (a private or new repo reads "0") */
.md-source__facts { display: none; }

/* phones and small tablets: the theme's floating "On this page" button sits over the text, so it goes, and the
   page's contents return to the menu drawer under the current page, where the theme had hidden them */
@media screen and (max-width: 59.984em) {
  .md-sidebar--secondary .md-sidebar-button, .md-sidebar--secondary .md-sidebar-button__wrapper { display: none; }
  .md-nav--primary .md-nav__link[for=__toc] { display: flex; }
  .md-nav--primary .md-nav__link[for=__toc] ~ .md-nav { display: block; }
  .md-nav--primary .md-nav__link[for=__toc] + a.md-nav__link { display: none; }
}

/* headings: Archivo Expanded for the page title, quieter below */
.md-typeset h1, .md-typeset h2 { font-family: var(--af-font-display); font-stretch: var(--af-display-stretch); font-weight: var(--af-display-weight); letter-spacing: var(--af-display-track); color: var(--af-fg); text-wrap: balance; }
.md-typeset h1 { font-size: 1.9em; line-height: 1.08; margin-bottom: .9em; }
.md-typeset h2 { font-size: 1.25em; line-height: 1.2; border-top: 1px solid var(--af-rule); padding-top: 1.1em; margin-top: 2em; }
.md-typeset h3 { font-weight: 600; letter-spacing: 0; }
.md-typeset h4, .md-typeset h5, .md-typeset h6 { font-family: var(--af-font-sans); font-weight: 600; text-transform: none; letter-spacing: 0; font-size: .75rem; color: var(--af-fg-muted); }

/* page anatomy: the first paragraph under the title is the lede; "See also" and other end lists stay plain */
.md-typeset h1 + p:not(.af-lede) { font-size: .9rem; line-height: 1.5; color: var(--af-fg-muted); max-width: 62ch; }

/* links: plain ink, a brand underline */
.md-typeset a { text-decoration: underline; text-decoration-color: var(--af-brand-line); text-underline-offset: .2em; text-decoration-thickness: 1px; }
.md-typeset a:hover { color: var(--af-brand-text); }
.md-typeset a.headerlink, .md-typeset .md-button { text-decoration: none; }

/* buttons */
.md-typeset .md-button { border-radius: var(--af-radius-control); border: 1px solid var(--af-line-strong); background: transparent; color: var(--af-fg); font-family: var(--af-font-sans); font-weight: 500; font-size: .64rem; letter-spacing: 0; text-transform: none; padding: .55em 1.2em; }
.md-typeset .md-button--primary { background: var(--af-brand); border-color: var(--af-brand); color: var(--af-on-brand); }
.md-typeset .md-button:hover { border-color: var(--af-fg); background: transparent; color: var(--af-fg); }
.md-typeset .md-button--primary:hover { background: var(--af-brand-hover); border-color: var(--af-brand-hover); color: var(--af-on-brand); }

/* code: terminal blocks that scroll sideways (long commands are not wrapped); the copy button sits on the
   terminal ground, never on the glyphs, and the end of the longest line clears it */
.md-typeset pre > code { border-radius: var(--af-radius-card); padding-right: 3em; scrollbar-color: var(--af-terminal-dim) transparent; }
.md-typeset .md-code__nav, .md-typeset .md-clipboard { background: var(--af-terminal-bg); border-radius: var(--af-radius-control); }
.md-typeset .md-code__button, .md-typeset .md-clipboard { color: var(--af-terminal-dim); }
.md-typeset pre:hover .md-code__button, .md-typeset .md-code__button:focus-visible, .md-typeset pre:hover .md-clipboard { color: var(--af-terminal-fg); }
.md-typeset code { border-radius: var(--af-radius-control); font-size: .82em; }
.md-typeset :not(pre) > code { background: var(--af-raised); color: var(--af-fg); padding: .1em .35em; }
/* an ID (tail number) never wraps and is never cut: mark it <code class="af-id"> (scripts/airframe.py does for the guide) */
.md-typeset code.af-id { white-space: nowrap; word-break: keep-all; overflow-wrap: normal; }

/* tables: full column width, open header (no fill), sentence-case sans labels, a hairline under the header, row rules only */
.md-typeset .md-typeset__table { display: block; width: 100%; }
.md-typeset table:not([class]) { display: table; width: 100%; border: 0; border-radius: 0; background: transparent; font-size: .74rem; box-shadow: none; }
.md-typeset table:not([class]) th { background: transparent; color: var(--af-fg-subtle); font-family: var(--af-font-sans); font-weight: 500; font-size: .6rem; letter-spacing: 0; text-transform: none; border-bottom: 1px solid var(--af-line); }
.md-typeset table:not([class]) td { border-top: 1px solid var(--af-line-subtle); }
.md-typeset table:not([class]) tr:hover { background: var(--af-selected); box-shadow: none; }

/* admonitions: tonal blocks with a 2px start mark and a mono title. Every Material / Zensical type (note, abstract,
   info, tip, success, question, warning, failure, danger, bug, example, quote and their aliases) maps to the greyscale
   through --af-adm: the mark, the title icon and the details chevron take it, and the title never has a tint. Only two
   families carry color, because a person must act: warning (caution, attention) is the approval role, danger (error)
   and failure (fail, missing) the failed role. Success, tip, bug and question stay grey: the dark cockpit lights
   nothing that needs nobody. Material's per-type focus ring (a tinted halo) becomes the focus token. The !important
   rules outrank the theme's per-type tints (`.admonition.note`), which the modern Zensical theme paints on the block. */
.md-typeset .admonition, .md-typeset details { --af-adm: var(--af-fg-subtle); border: 0; border-radius: var(--af-radius-card); background: var(--af-surface) !important; box-shadow: inset 2px 0 0 var(--af-adm); font-size: .74rem; }
.md-typeset :is(.admonition, details):is(.warning, .caution, .attention) { --af-adm: var(--af-status-approval); }
.md-typeset :is(.admonition, details):is(.danger, .error, .failure, .fail, .missing) { --af-adm: var(--af-status-failed); }
.md-typeset .admonition-title, .md-typeset summary { background: transparent !important; font-family: var(--af-font-sans); font-weight: 500; font-size: .62rem; letter-spacing: 0; text-transform: none; color: var(--af-fg-muted); }
.md-typeset .admonition-title::before, .md-typeset summary::before { background-color: var(--af-adm) !important; }
.md-typeset .admonition-title::after, .md-typeset summary::after { color: var(--af-fg-subtle) !important; }
.md-typeset .admonition:focus-within, .md-typeset details:focus-within { box-shadow: inset 2px 0 0 var(--af-adm), 0 0 0 2px var(--af-focus) !important; }

/* navigation: mono section labels, a brand mark on the current page */
.md-nav__title { font-family: var(--af-font-sans); font-weight: 500; text-transform: none; letter-spacing: 0; font-size: .6rem; color: var(--af-fg-subtle); box-shadow: none !important; background: transparent !important; }
.md-nav__link--active { color: var(--af-fg) !important; font-weight: 600; }
.md-nav__item .md-nav__link--active { box-shadow: inset 2px 0 0 var(--af-product); padding-left: .5em; }
/* a section with its own index page renders its link and its expand toggle as two active links in one container:
   the container is the one shape, with the one marker, and the two parts inside it are clear */
.md-nav__container:has(> .md-nav__link--active) { background: var(--af-selected); border-radius: var(--af-radius-control); box-shadow: inset 2px 0 0 var(--af-product); }
.md-nav__container > .md-nav__link--active { background: transparent !important; box-shadow: none; border-radius: 0; }
.md-nav__container > label.md-nav__link--active { padding-left: 0; }
.md-search__form { border-radius: var(--af-radius-control); background: var(--af-raised); }
/* inline code in the nav and the table of contents (a heading like "GET /api/fleet") is a quiet raised chip in both
   themes; the theme would paint it with the code-block colors, which are the black terminal in Day too */
.md-nav code, .md-header__topic code, .md-footer code { background: var(--af-raised); color: inherit; padding: 0 .3em; border-radius: var(--af-radius-control); font-size: .9em; box-shadow: none; }

/* images and diagrams sit on the canvas, never in boxed cards */
.md-typeset img { border-radius: var(--af-radius-card); }
.af-figure { margin: 1.5em 0; }
.af-figure img { width: 100%; display: block; }
.af-figure figcaption { font-family: var(--af-font-sans); font-weight: 500; font-size: .6rem; letter-spacing: 0; text-transform: none; color: var(--af-fg-subtle); margin-top: .6em; }

/* the home page hero: one strong line, a mono label, two actions. The dot field appears only behind a
   product visual (af-hero--visual): the brand book puts it behind hero data, never on an empty stage. */
.af-hero { position: relative; padding: 2.4rem 0 1.6rem; margin-bottom: 1rem; }
.af-hero > * { position: relative; z-index: 1; }
.af-eyebrow { font-family: var(--af-font-sans); font-weight: 500; font-size: .62rem; letter-spacing: 0; text-transform: none; color: var(--af-fg-subtle); display: inline-flex; align-items: center; gap: .6em; }
.af-eyebrow::before { content: ""; width: 14px; height: 1px; background: var(--af-brand-line); }
.md-typeset .af-hero h1 { font-size: 2.6em; margin: .4em 0 .5em; max-width: 18ch; }
.af-lede { color: var(--af-fg-muted); font-size: .95rem; max-width: 52ch; }
.md-typeset .af-hero .md-button { margin-top: .4em; }
@media (max-width: 959px) {
  .af-hero { padding-top: 1.6rem; }
  .md-typeset .af-hero h1 { font-size: 2em; }
}
/* af-hero--visual: words left, the product working on the right (an image or a video on the dot field);
   below 960px the visual follows the actions and the dot field is off, since in one column it would sit
   behind the words, and the brand book puts it behind hero data only. Pair with <figure class="af-hero__visual">
   and, on wide screens, a capture about 16:10 at 1440x900 cropped to the subject. The caption is a sentence,
   so it is body-s in the body face, sentence case, left-aligned, not a label. */
.af-hero--visual { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.6rem; align-items: center; padding-bottom: 1.2rem; }
.af-hero--visual::after { content: ""; display: none; position: absolute; inset: 0 0 0 46%; background: radial-gradient(circle, var(--af-dot-field) 1.1px, transparent 1.6px) 0 0 / 8px 8px; pointer-events: none; z-index: 0; }
.af-hero__visual { margin: 0; position: relative; z-index: 1; min-width: 0; }
.af-hero__visual > img, .af-hero__visual > video, .af-hero__visual > a > img { display: block; width: 100%; height: auto; border-radius: var(--af-radius-card); box-shadow: 0 0 0 1px var(--af-line); }
.md-typeset .af-hero__visual figcaption { font-style: normal; max-width: none; text-align: left; font-family: var(--af-font-sans); font-size: .65rem; line-height: 1.45; letter-spacing: 0; text-transform: none; color: var(--af-fg-subtle); margin-top: .6em; }
@media (min-width: 960px) {
  .af-hero--visual { grid-template-columns: minmax(0, 7fr) minmax(0, 8fr); gap: 2.4rem; }
  .af-hero--visual::after { display: block; }
  .md-typeset .af-hero--visual h1 { font-size: 2.3em; }
}

/* tool tiles on the suite home page */
.af-tools { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 2px; background: var(--af-canvas); margin: 1.5em 0; }
.af-tool { background: var(--af-raised); padding: var(--af-space-16); display: flex; flex-direction: column; gap: .4em; min-width: 0; text-decoration: none !important; color: var(--af-fg) !important; border-top: 2px solid var(--af-tool, var(--af-line)); }
.af-tool:hover { background: var(--af-selected); }
.af-tool b { font-family: var(--af-font-display); font-stretch: var(--af-display-stretch); font-weight: 700; font-size: .9rem; }
.af-tool small { font-family: var(--af-font-sans); font-weight: 500; font-size: .58rem; letter-spacing: 0; text-transform: none; color: var(--af-fg-subtle); opacity: 1; }
.af-tool span { color: var(--af-fg-muted); font-size: .72rem; line-height: 1.5; }

/* footer (airframe-footer.html, the same on every site): on the canvas, separated by a rule; one line naming the site
   and the suite, then three links; it wraps to two rows on phones */
.md-footer, .md-footer-meta { background: var(--af-canvas); color: var(--af-fg-muted); }
.md-footer-meta { border-top: 1px solid var(--af-line); }
.md-footer__link { color: var(--af-fg); }
.md-footer__direction { font-family: var(--af-font-sans); font-weight: 500; font-size: .6rem; color: var(--af-fg-subtle); opacity: 1; }
.md-typeset .af-footer__inner { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .4rem 1.6rem; padding: 1rem .8rem; font-size: .64rem; }
.md-typeset .af-footer__line { margin: 0; color: var(--af-fg-muted); }
.md-typeset .af-footer__line b { color: var(--af-fg); font-weight: 600; }
.md-footer .md-typeset ul.af-footer__links { display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; list-style: none; margin: 0; padding: 0; }
.md-footer .md-typeset ul.af-footer__links > li { margin: 0; padding: 0; }
.md-typeset .af-footer a { color: var(--af-fg-muted); }
.md-typeset .af-footer a:hover { color: var(--af-fg); }
.md-copyright, .md-footer-meta a { color: var(--af-fg-subtle); }

/* figures: full column width (the theme otherwise shrinks figures to fit their content) */
.md-typeset figure.af-figure { width: 100%; max-width: 100%; display: block; }
.md-typeset figure.af-figure > svg, .md-typeset figure.af-figure > img { width: 100%; height: auto; display: block; }
.md-typeset figure.af-figure figcaption { font-style: normal; max-width: none; }
.md-typeset figure.af-figure figcaption a { color: var(--af-fg-muted); }

/* Windows Contrast Themes: colors are replaced and box-shadows dropped, so every marker and edge that was a
   shadow becomes a border in system colors, and the two textures go. */
@media (forced-colors: active) {
  .af-hero--visual::after { display: none; }
  .md-tabs__item--active { box-shadow: none; border-bottom: 2px solid Highlight; }
  .md-nav__item .md-nav__link--active { box-shadow: none; border-left: 2px solid Highlight; }
  .md-nav__container:has(> .md-nav__link--active) { box-shadow: none; border-left: 2px solid Highlight; }
  .md-nav__container > .md-nav__link--active { border-left: none; }
  .md-typeset .af-suite [aria-current] { box-shadow: none; border-bottom: 2px solid Highlight; }
  .md-typeset .af-suite__home[aria-current] { border-bottom: 2px solid Highlight; }
  .md-typeset .af-suite__home::before, .af-eyebrow::before { background: CanvasText; }
  .md-banner__inner.md-typeset::before, .md-banner__inner.md-typeset::after { display: none; }
  .md-typeset .admonition, .md-typeset details { box-shadow: none; border-left: 2px solid CanvasText; }
  .md-typeset .admonition:focus-within, .md-typeset details:focus-within { outline: 2px solid Highlight; outline-offset: 2px; }
  .af-tool { border-top-color: CanvasText; }
  .af-swatch { box-shadow: none; outline: 1px solid CanvasText; }
  .af-hero__visual > img, .af-hero__visual > video, .af-hero__visual > a > img { box-shadow: none; outline: 1px solid CanvasText; }
  .md-typeset table:not([class]) th, .md-typeset table:not([class]) td { border-color: CanvasText; }
  .md-typeset .md-button { border-color: ButtonText; }
}
