/* Swarmplane visual system.
 *
 * Technical-editorial restyle of MkDocs Material: typography-first, flat
 * chrome, one muted copper accent, both schemes designed deliberately.
 * Diagram colors go through Material's --md-mermaid-* variables only —
 * Mermaid renders into a closed shadow root that page CSS cannot reach
 * (see ADR-0002, "Known issue").
 */

@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap");

/* ------------------------------------------------------------------ */
/* Color tokens                                                        */
/* ------------------------------------------------------------------ */

/* Dark: desaturated near-black surfaces, warm gray text, copper accent. */
[data-md-color-scheme="slate"] {
  --sp-bg: #0e1116;
  --sp-surface: #161b22;
  --sp-line: #262c35;
  --sp-ink: #d6d9de;
  --sp-ink-muted: #9aa3ad;
  --sp-accent: #d9915b;

  --md-default-bg-color: var(--sp-bg);
  --md-default-fg-color: var(--sp-ink);
  --md-default-fg-color--light: var(--sp-ink);
  --md-default-fg-color--lighter: var(--sp-ink-muted);
  /* Low-alpha, matching stock semantics: Material uses --lightest for subtle
     fills (e.g. Mermaid cluster backgrounds) — a solid value here turns
     diagram clusters into heavy gray panels. */
  --md-default-fg-color--lightest: rgba(214, 217, 222, 0.06);

  --md-primary-fg-color: var(--sp-bg);
  --md-primary-fg-color--light: var(--sp-surface);
  --md-primary-fg-color--dark: var(--sp-bg);
  --md-primary-bg-color: var(--sp-ink);
  --md-primary-bg-color--light: var(--sp-ink-muted);

  --md-accent-fg-color: var(--sp-accent);
  --md-accent-fg-color--transparent: rgba(217, 145, 91, 0.12);
  --md-accent-bg-color: var(--sp-bg);
  --md-accent-bg-color--light: var(--sp-bg);

  --md-typeset-a-color: var(--sp-accent);
  --md-code-bg-color: var(--sp-surface);
  --md-code-fg-color: #c9d1d9;

  --md-footer-bg-color: var(--sp-bg);
  --md-footer-bg-color--dark: var(--sp-bg);
  --md-footer-fg-color: var(--sp-ink);
  --md-footer-fg-color--light: var(--sp-ink-muted);
  --md-footer-fg-color--lighter: #566069;

  --md-mermaid-font-family: "Inter", sans-serif;
  --md-mermaid-node-bg-color: var(--sp-surface);
  --md-mermaid-node-fg-color: #6d7681;
  --md-mermaid-edge-color: #6d7681;
  --md-mermaid-label-bg-color: transparent;
  --md-mermaid-label-fg-color: var(--sp-ink);
}

/* Light: warm off-white paper, near-black ink, darkened copper accent. */
[data-md-color-scheme="default"] {
  --sp-bg: #faf9f7;
  --sp-surface: #f1efeb;
  --sp-line: #e2ded7;
  --sp-ink: #1d232b;
  --sp-ink-muted: #5d6672;
  /* Darker than the dark-scheme accent: #b05f2c only reaches ~4.4:1 on this
     background; this hits ~5.2:1. */
  --sp-accent: #a2561f;

  --md-default-bg-color: var(--sp-bg);
  --md-default-fg-color: var(--sp-ink);
  --md-default-fg-color--light: var(--sp-ink);
  --md-default-fg-color--lighter: var(--sp-ink-muted);
  --md-default-fg-color--lightest: rgba(29, 35, 43, 0.05);

  --md-primary-fg-color: var(--sp-bg);
  --md-primary-fg-color--light: var(--sp-surface);
  --md-primary-fg-color--dark: var(--sp-bg);
  --md-primary-bg-color: var(--sp-ink);
  --md-primary-bg-color--light: var(--sp-ink-muted);

  --md-accent-fg-color: var(--sp-accent);
  --md-accent-fg-color--transparent: rgba(162, 86, 31, 0.1);
  --md-accent-bg-color: var(--sp-bg);
  --md-accent-bg-color--light: var(--sp-bg);

  --md-typeset-a-color: var(--sp-accent);
  --md-code-bg-color: var(--sp-surface);
  --md-code-fg-color: #24292f;

  --md-footer-bg-color: var(--sp-bg);
  --md-footer-bg-color--dark: var(--sp-bg);
  --md-footer-fg-color: var(--sp-ink);
  --md-footer-fg-color--light: var(--sp-ink-muted);
  --md-footer-fg-color--lighter: #9aa0a8;

  --md-mermaid-font-family: "Inter", sans-serif;
  --md-mermaid-node-bg-color: var(--sp-surface);
  --md-mermaid-node-fg-color: #8a8377;
  --md-mermaid-edge-color: #8a8377;
  --md-mermaid-label-bg-color: transparent;
  --md-mermaid-label-fg-color: var(--sp-ink);
}

/* ------------------------------------------------------------------ */
/* Header: flat, hairline-bordered — no colored band                   */
/* ------------------------------------------------------------------ */

.md-header {
  background-color: var(--md-default-bg-color);
  color: var(--md-default-fg-color);
  box-shadow: none;
  border-bottom: 1px solid var(--sp-line);
}

