/* Blueprint theme: drafting-sheet look borrowed from the CV site.
   Paper + ink + one red-orange callout colour, 32px grid, mono labels, hairline rules. */
@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=Space+Mono:wght@400;700&display=swap");

:root, [data-md-color-scheme="default"], [data-md-color-scheme="paper"] {
  --bp-paper: #e6f0f8; --bp-ink: #0b2d52; --bp-red: #b43b0a; --bp-muted: #44627f;
  --bp-rule: rgba(11,45,82,.2); --bp-rule2: rgba(11,45,82,.55);
  --bp-panel: #d7e6f2; --bp-grid: rgba(11,45,82,.08);
  --md-text-font: "Space Grotesk"; --md-code-font: "Space Mono";
  --md-default-bg-color: var(--bp-paper);
  --md-default-fg-color: var(--bp-ink);
  --md-default-fg-color--light: var(--bp-muted);
  --md-default-fg-color--lighter: var(--bp-rule2);
  --md-default-fg-color--lightest: var(--bp-rule);
  --md-primary-fg-color: var(--bp-paper);
  --md-primary-bg-color: var(--bp-ink);
  --md-accent-fg-color: var(--bp-red);
  --md-typeset-a-color: var(--bp-red);
  --md-typeset-color: var(--bp-ink);
  --md-code-bg-color: var(--bp-panel);
  --md-code-fg-color: var(--bp-ink);
  --md-footer-bg-color: var(--bp-paper);
  --md-footer-fg-color: var(--bp-ink);
  --md-footer-fg-color--light: var(--bp-muted);
  --md-footer-fg-color--lighter: var(--bp-muted);
}
[data-md-color-scheme="slate"] {
  --bp-paper: #0f3d6e; --bp-ink: #e8f1fb; --bp-red: #ffd166; --bp-muted: #9fbad8;
  --bp-rule: rgba(232,241,251,.2); --bp-rule2: rgba(232,241,251,.42);
  --bp-panel: #134a80; --bp-grid: rgba(232,241,251,.08);
  --md-default-bg-color: var(--bp-paper);
  --md-default-fg-color: var(--bp-ink);
  --md-default-fg-color--light: var(--bp-muted);
  --md-default-fg-color--lighter: var(--bp-rule2);
  --md-default-fg-color--lightest: var(--bp-rule);
  --md-primary-fg-color: var(--bp-paper);
  --md-primary-bg-color: var(--bp-ink);
  --md-typeset-a-color: var(--bp-red);
  --md-typeset-color: var(--bp-ink);
  --md-code-bg-color: var(--bp-panel);
  --md-code-fg-color: var(--bp-ink);
  --md-footer-bg-color: var(--bp-paper);
  --md-footer-fg-color: var(--bp-ink);
  --md-footer-fg-color--light: var(--bp-muted);
  --md-footer-fg-color--lighter: var(--bp-muted);
}
[data-md-color-scheme="slate"] .md-header__button.md-logo img { filter: invert(1); }

/* Drafting-sheet grid behind everything, no radius, no shadow */
body {
  background-image: linear-gradient(var(--bp-grid) 1px, transparent 1px), linear-gradient(90deg, var(--bp-grid) 1px, transparent 1px);
  background-size: 32px 32px;
  background-color: var(--bp-paper);
}
.md-main, .md-container { background: transparent; }
* { border-radius: 0 !important; box-shadow: none !important; }

/* Header: ruled title strip */
.md-header { background: color-mix(in srgb, var(--bp-paper) 94%, transparent); color: var(--bp-ink); border-bottom: 2px solid var(--bp-ink); }
.md-header__title { font-family: "Space Mono", monospace; text-transform: uppercase; letter-spacing: .12em; font-size: .72rem; }
.md-search__form { background: var(--bp-panel); border: 1px solid var(--bp-rule2); }
.md-search__input, .md-search__input::placeholder { color: var(--bp-ink); }
.md-grid { max-width: 80rem; }

