/* Astralyx Docs — the landing's and the console's system, applied to
   Material for MkDocs: paper and ink, hairline rules, one oxide accent,
   IBM Plex Sans for words and Plex Mono for everything a machine named.
   Fonts are served from here (no third-party requests). */

@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/ibm-plex-sans-latin-ext-400-normal.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "IBM Plex Sans"; font-style: italic; font-weight: 400; font-display: swap; src: url("../fonts/ibm-plex-sans-latin-400-italic.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/ibm-plex-sans-latin-ext-500-normal.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1E00-1E9F, U+20A0-20AB, U+20AD-20C0; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/ibm-plex-sans-latin-ext-600-normal.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1E00-1E9F, U+20A0-20AB, U+20AD-20C0; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); }

/* ---- tokens (the landing's) ------------------------------------------------ */

:root,
[data-md-color-scheme="default"] {
  --ax-bg: #f3f1ec;
  --ax-surface: #fbfaf7;
  --ax-sunken: #ebe8e1;
  --ax-ink: #17191d;
  --ax-ink-2: #474b52;
  --ax-ink-3: #7b7f87;
  --ax-rule: #dcd8ce;
  --ax-rule-strong: #bcb7ab;
  --ax-accent: #b8431b;
  --ax-accent-soft: #f1e0d6;
  --ax-ok: #2f6b3f;
  --ax-warn: #93650a;
  --ax-bad: #a3261b;
  --ax-sheet: #16181c;
  --ax-sheet-ink: #e6e3dc;
  --ax-sheet-ink-2: #9b988f;
  --ax-sheet-rule: #2c2e33;
}

[data-md-color-scheme="slate"] {
  --ax-bg: #111214;
  --ax-surface: #17181b;
  --ax-sunken: #0c0d0e;
  --ax-ink: #e7e5e0;
  --ax-ink-2: #b0aea8;
  --ax-ink-3: #7f7e79;
  --ax-rule: #28292d;
  --ax-rule-strong: #3b3d42;
  --ax-accent: #e06a3c;
  --ax-accent-soft: #33211a;
  --ax-ok: #74b487;
  --ax-warn: #d9a843;
  --ax-bad: #e46b5d;
  --ax-sheet: #0b0c0d;
  --ax-sheet-ink: #e6e3dc;
  --ax-sheet-ink-2: #9b988f;
  --ax-sheet-rule: #25272b;
}

:root,
[data-md-color-scheme="default"],
[data-md-color-scheme="slate"] {
  --md-text-font-family: "IBM Plex Sans", system-ui, sans-serif;
  --md-code-font-family: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;
  --md-default-bg-color: var(--ax-bg);
  --md-default-fg-color: var(--ax-ink);
  --md-default-fg-color--light: var(--ax-ink-2);
  --md-default-fg-color--lighter: var(--ax-ink-3);
  --md-default-fg-color--lightest: var(--ax-rule);
  --md-primary-fg-color: var(--ax-bg);
  --md-primary-fg-color--light: var(--ax-surface);
  --md-primary-fg-color--dark: var(--ax-sunken);
  --md-primary-bg-color: var(--ax-ink);
  --md-primary-bg-color--light: var(--ax-ink-2);
  --md-accent-fg-color: var(--ax-accent);
  --md-accent-fg-color--transparent: color-mix(in srgb, var(--ax-accent) 10%, transparent);
  --md-accent-bg-color: var(--ax-surface);
  --md-typeset-color: var(--ax-ink);
  --md-typeset-a-color: var(--ax-accent);
  --md-typeset-mark-color: var(--ax-accent-soft);
  --md-typeset-table-color: var(--ax-rule);
  --md-typeset-table-color--light: var(--ax-sunken);
  --md-code-bg-color: var(--ax-surface);
  --md-code-fg-color: var(--ax-ink);
  --md-code-hl-color: color-mix(in srgb, var(--ax-accent) 14%, transparent);
  --md-code-hl-color--light: color-mix(in srgb, var(--ax-accent) 8%, transparent);
  --md-footer-bg-color: var(--ax-sheet);
  --md-footer-bg-color--dark: var(--ax-sheet);
  --md-footer-fg-color: var(--ax-sheet-ink);
  --md-footer-fg-color--light: var(--ax-sheet-ink-2);
  --md-footer-fg-color--lighter: var(--ax-sheet-ink-2);
  --md-shadow-z1: none;
  --md-shadow-z2: none;
  --md-shadow-z3: 0 12px 30px -18px rgb(0 0 0 / 0.35);
  /* Code: muted, ink-first colours; the accent marks only keywords. */
  --md-code-hl-keyword-color: var(--ax-accent);
  --md-code-hl-string-color: var(--ax-ok);
  --md-code-hl-number-color: var(--ax-warn);
  --md-code-hl-comment-color: var(--ax-ink-3);
  --md-code-hl-function-color: var(--ax-ink);
  --md-code-hl-name-color: var(--ax-ink);
  --md-code-hl-constant-color: var(--ax-warn);
  --md-code-hl-special-color: var(--ax-accent);
  --md-code-hl-operator-color: var(--ax-ink-2);
  --md-code-hl-punctuation-color: var(--ax-ink-3);
  --md-code-hl-variable-color: var(--ax-ink-2);
  --md-code-hl-generic-color: var(--ax-ink-2);
}

body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
::selection { background: var(--ax-accent-soft); }

/* ---- header and tabs: paper, a hairline, the wordmark --------------------- */

.md-header {
  background: var(--ax-bg);
  color: var(--ax-ink);
  border-bottom: 1px solid var(--ax-rule);
  box-shadow: none;
}
.md-header--shadow { box-shadow: none; }
.md-header__button.md-logo { padding: 0.3rem; margin: 0.2rem 0.2rem 0.2rem 0.4rem; }
.md-header__button.md-logo img { height: 1.25rem; width: 1.25rem; }
.md-header__title { font-weight: 600; }
.md-header__topic:first-child { letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.68rem; font-weight: 600; }
.md-tabs {
  background: var(--ax-bg);
  color: var(--ax-ink-2);
  border-bottom: 1px solid var(--ax-rule);
}
.md-tabs__link { font-size: 0.72rem; opacity: 1; color: var(--ax-ink-3); font-weight: 500; }
.md-tabs__link:hover { color: var(--ax-ink); }
.md-tabs__item--active .md-tabs__link { color: var(--ax-ink); box-shadow: inset 0 -2px 0 var(--ax-accent); padding-bottom: 0.45rem; }

.md-search__form { background: var(--ax-surface); border: 1px solid var(--ax-rule); border-radius: 2px; }
.md-search__form:hover { background: var(--ax-surface); }
.md-search__input::placeholder { color: var(--ax-ink-3); }
.md-search__icon[for="__search"] { color: var(--ax-ink-3); }
[data-md-toggle="search"]:checked ~ .md-header .md-search__form { border-radius: 2px 2px 0 0; }
.md-search__output { border-radius: 0 0 2px 2px; }

/* ---- navigation ------------------------------------------------------------- */

.md-nav { font-size: 0.68rem; }
.md-nav__title { color: var(--ax-ink); }
.md-nav__item--section > .md-nav__link {
  font: 500 0.56rem/1.4 var(--md-text-font-family);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ax-ink-3);
  margin-top: 1.1em;
}
.md-nav__link { color: var(--ax-ink-2); }
.md-nav__link:hover, .md-nav__link:focus { color: var(--ax-ink); }
.md-nav__link--active, .md-nav__item .md-nav__link--active { color: var(--ax-accent); font-weight: 500; }
.md-sidebar--secondary .md-nav__title { font: 500 0.56rem/1.4 var(--md-text-font-family); letter-spacing: 0.12em; text-transform: uppercase; color: var(--ax-ink-3); box-shadow: none; background: transparent; }
.md-path { font-size: 0.62rem; color: var(--ax-ink-3); }

