/* untrust docs: Material for MkDocs restyled with the untrustsecurity.com design tokens
   (site/styles-4.css). Fonts are self-hosted; nothing loads from a third party. */
@font-face { font-family: "IBM Plex Sans"; font-weight: 100 900; font-display: swap; src: url("../assets/fonts/ibm-plex-sans.woff2") format("woff2"); }
@font-face { font-family: "Space Grotesk"; font-weight: 300 700; font-display: swap; src: url("../assets/fonts/space-grotesk.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-weight: 400; font-display: swap; src: url("../assets/fonts/ibm-plex-mono.woff2") format("woff2"); }

/* ---- Tokens, dark (slate) — the main site's default ---- */
[data-md-color-scheme="slate"] {
  --ut-bg-page: #0B1017; --ut-bg-sunken: #0E141C; --ut-bg-surface: #141C27; --ut-bg-inset: #10171F;
  --ut-text-primary: #F5F8FB; --ut-text-secondary: #93A2B3; --ut-text-muted: #738294; --ut-text-faint: #586676;
  --ut-border-subtle: #1C2531; --ut-border-default: #2A3645; --ut-border-strong: #38485C;
  --ut-accent: #28E89A; --ut-accent-contrast: #06080B; --ut-accent-wash: rgba(40,232,154,0.10); --ut-accent-line: rgba(40,232,154,0.4);
  --ut-link: #34D2F2; --ut-header-bg: rgba(11,16,23,.72); --ut-selection: rgba(40,232,154,0.22);
  --md-hue: 215;
}
/* ---- Tokens, light (default) ---- */
[data-md-color-scheme="default"] {
  --ut-bg-page: #F4F7FA; --ut-bg-sunken: #EAEFF4; --ut-bg-surface: #FFFFFF; --ut-bg-inset: #F0F4F8;
  --ut-text-primary: #0E1620; --ut-text-secondary: #3B4859; --ut-text-muted: #5A6A7B; --ut-text-faint: #7A8899;
  --ut-border-subtle: #E1E8EF; --ut-border-default: #D2DCE6; --ut-border-strong: #B7C4D2;
  --ut-accent: #0FA568; --ut-accent-contrast: #FFFFFF; --ut-accent-wash: rgba(15,165,104,0.10); --ut-accent-line: rgba(15,165,104,0.4);
  --ut-link: #0E8FB3; --ut-header-bg: rgba(244,247,250,.75); --ut-selection: rgba(15,165,104,0.18);
}

/* ---- Map the tokens onto Material's variables ---- */
[data-md-color-scheme] {
  --md-default-bg-color: var(--ut-bg-page);
  --md-default-bg-color--light: var(--ut-bg-surface);
  --md-default-fg-color: var(--ut-text-primary);
  --md-default-fg-color--light: var(--ut-text-secondary);
  --md-default-fg-color--lighter: var(--ut-text-muted);
  --md-default-fg-color--lightest: var(--ut-border-default);
  --md-primary-fg-color: var(--ut-bg-page);
  --md-primary-fg-color--light: var(--ut-bg-surface);
  --md-primary-fg-color--dark: var(--ut-bg-sunken);
  --md-primary-bg-color: var(--ut-text-primary);
  --md-primary-bg-color--light: var(--ut-text-secondary);
  --md-accent-fg-color: var(--ut-accent);
  --md-accent-fg-color--transparent: var(--ut-accent-wash);
  --md-accent-bg-color: var(--ut-accent-contrast);
  --md-typeset-color: var(--ut-text-secondary);
  --md-typeset-a-color: var(--ut-link);
  --md-typeset-table-color: var(--ut-border-subtle);
  --md-typeset-table-color--light: var(--ut-bg-inset);
  --md-code-bg-color: var(--ut-bg-inset);
  --md-code-fg-color: var(--ut-text-primary);
  --md-footer-bg-color: var(--ut-bg-sunken);
  --md-footer-bg-color--dark: var(--ut-bg-sunken);
  --md-footer-fg-color: var(--ut-text-primary);
  --md-footer-fg-color--light: var(--ut-text-muted);
  --md-footer-fg-color--lighter: var(--ut-text-faint);
  --md-shadow-z1: none; --md-shadow-z2: none;
  --md-text-font: "IBM Plex Sans";
  --md-code-font: "IBM Plex Mono";
}
::selection { background: var(--ut-selection); }
body { -webkit-font-smoothing: antialiased; }

/* ---- Header: translucent bar with a hairline, as on the main site ---- */
.md-header {
  background: var(--ut-header-bg);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--ut-border-subtle);
  box-shadow: none;
  color: var(--ut-text-primary);
}
.md-header--shadow { box-shadow: none; }
.md-header__inner { height: 3.3rem; }
.md-header__button.md-logo { margin-right: .2rem; padding: .3rem; }
.ut-logo {
  width: 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center;
  background: var(--ut-accent-wash); border: 1px solid var(--ut-accent-line); color: var(--ut-accent);
}
.md-logo svg, .md-header__button.md-logo svg, .md-nav__button.md-logo svg { width: 18px; height: 18px; fill: none; }
.ut-wordmark { display: flex; align-items: center; gap: 10px; margin-right: .6rem; color: var(--ut-text-primary); white-space: nowrap; }
.ut-wordmark:hover { color: var(--ut-text-primary); }
.ut-word { font-family: "Space Grotesk", "IBM Plex Sans", system-ui, sans-serif; font-weight: 700; font-size: 19px; letter-spacing: -0.02em; }
.ut-accent { color: var(--ut-accent); }
.ut-badge {
  font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ut-accent); background: var(--ut-accent-wash); border: 1px solid var(--ut-accent-line); padding: 3px 9px; border-radius: 999px;
}
.md-header__title { margin-left: .4rem; color: var(--ut-text-muted); font-size: .75rem; }
.md-header__title--active .md-header__topic + .md-header__topic { color: var(--ut-text-secondary); }
.md-header__button.md-icon:hover, .md-header__option:hover { color: var(--ut-accent); opacity: 1; }
.ut-header-links { display: flex; align-items: center; gap: 18px; margin-left: .8rem; }
.ut-navlink { color: var(--ut-text-muted); font-size: 14px; transition: color 140ms ease; }
.ut-navlink:hover { color: var(--ut-text-primary); }
.ut-btn-ghost {
  display: inline-flex; align-items: center; height: 36px; padding: 0 15px; border-radius: 8px; font-weight: 600; font-size: 14px;
  border: 1px solid var(--ut-border-default); color: var(--ut-text-primary); transition: border-color 140ms ease, background 140ms ease;
}
.ut-btn-ghost:hover { border-color: var(--ut-accent); background: var(--ut-accent-wash); color: var(--ut-text-primary); }
@media screen and (max-width: 76.234375em) { .ut-header-links { display: none; } }
@media screen and (max-width: 44.984375em) { .ut-badge { display: none; } }