/* Navigation: readable sans for page titles, mono only for small section labels */
@media screen and (min-width: 76.25em) { .md-sidebar { width: 14.5rem; } .md-sidebar--secondary { width: 13rem; } }
.md-sidebar--primary { border-right: 1px dashed var(--bp-rule2); }
.md-nav { font-family: "Space Grotesk", system-ui, sans-serif; font-size: .72rem; line-height: 1.35; letter-spacing: 0; }
.md-nav__title {
  font-family: "Space Mono", monospace; font-size: .6rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .14em; color: var(--bp-muted); box-shadow: none; padding-bottom: .3rem;
}
.md-nav__list { margin: 0; }
.md-nav__item .md-nav__link {
  color: var(--bp-ink); opacity: 1; padding: .32rem .5rem .32rem .6rem; margin: 0;
  border-left: 2px solid transparent; text-overflow: clip; white-space: normal; overflow-wrap: anywhere;
}
.md-nav__item .md-nav__link:hover { background: var(--bp-panel); color: var(--bp-ink) !important; border-left-color: var(--bp-rule2); }
.md-nav__item .md-nav__link--active, .md-nav__item--active > .md-nav__link {
  color: var(--bp-ink) !important; font-weight: 700; background: var(--bp-panel); border-left-color: var(--bp-red);
}
/* top-level sections: mono small caps so they read as group headings, with space above */
.md-nav--primary > .md-nav__list > .md-nav__item--section { margin-top: 1rem; }
.md-nav--primary > .md-nav__list > .md-nav__item--section > .md-nav__link {
  font-family: "Space Mono", monospace; font-size: .6rem; text-transform: uppercase; letter-spacing: .14em;
  font-weight: 700; color: var(--bp-muted); border-left: 0; padding-left: .6rem; background: none;
}
.md-nav--primary .md-nav__item--nested .md-nav__item { padding-left: .4rem; }
/* table of contents on the right */
.md-sidebar--secondary .md-nav__link { color: var(--bp-muted); padding: .22rem .4rem; border-left: 1px solid var(--bp-rule); }
.md-sidebar--secondary .md-nav__link:hover { color: var(--bp-ink) !important; background: none; border-left-color: var(--bp-red); }
.md-sidebar--secondary .md-nav__link--active { color: var(--bp-ink) !important; font-weight: 700; background: none; border-left: 2px solid var(--bp-red); }
.md-sidebar--secondary .md-nav__title { color: var(--bp-muted); }
.md-sidebar__scrollwrap { scrollbar-width: thin; scrollbar-color: var(--bp-rule2) transparent; }

/* Accessibility */
:focus-visible { outline: 2px solid var(--bp-red); outline-offset: 2px; }
.md-typeset a { text-decoration: underline; text-decoration-color: var(--bp-rule2); text-underline-offset: .18em; }
.md-typeset a:hover { text-decoration-color: currentColor; }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

/* Content */
.md-typeset { font-size: .82rem; line-height: 1.75; color: var(--bp-ink); }
.md-content__inner { max-width: 46rem; }
.md-typeset h1 { font-weight: 700; letter-spacing: -.03em; color: var(--bp-ink); }
.md-typeset h2 {
  font-family: "Space Mono", monospace; text-transform: uppercase; letter-spacing: .1em;
  font-size: .9rem; font-weight: 700; margin-top: 2.4em; padding-bottom: .4em;
  border-bottom: 1px dashed var(--bp-rule2);
}
.md-typeset h2::before { content: "§ "; color: var(--bp-red); }
.md-typeset h3 { font-weight: 700; letter-spacing: -.01em; }
.md-typeset hr { border-bottom: 1px dashed var(--bp-rule2); }
.md-typeset code { font-family: "Space Mono", monospace; border: 1px solid var(--bp-rule); }
.md-typeset pre > code { border: 0; }
.md-typeset .highlight, .md-typeset pre { border: 1px solid var(--bp-ink); }