/* ---- content ---------------------------------------------------------------- */

.md-typeset { font-size: 0.82rem; line-height: 1.7; }
.md-typeset h1 { font-weight: 600; color: var(--ax-ink); letter-spacing: -0.02em; font-size: 1.85rem; line-height: 1.15; margin-bottom: 0.8rem; }
.md-typeset h2 { font-weight: 600; letter-spacing: -0.01em; font-size: 1.2rem; margin-top: 2.2rem; padding-top: 1.1rem; border-top: 1px solid var(--ax-rule); }
.md-typeset h3 { font-weight: 600; font-size: 0.95rem; margin-top: 1.6rem; }
.md-typeset h4 { font-weight: 600; font-size: 0.82rem; }
.md-typeset h1 + p, .md-typeset .lede { font-size: 0.98rem; color: var(--ax-ink-2); line-height: 1.6; }
.md-typeset a { text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--ax-accent) 35%, transparent); text-underline-offset: 2px; }
.md-typeset a:hover { text-decoration-color: var(--ax-accent); }
.md-typeset .headerlink { text-decoration: none; color: var(--ax-ink-3); }
.md-typeset hr { border-bottom: 1px solid var(--ax-rule); }
.md-typeset kbd { font-family: var(--md-code-font-family); background: var(--ax-surface); border: 1px solid var(--ax-rule-strong); box-shadow: 0 1px 0 var(--ax-rule-strong); border-radius: 2px; color: var(--ax-ink); }