/* Search box */
.md-search__form { background: var(--ut-bg-inset); border: 1px solid var(--ut-border-default); border-radius: 9px; }
.md-search__form:hover { background: var(--ut-bg-surface); }
.md-search__input { color: var(--ut-text-primary); }
.md-search__input::placeholder, .md-search__icon { color: var(--ut-text-muted); }
[data-md-toggle="search"]:checked ~ .md-header .md-search__form { border-radius: 9px 9px 0 0; background: var(--ut-bg-surface); }
.md-search__output { background: var(--ut-bg-surface); }
.md-search-result__meta { background: var(--ut-bg-inset); color: var(--ut-text-muted); }
.md-search-result mark { color: var(--ut-accent); }

/* ---- Navigation ---- */
.md-nav { font-size: .7rem; }
.md-nav__title { color: var(--ut-text-primary); }
.md-nav--primary .md-nav__item--section > .md-nav__link {
  font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ut-text-faint);
}
.md-nav__link { color: var(--ut-text-muted); }
.md-nav__link:hover, .md-nav__link:focus { color: var(--ut-text-primary); }
.md-nav__item .md-nav__link--active, .md-nav__link--active { color: var(--ut-accent); font-weight: 600; }
.md-nav--secondary .md-nav__link--active { font-weight: 500; }
.md-sidebar--secondary .md-nav__title { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ut-text-faint); box-shadow: none; background: transparent; }
@media screen and (max-width: 76.234375em) {
  .md-nav--primary .md-nav__title { background: var(--ut-bg-sunken); color: var(--ut-text-primary); }
  .md-nav--primary .md-nav__title[for="__drawer"] { background: var(--ut-bg-sunken); }
  .md-sidebar--primary { background: var(--ut-bg-page); }
}

/* ---- Content ---- */
.md-typeset { font-size: .82rem; line-height: 1.7; }
.md-typeset h1, .md-typeset h2, .md-typeset h3, .md-typeset h4 {
  font-family: "Space Grotesk", "IBM Plex Sans", system-ui, sans-serif; color: var(--ut-text-primary); letter-spacing: -0.02em;
}
.md-typeset h1 { font-weight: 700; font-size: 2.1em; letter-spacing: -0.03em; margin-bottom: .9em; }
.md-typeset h2 { font-weight: 700; font-size: 1.5em; margin-top: 2em; padding-top: .2em; }
.md-typeset h3 { font-weight: 600; font-size: 1.2em; }
.md-typeset strong { color: var(--ut-text-primary); }
.md-typeset a { text-decoration: none; }
.md-typeset a:hover { color: var(--ut-accent); }
.md-typeset .headerlink { color: var(--ut-text-faint); }
.md-typeset .headerlink:hover, .md-typeset :target > .headerlink { color: var(--ut-accent); }
.md-typeset hr { border-bottom-color: var(--ut-border-subtle); }