/* Tables read as drawing schedules: heavy top and bottom rules, mono header */
.md-typeset__table { width: 100%; }
.md-typeset table:not([class]) {
  display: table; width: 100%; border: 0;
  border-top: 2px solid var(--bp-ink); border-bottom: 2px solid var(--bp-ink);
  font-size: .72rem;
}
.md-typeset table:not([class]) th {
  background: var(--bp-panel); font-family: "Space Mono", monospace;
  text-transform: uppercase; letter-spacing: .08em; font-size: .6rem; font-weight: 700;
  border-bottom: 1px solid var(--bp-ink);
}
.md-typeset table:not([class]) td { border-top: 1px solid var(--bp-rule); }

/* Callout / repository note = title-block cell */
.md-typeset blockquote {
  border: 1px solid var(--bp-ink); border-left: 6px solid var(--bp-red);
  background: color-mix(in srgb, var(--bp-panel) 70%, transparent);
  padding: .5rem 1rem; color: var(--bp-ink);
}
.md-typeset .admonition, .md-typeset details { border: 1px solid var(--bp-ink); border-left: 6px solid var(--bp-red); background: color-mix(in srgb, var(--bp-panel) 55%, transparent); }

/* Diagrams mounted on a panel like the CV's figures */
.md-typeset .mermaid {
  text-align: center; padding: 1rem; background: color-mix(in srgb, var(--bp-panel) 55%, transparent);
  border: 1px solid var(--bp-rule2);
}
.md-typeset img { border: 1px solid var(--bp-ink); }

/* Home cards: numbered title-block cells */
.md-typeset .grid.cards { counter-reset: sheet; }
.md-typeset .grid.cards > ul { gap: 0; border: 2px solid var(--bp-ink); background: var(--bp-rule2); gap: 1px; }
.md-typeset .grid.cards > ul > li {
  counter-increment: sheet; border: 0; margin: 0; background: color-mix(in srgb, var(--bp-panel) 70%, var(--bp-paper));
  transition: background .2s;
}
.md-typeset .grid.cards > ul > li::before {
  content: counter(sheet, decimal-leading-zero); float: right; display: inline-grid; place-items: center;
  width: 1.7rem; height: 1.7rem; border-radius: 50% !important; background: var(--bp-red); color: var(--bp-paper);
  font: 700 .62rem "Space Mono", monospace;
}
.md-typeset .grid.cards > ul > li:hover { background: var(--bp-ink); transform: none; }
.md-typeset .grid.cards > ul > li:hover, .md-typeset .grid.cards > ul > li:hover a, .md-typeset .grid.cards > ul > li:hover .twemoji { color: var(--bp-paper); }
.md-typeset .grid.cards > ul > li > hr { border-color: var(--bp-rule2); }

/* Buttons */
.md-typeset .md-button { color: var(--bp-ink); border: 1px solid var(--bp-ink); font-family: "Space Mono", monospace; text-transform: uppercase; letter-spacing: .1em; font-size: .62rem; background: transparent; }
.md-typeset .md-button--primary { background: var(--bp-red); border-color: var(--bp-red); color: var(--bp-paper); }
.md-typeset .md-button:hover, .md-typeset .md-button:focus { background: var(--bp-ink); border-color: var(--bp-ink); color: var(--bp-paper); }

/* About page */
.about-hero { text-align: left; padding: 1rem 0; border-bottom: 2px solid var(--bp-ink); }
.about-hero .about-face { width: 110px; border: 1px solid var(--bp-ink); padding: 6px; background: var(--bp-panel); }
.about-hero .md-button { margin: .2rem .4rem .2rem 0; }

/* Footer */
.md-footer { border-top: 2px solid var(--bp-ink); }
.md-footer-meta { background: transparent; }
.md-copyright { font-family: "Space Mono", monospace; font-size: .6rem; text-transform: uppercase; letter-spacing: .1em; }
::selection { background: var(--bp-red); color: var(--bp-paper); }

