/* Generated by tools/make_docs_assets.py from visualdynamics.theme —
   do not edit. The site wears the application's own colours: run
   `python tools/make_docs_assets.py` after changing either. */

:root {
  --md-primary-fg-color:        #ffffff;
  --md-primary-fg-color--light: #ffffff;
  --md-primary-fg-color--dark:  #000000;
  --md-primary-bg-color:        #1c1c1e;
  --md-primary-bg-color--light: #1c1c1e;
  --md-accent-fg-color:         #4c92d9;
  --md-typeset-a-color:         #4c92d9;
}

/* Light: the app's own plot background, and its highlight for the
   things a reader is meant to notice. */
[data-md-color-scheme="default"] {
  --md-default-bg-color:   #ffffff;
  --md-default-fg-color:   #1c1c1e;
  --md-code-bg-color:      #ffffff;
  --md-accent-fg-color:    #ff8c2b;
  /* stated here, not only on :root: the theme's own light block
     sets the link colour from the primary colour, which is the
     header's white — links and the navigation's current entry
     vanished in light mode (Brandon, 2026-09-04) */
  --md-typeset-a-color:    #4c92d9;
  --md-typeset-mark-color: #ff8c2b33;
}

/* Dark: the scene background the 3D view uses, so a screenshot of the
   app sits on the page without a seam. */
[data-md-color-scheme="slate"] {
  --md-default-bg-color:        #000000;
  --md-default-fg-color:        #e8e8ea;
  --md-code-bg-color:           #000000;
  --md-primary-fg-color:        #000000;
  --md-primary-bg-color:        #e8e8ea;
  --md-accent-fg-color:         #ffb020;
  --md-typeset-a-color:         #ffb020;
  --md-typeset-mark-color:      #ffb02033;
}

/* A signature is read like code, so it gets the code face and enough
   room to break at the commas rather than scrolling sideways. */
.doc-signature > pre > code { font-size: 0.72rem; }

/* The type column of an Attributes table is the second thing read after
   the name; the description should not crowd it out. */
.doc-contents table td:first-child { white-space: nowrap; }

/* The theme colours the current page's entry in the navigation — and,
   with the table of contents folded in, the current heading's — with
   the *primary* colour, which here is the header's background: black
   in dark, white in light, so the entry vanished into the sidebar
   (Brandon, 2026-09-04). It is a link; colour it like one, and tint
   its background from the accent rather than the theme's own indigo. */
body[data-md-color-scheme] .md-nav__link--active,
body[data-md-color-scheme] .md-nav__link--active code {
  color: var(--md-typeset-a-color) !important;
}
body[data-md-color-scheme] .md-nav__link--active {
  background-color: color-mix(in srgb, var(--md-accent-fg-color) 12%,
                              transparent) !important;
}

/* Safari renders the sidebar's chevrons as discs of speckled noise on
   hover: the chevron is an SVG *mask* over currentColor, the hover
   affordance is a translucent circle behind it, and Safari's GPU path
   composites the pair onto a layer it never clears — uninitialized
   texture, clipped to the circle. Removing the circle and its
   transition was not enough; the mask itself has to go. The chevron
   becomes a plain image (one per scheme and hover state, since an
   image cannot follow currentColor), and the expand rotation is a
   transform, so it survives. Desktop only: the mobile drawer reuses
   .md-nav__icon for its back arrows, which are a different glyph. */
:root, [data-md-color-scheme="default"] {
  --vd-nav-chevron:       url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%231c1c1e' d='M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6z'/%3E%3C/svg%3E");
  --vd-nav-chevron-hover: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ff8c2b' d='M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6z'/%3E%3C/svg%3E");
}
[data-md-color-scheme="slate"] {
  --vd-nav-chevron:       url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23e8e8ea' d='M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6z'/%3E%3C/svg%3E");
  --vd-nav-chevron-hover: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ffb020' d='M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6z'/%3E%3C/svg%3E");
}
@media screen and (min-width: 76.25em) {
  .md-sidebar .md-nav__icon { transition: none !important; }
  .md-sidebar .md-nav__icon:hover {
    background-color: transparent !important;
  }
  .md-sidebar .md-nav__icon::after {
    -webkit-mask: none !important;
    mask: none !important;
    background: transparent var(--vd-nav-chevron)
                center / contain no-repeat !important;
  }
  .md-sidebar .md-nav__link:hover .md-nav__icon::after {
    background-image: var(--vd-nav-chevron-hover) !important;
  }
}