.md-header__title {
  font-family: "Space Grotesk", "Inter", sans-serif;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.md-search__form {
  background-color: transparent;
  border: 1px solid var(--sp-line);
  border-radius: 0.2rem;
}

.md-search__form:hover {
  background-color: var(--sp-surface);
}

.md-search__input::placeholder,
.md-search__icon {
  color: var(--sp-ink-muted);
}

[data-md-toggle="search"]:checked ~ .md-header .md-search__form {
  background-color: var(--sp-surface);
  border-color: var(--sp-line);
}

/* Source (GitHub) chip in the header */
.md-source {
  color: var(--sp-ink-muted);
}

/* ------------------------------------------------------------------ */
/* Typography                                                          */
/* ------------------------------------------------------------------ */

.md-typeset {
  line-height: 1.65;
}

.md-typeset h1,
.md-typeset h2,
.md-typeset h3,
.md-typeset h4 {
  font-family: "Space Grotesk", "Inter", sans-serif;
  color: var(--md-default-fg-color);
}

.md-typeset h1 {
  font-size: 2.1em;
  font-weight: 700;
  letter-spacing: -0.02em;
  margin-bottom: 0.8em;
}

.md-typeset h2 {
  font-size: 1.45em;
  font-weight: 600;
  letter-spacing: -0.015em;
}

.md-typeset h3 {
  font-size: 1.15em;
  font-weight: 600;
  letter-spacing: -0.01em;
}

/* Heading permalink anchors: quiet until hover */
.md-typeset .headerlink {
  color: var(--sp-line);
}

.md-typeset .headerlink:hover,
.md-typeset :target > .headerlink {
  color: var(--sp-accent);
}

/* Links: accent color, understated underline that firms up on hover */
.md-typeset a {
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--sp-accent) 40%, transparent);
  text-underline-offset: 0.15em;
}

.md-typeset a:hover {
  text-decoration-color: var(--sp-accent);
}

/* Homepage lede — applied via `{: .lede }` in Markdown */
.md-typeset .lede {
  font-family: "Space Grotesk", "Inter", sans-serif;
  font-size: 1.3em;
  line-height: 1.45;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--md-default-fg-color);
}

.md-typeset .lede strong {
  font-weight: inherit;
}

/* ------------------------------------------------------------------ */
/* Code                                                                */
/* ------------------------------------------------------------------ */

.md-typeset code {
  border-radius: 3px;
  font-size: 0.82em;
}

.md-typeset pre > code {
  font-size: 0.78em;
  line-height: 1.6;
}

.md-typeset .highlight {
  border: 1px solid var(--sp-line);
  border-radius: 0.2rem;
}

/* ------------------------------------------------------------------ */
/* Navigation and TOC                                                  */
/* ------------------------------------------------------------------ */

/* Section labels: small caps, letterspaced */
.md-nav__item--section > .md-nav__link {
  font-family: "Space Grotesk", "Inter", sans-serif;
  font-size: 0.62rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: var(--sp-ink-muted);
}

.md-nav__link {
  color: var(--md-default-fg-color--lighter);
}

.md-nav__link:hover {
  color: var(--sp-accent);
}

.md-nav__link--active,
.md-nav__link--active code {
  color: var(--sp-accent);
  font-weight: 600;
}

/* TOC: hairline rail */
.md-nav--secondary .md-nav__list {
  border-left: 1px solid var(--sp-line);
  padding-left: 0.6rem;
}

.md-nav--secondary .md-nav__title {
  font-family: "Space Grotesk", "Inter", sans-serif;
  font-size: 0.62rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: var(--sp-ink-muted);
  box-shadow: none;
}

/* ------------------------------------------------------------------ */
/* Admonitions: left-border style instead of tinted boxes              */
/* ------------------------------------------------------------------ */

.md-typeset .admonition,
.md-typeset details {
  border-width: 0 0 0 3px;
  border-radius: 0 0.2rem 0.2rem 0;
  box-shadow: none;
  background-color: var(--sp-surface);
  font-size: 0.72rem;
}

.md-typeset .admonition-title,
.md-typeset summary {
  background-color: transparent !important;
  font-family: "Space Grotesk", "Inter", sans-serif;
  font-weight: 600;
}

/* ------------------------------------------------------------------ */
/* Tables                                                              */
/* ------------------------------------------------------------------ */

.md-typeset table:not([class]) {
  border: 1px solid var(--sp-line);
  border-radius: 0.2rem;
  box-shadow: none;
  font-size: 0.72rem;
}

.md-typeset table:not([class]) th {
  font-family: "Space Grotesk", "Inter", sans-serif;
  font-weight: 600;
  background-color: var(--sp-surface);
  color: var(--md-default-fg-color);
}

.md-typeset table:not([class]) td {
  border-top: 1px solid var(--sp-line);
}

/* ------------------------------------------------------------------ */
/* Footer                                                              */
/* ------------------------------------------------------------------ */

.md-footer {
  border-top: 1px solid var(--sp-line);
}

.md-footer-meta {
  background-color: var(--md-default-bg-color);
}

.md-footer__inner {
  padding-top: 0.8rem;
  padding-bottom: 0.8rem;
}

.md-footer__title {
  font-family: "Space Grotesk", "Inter", sans-serif;
}