/* Top tab bar: sections as drawing-sheet tabs */
.md-tabs { background: color-mix(in srgb, var(--bp-paper) 96%, transparent); color: var(--bp-ink); border-bottom: 1px solid var(--bp-rule2); }
.md-tabs__list { contain: none; }
.md-tabs__link {
  font-family: "Space Mono", monospace; font-size: .6rem; text-transform: uppercase; letter-spacing: .1em;
  color: var(--bp-muted); opacity: 1; margin-top: .45rem; padding-bottom: .35rem; border-bottom: 2px solid transparent;
}
.md-tabs__link:hover { color: var(--bp-ink); }
.md-tabs__item--active .md-tabs__link { color: var(--bp-ink); font-weight: 700; border-bottom-color: var(--bp-red); }
.md-tabs__link { letter-spacing: .05em; }
.md-tabs__item { padding-left: .5rem; padding-right: .5rem; }
.md-tabs .md-grid { max-width: none; }

/* ===== Mega-menu ===== */
.md-tabs { position: relative; overflow: visible; }
.md-tabs__list { overflow: visible; }
.bp-mega__panel {
  display: none; position: absolute; left: 0; right: 0; top: 100%; z-index: 20;
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: 1.2rem 2rem;
  padding: 1.2rem 1.6rem 1.5rem; max-height: 70vh; overflow-y: auto;
  background: var(--bp-paper); border-top: 2px solid var(--bp-ink); border-bottom: 2px solid var(--bp-ink);
  background-image: linear-gradient(var(--bp-grid) 1px, transparent 1px), linear-gradient(90deg, var(--bp-grid) 1px, transparent 1px);
  background-size: 32px 32px;
}
.bp-mega:hover > .bp-mega__panel, .bp-mega:focus-within > .bp-mega__panel { display: grid; }
.bp-mega__col ul { list-style: none; margin: .3rem 0 0; padding: 0; }
.bp-mega__h {
  display: block; font: 700 .58rem "Space Mono", monospace; text-transform: uppercase; letter-spacing: .14em;
  color: var(--bp-red); padding-bottom: .35rem; border-bottom: 1px dashed var(--bp-rule2);
}
a.bp-mega__h:hover { color: var(--bp-ink); }
.bp-mega__li a { display: block; padding: .22rem 0; font: 400 .72rem/1.3 "Space Grotesk", sans-serif; color: var(--bp-ink); text-transform: none; letter-spacing: 0; }
.bp-mega__li a:hover { color: var(--bp-red); text-decoration: underline; }
.bp-mega__li.is-active a { font-weight: 700; }
.bp-mega__more a { font: 400 .6rem "Space Mono", monospace; color: var(--bp-muted); padding: .22rem 0; display: block; }

/* ===== Wide screens: use the space. The page becomes a drawing sheet. ===== */
@media screen and (min-width: 100em) {
  .md-grid { max-width: 118rem; }
  .md-sidebar--primary { width: 15rem; }
  .md-sidebar--secondary { width: 15rem; }
  .md-content__inner {
    max-width: none; margin: 1.2rem 1.6rem 2rem; padding: 1.6rem 2.4rem 2.4rem;
    border: 2px solid var(--bp-ink); background: color-mix(in srgb, var(--bp-paper) 88%, transparent); position: relative;
  }
  /* corner registration marks */
  .md-content__inner::before, .md-content__inner::after {
    content: ""; position: absolute; width: 14px; height: 14px; border: solid var(--bp-red); pointer-events: none;
  }
  .md-content__inner::before { top: -8px; left: -8px; border-width: 2px 0 0 2px; }
  .md-content__inner::after { bottom: -8px; right: -8px; border-width: 0 2px 2px 0; }
  .md-content__inner > h1 { padding-bottom: .6rem; border-bottom: 2px solid var(--bp-ink); margin-bottom: 1.4rem; }
  /* readable measure for prose; tables, code and diagrams run the full sheet */
  .md-typeset > p, .md-typeset > ul, .md-typeset > ol, .md-typeset > blockquote { max-width: 78ch; }
  .md-typeset { font-size: .84rem; }
}
@media screen and (min-width: 125em) {
  /* very wide: put short lists in columns instead of one long strip */
  .md-typeset > ul:not(.contains-task-list) { columns: 2; column-gap: 3rem; max-width: none; }
  .md-typeset > ul > li { break-inside: avoid; }
}