/* Code: inset panels like the main site's terminal blocks */
.md-typeset code { border-radius: 5px; font-size: .84em; padding: .1em .35em; border: 1px solid var(--ut-border-subtle); }
.md-typeset pre > code { border: 0; padding: 1em 1.2em; }
.md-typeset pre { border: 1px solid var(--ut-border-default); border-radius: 10px; background: var(--ut-bg-inset); }
.md-typeset .highlight { border-radius: 10px; }
.md-clipboard { color: var(--ut-text-faint); }
.md-clipboard:hover { color: var(--ut-accent); }
.highlight .gp, .highlight .nv { color: var(--ut-accent); }
.highlight .s, .highlight .s1, .highlight .s2 { color: var(--ut-link); }
.highlight .c, .highlight .c1, .highlight .cm { color: var(--ut-text-faint); }

/* Tables: card surface with hairlines */
.md-typeset table:not([class]) {
  background: var(--ut-bg-surface); border: 1px solid var(--ut-border-subtle); border-radius: 12px; font-size: .74rem; box-shadow: none; overflow: hidden;
}
.md-typeset table:not([class]) th {
  background: var(--ut-bg-inset); color: var(--ut-text-faint); font-family: "IBM Plex Mono", ui-monospace, monospace;
  font-weight: 400; font-size: .62rem; letter-spacing: .1em; text-transform: uppercase;
}
.md-typeset table:not([class]) td { border-top: 1px solid var(--ut-border-subtle); }
.md-typeset table:not([class]) tbody tr:hover { background: var(--ut-accent-wash); box-shadow: none; }

/* Admonitions: surface cards with an accent rule */
.md-typeset .admonition, .md-typeset details {
  background: var(--ut-bg-surface); border: 1px solid var(--ut-border-subtle); border-left: 3px solid var(--ut-accent);
  border-radius: 10px; box-shadow: none; font-size: .78rem;
}
.md-typeset .admonition-title, .md-typeset summary { background: transparent !important; color: var(--ut-text-primary); font-family: "Space Grotesk", "IBM Plex Sans", sans-serif; }
.md-typeset .admonition.warning, .md-typeset details.warning { border-left-color: #FFC53D; }
.md-typeset .admonition.danger, .md-typeset details.danger { border-left-color: #FF4D5E; }
.md-typeset .admonition.info, .md-typeset .admonition.note, .md-typeset details.note { border-left-color: var(--ut-link); }

/* Tabs */
.md-typeset .tabbed-labels > label { color: var(--ut-text-muted); font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: .7rem; }
.md-typeset .tabbed-labels > label:hover { color: var(--ut-text-primary); }
.md-typeset .tabbed-set > input:checked + label, .md-typeset .tabbed-labels > label.tabbed-label--active { color: var(--ut-accent); }
.md-typeset .tabbed-labels::before { background: var(--ut-accent); }

/* ---- Footer ---- */
.md-footer { border-top: 1px solid var(--ut-border-subtle); }
.md-footer__inner { padding-top: .8rem; }
.md-footer__link { opacity: 1; }
.md-footer__link:hover .md-footer__title { color: var(--ut-accent); }
.md-footer__direction { color: var(--ut-text-faint); font-family: "IBM Plex Mono", ui-monospace, monospace; letter-spacing: .08em; text-transform: uppercase; font-size: .55rem; }
.md-footer-meta { background: var(--ut-bg-sunken); border-top: 1px solid var(--ut-border-subtle); }
.md-footer-meta__inner { padding: 1rem .4rem; }
.ut-footer { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; width: 100%; margin: 0; padding: .4rem .6rem; font-size: 14px; }
.ut-footer-links { display: flex; flex-wrap: wrap; gap: 22px; }
.ut-footer-links a { color: var(--ut-text-muted) !important; }
.ut-footer-links a:hover { color: var(--ut-text-primary) !important; }
.ut-footer-copy { margin-left: auto; font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12.5px; color: var(--ut-text-faint); }

/* Back-to-top button */
.md-top { background: var(--ut-bg-surface); color: var(--ut-text-secondary); border: 1px solid var(--ut-border-default); box-shadow: none; }
.md-top:hover { background: var(--ut-accent); color: var(--ut-accent-contrast); }

/* Isometric diagrams (tools/iso_flow.py) */
.md-typeset .ut-iso-fig { display: block; width: auto; max-width: none; margin: 1.4em 0 1em; padding: 1.2em 1em; background: var(--ut-bg-page);
  background-image: radial-gradient(circle at 80% 10%, var(--ut-accent-wash), transparent 55%);
  border: 1px solid var(--ut-border-subtle); border-radius: 14px; }
.ut-iso { display: block; width: 100%; height: auto; }

/* Definition lists (glossary) */
.md-typeset dl dt { font-family: "Space Grotesk", "IBM Plex Sans", sans-serif; font-weight: 600; color: var(--ut-text-primary); margin-top: 1.1em; }
.md-typeset dl dd { margin-left: 1.2em; }