.md-typeset code { border-radius: 2px; font-size: 0.86em; padding: 0.05em 0.3em; background: var(--ax-sunken); color: var(--ax-ink); }
.md-typeset pre > code { background: var(--ax-surface); border: 1px solid var(--ax-rule); border-radius: 2px; font-size: 0.74rem; line-height: 1.65; }
.md-typeset .highlight .filename,
.md-typeset .highlight span.filename {
  font: 500 0.66rem/1 var(--md-code-font-family);
  background: var(--ax-sunken);
  border: 1px solid var(--ax-rule);
  border-bottom: 0;
  color: var(--ax-ink-3);
  border-radius: 2px 2px 0 0;
  padding: 0.6rem 1rem;
}
.md-typeset .highlight .filename + pre > code { border-top-left-radius: 0; border-top-right-radius: 0; }
.md-clipboard { color: var(--ax-ink-3); }

/* A terminal: the console's dark sheet. Use ```console and a `title`. */
.md-typeset .language-console pre > code,
.md-typeset .language-console code,
.md-typeset .highlight.language-console pre > code {
  background: var(--ax-sheet);
  color: var(--ax-sheet-ink);
  border-color: var(--ax-sheet-rule);
}
.md-typeset .language-console .gp { color: var(--ax-sheet-ink-2); user-select: none; }
.md-typeset .language-console .go { color: var(--ax-sheet-ink-2); }

/* Tables: hairlines, no zebra; small caps headers like the landing's. */
.md-typeset table:not([class]) {
  border: 0;
  border-top: 1px solid var(--ax-ink);
  border-radius: 0;
  font-size: 0.74rem;
  box-shadow: none;
  background: transparent;
  display: table;
  width: 100%;
}
.md-typeset table:not([class]) th {
  font: 500 0.6rem/1.4 var(--md-text-font-family);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ax-ink-3);
  background: transparent;
  border-bottom: 1px solid var(--ax-rule);
  padding: 0.75em 1.1em 0.75em 0;
}
.md-typeset table:not([class]) td { border-top: 0; border-bottom: 1px solid var(--ax-rule); padding: 0.75em 1.1em 0.75em 0; vertical-align: top; }
.md-typeset table:not([class]) tr:hover { background: transparent; box-shadow: none; }
.md-typeset table:not([class]) td code { white-space: nowrap; }
.md-typeset__scrollwrap { margin: 1em 0; }
.md-typeset__table { padding: 0; }

/* Admonitions: a rule on the left, the label in small caps. */
.md-typeset .admonition, .md-typeset details {
  border: 1px solid var(--ax-rule);
  border-left: 3px solid var(--ax-ink-3);
  border-radius: 2px;
  box-shadow: none;
  background: var(--ax-surface);
  font-size: 0.78rem;
}
.md-typeset .admonition-title, .md-typeset summary {
  background: transparent !important;
  font: 600 0.62rem/1.4 var(--md-text-font-family);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ax-ink-2);
  padding-left: 2.2rem;
}
.md-typeset .admonition-title::before, .md-typeset summary::before { background-color: var(--ax-ink-3); width: 0.85rem; height: 0.85rem; top: 0.68rem; }
.md-typeset .note, .md-typeset .info { border-left-color: var(--ax-ink-3); }
.md-typeset .tip, .md-typeset .success { border-left-color: var(--ax-ok); }
.md-typeset .tip > .admonition-title::before, .md-typeset .success > .admonition-title::before { background-color: var(--ax-ok); }
.md-typeset .warning, .md-typeset .question { border-left-color: var(--ax-warn); }
.md-typeset .warning > .admonition-title::before { background-color: var(--ax-warn); }
.md-typeset .danger, .md-typeset .failure, .md-typeset .bug { border-left-color: var(--ax-bad); }
.md-typeset .danger > .admonition-title::before { background-color: var(--ax-bad); }
.md-typeset .important, .md-typeset .abstract, .md-typeset .example { border-left-color: var(--ax-accent); }
.md-typeset .important > .admonition-title::before, .md-typeset .example > .admonition-title::before { background-color: var(--ax-accent); }

/* Content tabs (Console / CLI / API). */
.md-typeset .tabbed-labels > label { font: 500 0.66rem/1.4 var(--md-text-font-family); color: var(--ax-ink-3); }
.md-typeset .tabbed-labels > label:hover { color: var(--ax-ink); }
.md-typeset .tabbed-set > input:checked + label, .md-typeset .tabbed-labels > label.tabbed-set__active { color: var(--ax-ink); }
.md-typeset .tabbed-labels::before { background: var(--ax-accent); }