/* Footer text follows the theme, never the stock white-on-dark */
.md-footer, .md-footer__link, .md-footer__title, .md-footer__direction,
.md-footer-meta, .md-footer-meta__inner, .md-copyright, .md-copyright__highlight, .md-social__link { color: var(--bp-ink); }
.md-footer__direction { color: var(--bp-muted); }
.md-footer__link:hover .md-footer__title, .md-copyright a, .md-footer-meta a { color: var(--bp-red); }
.md-social__link svg { fill: var(--bp-ink); }
.md-social__link:hover svg { fill: var(--bp-red); }

/* Opaque bars so scrolled content never shows through the header */
.md-header, .md-tabs { background: var(--bp-paper); }
.bp-mega__col { min-width: 0; }
.bp-mega__li a, .bp-mega__h { overflow-wrap: anywhere; }
.bp-mega__panel { overflow-x: hidden; }
.bp-mega__panel { white-space: normal; }
.bp-mega__li a { text-wrap: pretty; }

/* ===== Search: a drafting-table input with a "/" key hint and an index-style result list ===== */
@media screen and (min-width: 60em) { .md-search__inner { width: 22rem; transition: width .2s; } .md-search[data-md-state="active"] .md-search__inner { width: 36rem; } }
.md-search__form { background: var(--bp-panel); border: 1px solid var(--bp-ink); height: 2rem; }
.md-search__form:focus-within { border-color: var(--bp-red); outline: 2px solid color-mix(in srgb, var(--bp-red) 35%, transparent); outline-offset: 1px; }
.md-search__input { font: 400 .72rem "Space Mono", monospace; letter-spacing: .04em; color: var(--bp-ink); }
.md-search__input::placeholder { color: var(--bp-muted); text-transform: uppercase; letter-spacing: .12em; font-size: .6rem; }
.md-search__icon { color: var(--bp-ink); }
[data-md-toggle="search"]:not(:checked) ~ .md-header .md-search__form::after,
.md-search[data-md-state=""] .md-search__form::after {
  content: "/"; position: absolute; right: .5rem; top: 50%; transform: translateY(-50%);
  font: 700 .6rem "Space Mono", monospace; color: var(--bp-muted); border: 1px solid var(--bp-rule2); padding: 0 .35rem; background: var(--bp-paper); pointer-events: none;
}
.md-search__form { position: relative; }
.md-search[data-md-state="active"] .md-search__form::after { display: none; }
.md-search__output { background: var(--bp-paper); border: 2px solid var(--bp-ink); border-top: 0; }
.md-search-result__meta {
  background: var(--bp-panel); color: var(--bp-muted); font: 700 .58rem "Space Mono", monospace;
  text-transform: uppercase; letter-spacing: .12em; border-bottom: 1px dashed var(--bp-rule2);
}
.md-search-result__list { scrollbar-color: var(--bp-rule2) transparent; }
.md-search-result__item { box-shadow: none; border-bottom: 1px solid var(--bp-rule); }
.md-search-result__link { border-left: 3px solid transparent; outline: 0; }
.md-search-result__link:hover, .md-search-result__link[data-md-state="active"] { background: var(--bp-panel); border-left-color: var(--bp-red); }
.md-search-result__title { font: 700 .76rem "Space Grotesk", sans-serif; color: var(--bp-ink); }
.md-search-result__article--document .md-search-result__title::before { content: "\00a7  "; color: var(--bp-red); }
.md-search-result__teaser { color: var(--bp-muted); font-size: .68rem; line-height: 1.45; }
.md-search-result mark { background: transparent; color: var(--bp-red); text-decoration: underline; text-underline-offset: .15em; font-weight: 700; }
.md-search-result__icon { color: var(--bp-red); }

/* Stacking: search results sit above the tab bar and mega-menu; the mega-menu sits above the page */
.md-header__inner { position: relative; z-index: 30; }
.md-tabs { position: relative; z-index: 1; }
.md-search { z-index: 40; }
.md-search__output { z-index: 40; }

/* Sidebar headings: stronger so groups are easy to spot */
.md-nav--primary > .md-nav__title,
.md-nav--primary > .md-nav__list > .md-nav__item--section > .md-nav__link,
.md-nav--primary > .md-nav__list > .md-nav__item--section > label.md-nav__link {
  font: 700 .72rem/1.2 "Space Mono", monospace; text-transform: uppercase; letter-spacing: .12em;
  color: var(--bp-ink); opacity: 1; background: none;
  padding: .5rem .6rem .45rem; margin-top: .4rem;
  border-left: 0; border-bottom: 2px solid var(--bp-ink);
}
.md-nav--primary > .md-nav__list > .md-nav__item--section > .md-nav__link::before,
.md-nav--primary > .md-nav__title::before {
  content: ""; display: inline-block; width: .5rem; height: .5rem; background: var(--bp-red); margin-right: .5rem; vertical-align: middle;
}
.md-nav__item--section > .md-nav > .md-nav__list { margin-top: .3rem; }
/* table of contents heading */
.md-sidebar--secondary .md-nav__title {
  font: 700 .7rem/1.2 "Space Mono", monospace; letter-spacing: .12em; color: var(--bp-ink);
  border-bottom: 2px solid var(--bp-ink); padding: .5rem .4rem .45rem; margin-bottom: .3rem;
}
.md-sidebar--secondary .md-nav__title::before { content: ""; display: inline-block; width: .5rem; height: .5rem; background: var(--bp-red); margin-right: .5rem; vertical-align: middle; }

/* ===== Code highlighting: AA-contrast tokens on the code background ===== */
:root, [data-md-color-scheme="default"] {
  --md-code-hl-color: rgba(180,59,10,.14);
  --md-code-hl-keyword-color: #1b4f9c; --md-code-hl-string-color: #8a3b00; --md-code-hl-number-color: #8a3b00;
  --md-code-hl-function-color: #6b21a8; --md-code-hl-constant-color: #0f6b5e; --md-code-hl-comment-color: #48607a;
  --md-code-hl-special-color: #b43b0a; --md-code-hl-operator-color: #0b2d52; --md-code-hl-punctuation-color: #0b2d52;
  --md-code-hl-name-color: #0b2d52; --md-code-hl-variable-color: #0b2d52; --md-code-hl-generic-color: #0b2d52;
}
/* Paper: warm sepia sheet for long reading; reuses every light-scheme rule above */
[data-md-color-scheme="paper"] {
  --bp-paper: #f4ecdc; --bp-ink: #2e2217; --bp-red: #a3340f; --bp-muted: #6a5845;
  --bp-rule: rgba(46,34,23,.2); --bp-rule2: rgba(46,34,23,.55);
  --bp-panel: #e9dcc3; --bp-grid: rgba(46,34,23,.07);
  --md-code-hl-keyword-color: #a3340f; --md-code-hl-string-color: #3f6b2d; --md-code-hl-number-color: #8a5a00;
  --md-code-hl-function-color: #5b3f8c; --md-code-hl-constant-color: #1f5f7a; --md-code-hl-comment-color: #7d6b57;
  --md-code-hl-special-color: #a3340f; --md-code-hl-operator-color: #2e2217; --md-code-hl-punctuation-color: #2e2217;
  --md-code-hl-name-color: #2e2217; --md-code-hl-variable-color: #2e2217; --md-code-hl-generic-color: #2e2217;
}
[data-md-color-scheme="slate"] {
  --md-code-hl-color: rgba(255,209,102,.16);
  --md-code-hl-keyword-color: #ffd166; --md-code-hl-string-color: #b8f0cf; --md-code-hl-number-color: #ffbf80;
  --md-code-hl-function-color: #d4c4ff; --md-code-hl-constant-color: #8fd8ff; --md-code-hl-comment-color: #b4cbe3;
  --md-code-hl-special-color: #ffd166; --md-code-hl-operator-color: #e8f1fb; --md-code-hl-punctuation-color: #e8f1fb;
  --md-code-hl-name-color: #e8f1fb; --md-code-hl-variable-color: #e8f1fb; --md-code-hl-generic-color: #e8f1fb;
}
.md-footer__direction { opacity: 1; }