/* Screenshots: framed like the landing's shots. */
.md-typeset figure.shot, .md-typeset img.shot {
  display: block;
  margin: 1.4em 0;
}
.md-typeset figure.shot img, .md-typeset img.shot {
  border: 1px solid var(--ax-rule);
  border-radius: 2px;
  box-shadow: 0 30px 60px -40px rgb(0 0 0 / 0.35);
  background: var(--ax-surface);
}
.md-typeset figure.shot figcaption { font-size: 0.68rem; color: var(--ax-ink-3); margin-top: 0.6em; max-width: none; }

/* Cards on the home page and section indexes. */
.md-typeset .grid.cards > ul > li,
.md-typeset .grid > .card {
  border: 1px solid var(--ax-rule);
  border-radius: 2px;
  background: var(--ax-surface);
  box-shadow: none;
}
.md-typeset .grid.cards > ul > li:hover,
.md-typeset .grid > .card:hover { border-color: var(--ax-rule-strong); box-shadow: none; }
.md-typeset .grid.cards > ul > li > hr, .md-typeset .grid > .card > hr { border-bottom-color: var(--ax-rule); }

/* Labels like the landing's: `<span class="label">…</span>`. */
.md-typeset .label { font: 500 0.6rem/1 var(--md-text-font-family); letter-spacing: 0.12em; text-transform: uppercase; color: var(--ax-ink-3); }
.md-typeset .pill { display: inline-block; font: 500 0.58rem/1 var(--md-code-font-family); padding: 0.25em 0.5em; border: 1px solid var(--ax-rule-strong); border-radius: 2px; color: var(--ax-ink-2); vertical-align: middle; }
.md-typeset .pill.ok { color: var(--ax-ok); border-color: color-mix(in srgb, var(--ax-ok) 45%, transparent); }
.md-typeset .pill.warn { color: var(--ax-warn); border-color: color-mix(in srgb, var(--ax-warn) 45%, transparent); }
.md-typeset .pill.accent { color: var(--ax-accent); border-color: color-mix(in srgb, var(--ax-accent) 45%, transparent); }

/* Mermaid diagrams on paper. */
.md-typeset .mermaid { --md-mermaid-font-family: var(--md-text-font-family); --md-mermaid-edge-color: var(--ax-ink-2); --md-mermaid-node-bg-color: var(--ax-surface); --md-mermaid-node-fg-color: var(--ax-ink); --md-mermaid-label-bg-color: var(--ax-bg); --md-mermaid-label-fg-color: var(--ax-ink-2); }

/* Footer: the dark sheet, like the landing's closing band. */
.md-footer { background: var(--ax-sheet); }
.md-footer-meta { background: var(--ax-sheet); border-top: 1px solid var(--ax-sheet-rule); }
.md-footer__link { opacity: 1; }
.md-footer__title { color: var(--ax-sheet-ink); }
.md-copyright { color: var(--ax-sheet-ink-2); }
.md-copyright a { color: var(--ax-sheet-ink-2); text-decoration: underline; }

/* The home page: a hero like the landing's. */
.md-typeset .ax-hero { padding: 1.2rem 0 0.6rem; }
.md-typeset .ax-hero h1 { font-size: 2.4rem; margin-bottom: 0.6rem; max-width: 16em; }
.md-typeset .ax-hero h1 em { font-style: normal; color: var(--ax-ink-3); }
.md-typeset .ax-hero p { font-size: 1rem; color: var(--ax-ink-2); max-width: 38em; }

@media screen and (max-width: 76.1875em) {
  .md-header { background: var(--ax-bg); }
  .md-nav--primary .md-nav__title[for="__drawer"] { background: var(--ax-bg); color: var(--ax-ink); }
}

@media screen and (min-width: 45em) {
  .md-typeset .grid.cards.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media screen and (min-width: 76.25em) {
  .md-typeset .grid.cards.four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Material's primary-colour rules (slate + indigo) would win over the
   tokens above: links keep the oxide accent in every scheme. */
[data-md-color-scheme][data-md-color-primary],
[data-md-color-scheme][data-md-color-accent] {
  --md-typeset-a-color: var(--ax-accent);
  --md-accent-fg-color: var(--ax-accent);
  --md-primary-fg-color: var(--ax-bg);
  --md-primary-bg-color: var(--ax-ink);
}

/* ---- API reference (overrides/api-reference.html) --------------------------
   Scalar across the whole width under the site's header and tabs; its
   sticky sidebar starts below them (--ax-apiref-top, set by
   api-reference.js from the header's height). */
.md-main__inner:has(> .ax-apiref) { max-width: none; margin: 0; padding: 0; }
.ax-apiref {
  width: 100%;
  min-height: calc(100vh - var(--ax-apiref-top, 6rem));
  --scalar-custom-header-height: var(--ax-apiref-top, 0px);
  font-size: 16px;
}
.ax-apiref .scalar-app { background: var(--ax-bg); }