/* ===== Cursor: drafting crosshair; red ring over anything clickable ===== */
:root { --bp-cur-cross: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M16 3v9M16 20v9M3 16h9M20 16h9' stroke='%230b2d52' stroke-width='1.6' fill='none'/%3E%3Ccircle cx='16' cy='16' r='1.8' fill='%23b43b0a'/%3E%3C/svg%3E") 16 16; --bp-cur-ring: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='7' fill='none' stroke='%23b43b0a' stroke-width='2'/%3E%3Ccircle cx='16' cy='16' r='1.6' fill='%23b43b0a'/%3E%3C/svg%3E") 16 16; }
[data-md-color-scheme="slate"] { --bp-cur-cross: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M16 3v9M16 20v9M3 16h9M20 16h9' stroke='%23e8f1fb' stroke-width='1.6' fill='none'/%3E%3Ccircle cx='16' cy='16' r='1.8' fill='%23ffd166'/%3E%3C/svg%3E") 16 16; --bp-cur-ring: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='7' fill='none' stroke='%23ffd166' stroke-width='2'/%3E%3Ccircle cx='16' cy='16' r='1.6' fill='%23ffd166'/%3E%3C/svg%3E") 16 16; }
body { cursor: var(--bp-cur-cross), crosshair; }
a, button, label, summary, select, [role="button"], .md-nav__link, .md-tabs__link, .md-search-result__link, .md-button, .md-top, .md-header__button, .md-icon {
  cursor: var(--bp-cur-ring), pointer !important;
}
input[type="text"], input[type="search"], textarea, .md-search__input, .md-typeset pre, .md-typeset code { cursor: text; }
@media (pointer: coarse), (forced-colors: active) { body, a, button { cursor: auto; } }

/* ===== Phones and small tablets ===== */
/* single frame for code blocks (the wrapper carries it; the pre inside must not double it) */
.md-typeset .highlight pre, .md-typeset .highlight > pre { border: 0; }
@media screen and (max-width: 59.9375em) {
  .md-header__title { letter-spacing: .06em; font-size: .64rem; }
  .md-typeset { font-size: .85rem; line-height: 1.7; }
  .md-typeset h1 { font-size: 1.7rem; line-height: 1.15; }
  .md-typeset h2 { font-size: .82rem; letter-spacing: .06em; margin-top: 2em; }
  /* tables: tighter cells so text gets the width, header labels stay compact */
  .md-typeset table:not([class]) { font-size: .74rem; }
  .md-typeset table:not([class]) th, .md-typeset table:not([class]) td { padding: .55em .6em; line-height: 1.45; }
  .md-typeset table:not([class]) th { font-size: .54rem; letter-spacing: .05em; white-space: nowrap; }
  .md-typeset table:not([class]) td:first-child { min-width: 6.5rem; }
  /* code and diagrams: full width, smaller type, scroll rather than clip */
  .md-typeset .highlight, .md-typeset .highlight pre, .md-typeset pre > code { font-size: .68rem; }
  .md-typeset .mermaid { padding: .5rem; overflow-x: auto; }
  .md-content__inner { margin-left: .8rem; margin-right: .8rem; }
  /* drawer: comfortable tap targets */
  .md-nav__item .md-nav__link { padding-top: .6rem; padding-bottom: .6rem; }
  .md-nav--primary .md-nav__title { font-size: .7rem; }
  /* blockquote and admonition callouts: less side padding */
  .md-typeset blockquote, .md-typeset .admonition { padding: .4rem .7rem; }
  /* home cards: single column, no oversized bubble */
  .md-typeset .grid.cards > ul { grid-template-columns: 1fr; }
  .md-typeset .grid.cards > ul > li::before { width: 1.5rem; height: 1.5rem; font-size: .56rem; }
}
@media screen and (max-width: 29.9375em) {
  .md-header__title { font-size: .58rem; }
  .md-typeset .grid.cards > ul > li { padding: .6rem .7rem; }
}

/* Mobile menu: no site title or face in the drawer header; keep the bar as a plain close button */
@media screen and (max-width: 76.1875em) {
  .md-nav--primary > .md-nav__title[for="__drawer"] {
    font-size: 0; color: transparent; display: flex; align-items: center; justify-content: flex-end;
    padding: .7rem .9rem; background: var(--bp-panel); border-bottom: 2px solid var(--bp-ink); height: auto;
  }
  .md-nav--primary > .md-nav__title[for="__drawer"] .md-logo { display: none; }
  .md-nav--primary > .md-nav__title[for="__drawer"]::before { display: none; }
  .md-nav--primary > .md-nav__title[for="__drawer"]::after {
    content: "Close \2715"; font: 700 .66rem "Space Mono", monospace; letter-spacing: .12em; text-transform: uppercase; color: var(--bp-ink);
  }
}

/* ---- Loading sheet (first visit per session) ---- */
.bp-load { display: none; }
html.bp-loading .bp-load {
  display: grid; place-items: center; position: fixed; inset: 0; z-index: 1000;
  background-color: var(--bp-paper);
  background-image: linear-gradient(var(--bp-grid) 1px, transparent 1px), linear-gradient(90deg, var(--bp-grid) 1px, transparent 1px);
  background-size: 32px 32px;
  color: var(--bp-ink); cursor: pointer;
  transition: opacity .3s ease;
  /* fail-safe: hide itself even if the script never runs */
  animation: bp-load-failsafe 0s linear 4s forwards;
}
html.bp-loading .bp-load.bp-load--out { opacity: 0; pointer-events: none; }
.bp-load__sheet { position: relative; width: min(26rem, 82vw); padding: 2rem 1.75rem; border: 1px solid var(--bp-rule2); text-align: left; }
.bp-load__tick { position: absolute; width: .9rem; height: .9rem; border-color: var(--bp-red); border-style: solid; border-width: 0; }
.bp-load__tick--tl { top: -1px; left: -1px; border-top-width: 3px; border-left-width: 3px; }
.bp-load__tick--tr { top: -1px; right: -1px; border-top-width: 3px; border-right-width: 3px; }
.bp-load__tick--bl { bottom: -1px; left: -1px; border-bottom-width: 3px; border-left-width: 3px; }
.bp-load__tick--br { bottom: -1px; right: -1px; border-bottom-width: 3px; border-right-width: 3px; }
.bp-load__label { margin: 0 0 .5rem; font: 700 .72rem/1 var(--md-code-font), monospace; letter-spacing: .14em; color: var(--bp-red); }
.bp-load__title { margin: 0 0 1.25rem; font: 700 1.5rem/1.2 var(--md-text-font), sans-serif; }
.bp-load__line { height: 2px; background: var(--bp-red); transform-origin: left; transform: scaleX(0); animation: bp-load-draw .9s ease-out forwards; }
.bp-load__hint { margin: 1rem 0 0; font: 400 .7rem/1 var(--md-code-font), monospace; color: var(--bp-muted); }
@keyframes bp-load-draw { to { transform: scaleX(1); } }
@keyframes bp-load-failsafe { to { opacity: 0; visibility: hidden; pointer-events: none; } }
/* reduced motion: skip the loading sheet entirely */
@media (prefers-reduced-motion: reduce) { html.bp-loading .bp-load { display: none; } }
