/* EvalGlass documentation site — shared design system.
   Aligned with the marketing site: warm "peach" paper, a prism-iridescent
   diagram palette, and serif display headings — kept simple and dense for
   reference reading. The semantic token hues are preserved (green=pass,
   red=fail, amber=blocked/proposed, blue=info); only their tone is warmed,
   so every chip, callout, table and dgm-* diagram realigns from these tokens. */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600&family=Newsreader:ital,opsz,wght@0,6..72,400;1,6..72,400&display=swap');

:root {
  /* readability: the reading sheet is white/near-white (--panel); the brand
     peach (--bg) lives in the page + nav chrome, never under long-form text. */
  --bg:#f1e9e7; --panel:#ffffff; --paper:#faf5f1; --ink:#211c17; --muted:#5c554e; --faint:#8c837a;
  --line:#e7ded7; --line-strong:#cdbeb5;
  --blue:#0058fe;  --blue-soft:#e6edff;    /* info / primary           */
  --teal:#0e887e;  --teal-soft:#d9f3ec;    /* mint — EvalGlass / measure*/
  --green:#1f8a45; --green-soft:#e2f6e9;   /* pass / scored / info-ok   */
  --amber:#bd6a1c; --amber-soft:#fbe9d6;   /* blocked / proposed / warn */
  --red:#c62f44;   --red-soft:#fbe6e9;     /* fail / forbidden / boundary*/
  --violet:#8c45cb;--violet-soft:#f1e7fb;  /* orchid                    */
  --slate:#3c352f; --slate-soft:#efe6e1;   /* warm neutral              */
  --mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --display: "Fraunces", "Hoefler Text", Georgia, "Times New Roman", serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--sans); font-size:16.5px; line-height:1.66;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
}
a { color:var(--blue); text-decoration:none; }
a:hover { text-decoration:underline; }
::selection { background:#00e600; color:#000; }

/* ---------- Layout ----------
   The content is a white reading sheet floating on the peach page; the nav rail
   sits on the peach itself (chrome carries the brand colour, not the text field). */
.layout { display:grid; grid-template-columns:240px minmax(0,1fr); gap:30px;
  max-width:1200px; margin:0 auto; padding:26px 28px 46px; }
.sidebar {
  position:sticky; top:26px; align-self:start; max-height:calc(100vh - 52px); overflow-y:auto;
  background:transparent; padding:4px 6px 28px;
}
.content { min-width:0; background:var(--panel); border:1px solid var(--line);
  border-radius:18px; box-shadow:0 1px 2px rgba(60,40,25,.04), 0 24px 56px -34px rgba(60,40,25,.22); }
/* prose and figures share one consistent frame (the reading column); wide
   diagrams scroll horizontally inside their own panel rather than break out. */
.inner { padding:46px 44px 84px; }

/* ---------- Sidebar nav ---------- */
.brand { display:flex; align-items:center; gap:8px; font-family:var(--display);
  font-weight:600; font-size:18px; letter-spacing:-.01em; color:var(--ink); margin-bottom:4px; }
.brand:hover { text-decoration:none; }
.brand__logo { width:24px; height:auto; flex:0 0 auto; display:block; }
.brand .dot { color:var(--blue); }
.brand-sub { font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:.08em; margin-bottom:8px; }
.brand-back { display:inline-block; font-size:12.5px; color:var(--blue); margin-bottom:18px; }
.brand-back:hover { text-decoration:underline; }
.nav-group { margin-bottom:16px; }
.nav-group > .nav-head { font-size:11.5px; text-transform:uppercase; letter-spacing:.07em; color:var(--faint); font-weight:600; margin:0 0 7px; }
.nav-group > .nav-head.soon::after { content:"soon"; margin-left:7px; font-size:9.5px; letter-spacing:.04em; color:var(--amber); background:var(--amber-soft); border-radius:4px; padding:1px 5px; vertical-align:middle; }
.nav-sub { font-size:11px; font-weight:600; color:var(--slate); margin:9px 0 3px; letter-spacing:.01em; }
.nav-list { list-style:none; margin:0; padding:0; }
.nav-list li { margin:1px 0; }
.nav-list a, .nav-list span {
  display:block; padding:4px 9px; border-radius:6px; font-size:13.5px;
  color:var(--muted); line-height:1.35;
}
.nav-list a:hover { background:rgba(255,255,255,.6); text-decoration:none; color:var(--ink); }
.nav-list a.active { background:#fff; color:var(--blue); font-weight:600; box-shadow:0 1px 2px rgba(60,40,25,.08); }
.nav-list span.soon { color:var(--faint); cursor:default; }

/* ---------- Page anatomy ---------- */
.eyebrow { font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.1em; color:var(--blue); font-weight:400; margin:0 0 12px; }
h1 { font-family:var(--display); font-weight:600; font-size:35px; line-height:1.1; letter-spacing:-.02em; margin:0 0 8px; color:#000; }
.subtitle { font-size:18px; color:var(--muted); font-weight:400; margin:-2px 0 22px; }
h2 { font-family:var(--display); font-weight:600; font-size:23px; letter-spacing:-.015em; margin:40px 0 12px; padding-top:6px; }
h3 { font-size:16.5px; margin:26px 0 8px; }
p { margin:0 0 14px; }
.lead { font-size:17px; color:var(--ink); }
strong { font-weight:650; }

.summary {
  border:1px solid var(--line); border-left:3px solid var(--blue);
  background:var(--paper); border-radius:8px; padding:15px 18px; margin:0 0 22px;
  font-size:15.5px; color:var(--ink);
}

/* ---------- Tables ---------- */
table { border-collapse:collapse; width:100%; margin:8px 0 18px; font-size:14px; }
th, td { border:1px solid var(--line); padding:8px 11px; text-align:left; vertical-align:top; }
th { background:var(--slate-soft); font-weight:600; font-size:13px; }
td code, th code { font-size:12.5px; }
/* Even 50/50 only for genuine two-column comparison tables; 3+ column .vs tables
   (e.g. connectors, ci, measurement-state) size to their content so the text-heavy
   column stays readable instead of being forced to 50%. */
table.vs td:first-child:nth-last-child(2),
table.vs td:first-child:nth-last-child(2) ~ td { width:50%; }
table.vs th { background:var(--blue-soft); color:var(--ink); }

/* ---------- Chips ---------- */
.chip { display:inline-block; font-family:var(--mono); font-size:11.5px; font-weight:600;
  padding:1px 7px; border-radius:5px; border:1px solid transparent; white-space:nowrap; }
.chip.scored, .chip.pass, .chip.ok, .chip.green { background:var(--green-soft); color:var(--green); border-color:#bce0c6; }
.chip.blocked, .chip.proposed, .chip.amber { background:var(--amber-soft); color:var(--amber); border-color:#f1d6b0; }
.chip.fail, .chip.error, .chip.forbidden, .chip.red { background:var(--red-soft); color:var(--red); border-color:#f3ccd2; }
.chip.info, .chip.informational, .chip.blue { background:var(--blue-soft); color:var(--blue); border-color:#c9d6ff; }
.chip.skipped, .chip.slate { background:var(--slate-soft); color:var(--slate); border-color:var(--line-strong); }
.chip.violet { background:var(--violet-soft); color:var(--violet); border-color:#e1d2f6; }

/* ---------- Callouts ---------- */
.callout { border:1px solid var(--line); border-radius:8px; padding:13px 16px; margin:18px 0; font-size:14.5px; }
.callout .label { display:block; font-weight:650; font-size:12px; text-transform:uppercase; letter-spacing:.05em; margin-bottom:4px; }
.callout.note { background:var(--blue-soft); border-color:#c9d6ff; }
.callout.note .label { color:var(--blue); }
.callout.tip { background:var(--teal-soft); border-color:#bce6dc; }
.callout.tip .label { color:var(--teal); }
.callout.warn { background:var(--red-soft); border-color:#f3ccd2; }
.callout.warn .label { color:var(--red); }

/* ---------- Code ---------- */
code { font-family:var(--mono); font-size:13px; background:var(--slate-soft); padding:1px 5px; border-radius:4px; color:#4a3f36; }
pre { margin:8px 0 18px; background:#17140f; color:#ece3da; border-radius:8px; padding:14px 16px; overflow-x:auto; font-size:13px; line-height:1.55; }
pre code { background:none; color:inherit; padding:0; font-size:13px; }
pre.code-label { position:relative; }
.code-lang { font-family:var(--mono); font-size:10.5px; text-transform:uppercase; letter-spacing:.08em; color:var(--faint); margin:14px 0 -2px; }

/* ---------- Mermaid ---------- */
figure.diagram { margin:18px 0 22px; }
figure.diagram .mermaid {
  background:var(--panel); border:1px solid var(--line); border-radius:8px;
  padding:18px; text-align:center; overflow-x:auto; font-family:var(--sans);
}
figure.diagram figcaption { font-size:13px; color:var(--muted); margin-top:8px; padding:0 4px; }
figure.diagram noscript { display:block; font-size:13px; color:var(--faint); margin-top:6px; }

/* ---------- Next-step cards ---------- */
.next { margin-top:42px; border-top:1px solid var(--line); padding-top:8px; }
.cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:12px; margin-top:10px; }
.card { display:block; border:1px solid var(--line); border-radius:9px; padding:13px 15px; background:var(--paper); }
.card:hover { border-color:var(--line-strong); text-decoration:none; box-shadow:0 1px 4px rgba(60,40,25,.08); }
.card.soon { opacity:.62; pointer-events:none; }
.card .kicker { font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--teal); font-weight:600; }
.card .title { font-weight:650; color:var(--ink); margin:3px 0 4px; font-size:15px; }
.card .desc { font-size:13px; color:var(--muted); margin:0; }

/* ---------- Misc ---------- */
ul.tight, ol.tight { margin:6px 0 16px; padding-left:22px; }
ul.tight li, ol.tight li { margin:4px 0; }
.footer-note { margin-top:40px; padding-top:14px; border-top:1px solid var(--line); font-size:12.5px; color:var(--faint); }
.path { font-family:var(--mono); font-size:12px; color:var(--slate); background:var(--slate-soft); padding:1px 5px; border-radius:4px; }
.soon-link { color:var(--faint); border-bottom:1px dotted var(--line-strong); cursor:default; }

/* ---------- Mobile (JS-free: sidebar stacks above content) ---------- */
@media (max-width:880px) {
  .layout { grid-template-columns:1fr; gap:14px; padding:14px 12px 30px; }
  .sidebar { position:static; max-height:none; overflow:visible; padding:8px 10px; }
  .inner { padding:30px 22px 64px; max-width:none; }
  h1 { font-size:30px; }
}

/* ===========================================================================
   dgm-* — reusable Qdrant-style diagram system (static HTML/CSS, no JS).
   A small set of composable primitives + two layout helpers. Every diagram is
   a <figure class="dgm" role="img" aria-label="…"> with a <figcaption>; the page
   prose/tables carry the full meaning, so the diagram is a visual aid.

   Primitives:  dgm-stage (soft rounded layer container) · dgm-stage__title /
   __sub · dgm-card / dgm-cardset (white inner nodes) · dgm-conn (connector band
   + arrowhead; --v vertical, --up, --dashed; dgm-conn__label rides the arrow) ·
   dgm-noeffect (red ✗ "no effects" stub) · dgm-legend / __item.
   Tone modifiers dgm--{blue,teal,green,amber,red,violet,slate} each set two
   locally-scoped vars (--dgm-soft fill, --dgm-edge border/title/arrow) from the
   :root token pairs, so no hex is hardcoded and the legend can't drift.
   Layout helpers:  dgm-gauntlet (inputs → gate → gate → pass, drop-offs below
   each gate, via grid so alignment never drifts) · dgm-stack + dgm-core-rail
   (vertical layers with a nested child). Other pages can reuse all of these.
   ========================================================================== */
figure.dgm{position:relative;margin:18px 0 22px;padding:24px 22px;background:var(--panel);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);color:var(--ink);overflow-x:auto}
figure.dgm figcaption{font-family:var(--sans);font-size:13px;color:var(--muted);margin-top:18px;padding:0 4px}

.dgm-stage,.dgm-card,.dgm-conn,.dgm-legend__item,.dgm-noeffect{--dgm-soft:var(--slate-soft);--dgm-edge:var(--line-strong)}
.dgm--blue{--dgm-soft:var(--blue-soft);--dgm-edge:var(--blue)}
.dgm--teal{--dgm-soft:var(--teal-soft);--dgm-edge:var(--teal)}
.dgm--green{--dgm-soft:var(--green-soft);--dgm-edge:var(--green)}
.dgm--amber{--dgm-soft:var(--amber-soft);--dgm-edge:var(--amber)}
.dgm--red{--dgm-soft:var(--red-soft);--dgm-edge:var(--red)}
.dgm--violet{--dgm-soft:var(--violet-soft);--dgm-edge:var(--violet)}
.dgm--slate{--dgm-soft:var(--slate-soft);--dgm-edge:var(--slate)}

.dgm-stage{display:flex;flex-direction:column;align-items:center;gap:7px;padding:13px 15px 15px;background:var(--dgm-soft);border:1.5px solid var(--dgm-edge);border-radius:14px;text-align:center}
.dgm-stage--dashed{border-style:dashed}
.dgm-stage__title{font-size:12px;font-weight:700;letter-spacing:.03em;color:var(--dgm-edge)}
.dgm-stage__sub{font-size:10.5px;color:var(--muted);line-height:1.45}

.dgm-cardset{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;width:100%}
.dgm-cardset--col{flex-direction:column;align-items:stretch}
.dgm-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:10.5px;font-weight:600;color:var(--ink);white-space:nowrap}

.dgm-conn{position:relative;height:2.5px;background:var(--dgm-edge);align-self:center}
.dgm-conn::after{content:"";position:absolute;top:50%;right:-1px;width:8px;height:8px;border-top:2.5px solid var(--dgm-edge);border-right:2.5px solid var(--dgm-edge);transform:translateY(-50%) rotate(45deg)}
.dgm-conn--v{width:2.5px;height:32px;justify-self:center}
.dgm-conn--v::after{top:auto;bottom:-1px;right:50%;border-top:0;border-right:0;border-bottom:2.5px solid var(--dgm-edge);border-left:2.5px solid var(--dgm-edge);transform:translateX(50%) rotate(-45deg)}
.dgm-conn--up::after{top:-1px;bottom:auto;border-bottom:0;border-left:0;border-top:2.5px solid var(--dgm-edge);border-right:2.5px solid var(--dgm-edge);transform:translateX(50%) rotate(-45deg)}
.dgm-conn__label{position:absolute;font-size:10px;color:var(--muted);white-space:nowrap;background:var(--panel);padding:0 4px}
.dgm-conn:not(.dgm-conn--v) .dgm-conn__label{bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:3px}
.dgm-conn--v .dgm-conn__label{top:50%;left:100%;transform:translateY(-50%);margin-left:6px}

.dgm-noeffect{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;color:var(--red);margin-top:7px;font-weight:600}
.dgm-noeffect::before{content:"";width:22px;height:0;border-top:2.5px dashed var(--red)}
.dgm-noeffect__x{font-size:13px;line-height:1}

.dgm-legend{display:flex;flex-wrap:wrap;gap:9px 16px;list-style:none;margin:16px 0 0;padding:12px 4px 0;border-top:1px solid var(--line)}
.dgm-legend__item{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:var(--muted)}
.dgm-legend__item::before{content:"";width:13px;height:13px;border-radius:4px;background:var(--dgm-soft);border:1.5px solid var(--dgm-edge);flex:0 0 auto}

/* layout: gauntlet — inputs → gate → gate → pass, drop-offs below each gate */
.dgm-gauntlet{display:grid;grid-template-columns:1.25fr 58px 1fr 58px 1fr 58px .8fr;align-items:center;min-width:620px}
.dgm-gauntlet>.dgm-stage{align-self:stretch;justify-content:center}
.dgm-g-v1,.dgm-g-v2{height:30px;grid-row:2}
.dgm-g-o1,.dgm-g-o2{grid-row:3}
.dgm-g-inputs{grid-column:1;grid-row:1}.dgm-g-c1{grid-column:2;grid-row:1}.dgm-g-gate1{grid-column:3;grid-row:1}
.dgm-g-c2{grid-column:4;grid-row:1}.dgm-g-gate2{grid-column:5;grid-row:1}.dgm-g-c3{grid-column:6;grid-row:1}.dgm-g-cangate{grid-column:7;grid-row:1}
.dgm-g-v1{grid-column:3}.dgm-g-o1{grid-column:3}.dgm-g-v2{grid-column:5}.dgm-g-o2{grid-column:5}

/* layout: stack — vertical layers, with a nested child rail */
.dgm-stack{display:flex;flex-direction:column;align-items:center;gap:0}
.dgm-stack>.dgm-stage{align-self:stretch}
.dgm-core-rail{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;min-width:520px;margin-top:4px}
.dgm-core-rail>.dgm-stage{align-self:center}

/* ---- dgm-* batch 2: decision ladder · precedence rank · port grid · matrix · node ---- */
.dgm-conn--dashed{background:repeating-linear-gradient(to right,var(--dgm-edge) 0 6px,transparent 6px 11px)}
.dgm-conn--rev::after{right:auto;left:-1px;border-top:0;border-right:0;border-left:2.5px solid var(--dgm-edge);border-bottom:2.5px solid var(--dgm-edge);transform:translateY(-50%) rotate(45deg)}

/* dgm-node — generic labelled white node (__main / __sub); --hit tones it, --muted greys it */
.dgm-node{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:7px 9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center;min-height:42px}
.dgm-node__main{font-size:10.5px;font-weight:600;color:var(--ink)}
.dgm-node__sub{font-size:9.5px;color:var(--muted);line-height:1.3}
.dgm-node--hit{background:var(--dgm-soft);border:1.5px solid var(--dgm-edge)}
.dgm-node--hit .dgm-node__main{color:var(--dgm-edge);font-weight:700}
.dgm-node--muted{background:var(--slate-soft);border-color:var(--line)}
.dgm-node--muted .dgm-node__main{color:var(--muted);font-weight:600}

/* layout: ladder — fail-closed vertical cascade, 3 decisions + a final outcome on the spine.
   col1 = decision spine + vertical continue connectors + final outcome ; col2 = off-ramp
   connector ; col3 = off-ramp outcome. Grid rows keep every branch aligned (no SVG overlay). */
.dgm-ladder{display:grid;grid-template-columns:minmax(190px,1.1fr) 66px minmax(150px,1fr);align-items:center;min-width:470px}
.dgm-ladder>.dgm-stage{align-self:stretch;justify-content:center}
.dgm-ladder>.dgm-conn{align-self:center}
.dgm-l-d1{grid-column:1;grid-row:1}.dgm-l-d2{grid-column:1;grid-row:3}.dgm-l-d3{grid-column:1;grid-row:5}
.dgm-l-y1{grid-column:1;grid-row:2}.dgm-l-y2{grid-column:1;grid-row:4}.dgm-l-y3{grid-column:1;grid-row:6}
.dgm-l-n1{grid-column:2;grid-row:1}.dgm-l-n2{grid-column:2;grid-row:3}.dgm-l-n3{grid-column:2;grid-row:5}
.dgm-l-o1{grid-column:3;grid-row:1}.dgm-l-o2{grid-column:3;grid-row:3}.dgm-l-o3{grid-column:3;grid-row:5}
.dgm-l-final{grid-column:1;grid-row:7}

/* layout: rank — a precedence strip of tone tiles separated by a chevron */
.dgm-rank{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin-top:18px}
.dgm-rank__tile{min-width:106px}
.dgm-rank__sep{font-size:16px;font-weight:700;color:var(--muted);line-height:1}
.dgm-rank__cap{flex-basis:100%;text-align:center;font-size:10.5px;color:var(--muted);margin-top:4px}

/* layout: portgrid — paired rows [boundary port | wire | outside adapter] */
.dgm-portgrid{display:grid;grid-template-columns:minmax(170px,1fr) 92px minmax(180px,1.1fr);align-items:center;row-gap:9px;min-width:500px;margin-top:12px}
.dgm-portgrid__head{font-family:var(--mono);font-size:10px;letter-spacing:.04em;color:var(--muted);text-align:center;padding-bottom:2px;text-transform:uppercase}
.dgm-portgrid__wire{display:flex;align-items:center}
.dgm-portgrid__wire>.dgm-conn{flex:1}

/* layout: matrix — an M×N status×attribute grid that highlights one cell */
.dgm-matrix{display:grid;grid-template-columns:auto repeat(4,1fr);gap:5px;min-width:580px;align-items:stretch}
.dgm-matrix__corner{font-size:10px;color:var(--muted);align-self:end;text-align:right;padding:2px 6px}
.dgm-matrix__head{background:var(--dgm-soft);border:1.5px solid var(--dgm-edge);border-radius:8px;font-size:10px;font-weight:700;letter-spacing:.02em;color:var(--dgm-edge);display:flex;align-items:center;justify-content:center;text-align:center;padding:6px 6px}
.dgm-matrix__head--row{justify-content:flex-start;text-align:left;padding-left:10px}

/* ---- dgm-* batch 3: horizontal pipeline flow ---- */
/* layout: flow — horizontal pipeline row (the sibling of dgm-stack). A few big
   dgm-stage blocks joined by labelled dgm-conn arrows; no colour of its own. */
.dgm-flow{display:flex;flex-wrap:nowrap;align-items:stretch;justify-content:center;min-width:660px}
.dgm-flow>.dgm-stage{flex:1 1 0;min-width:150px;align-self:stretch}
.dgm-flow>.dgm-conn{flex:0 0 56px;align-self:center;margin:0 6px}
@media(max-width:640px){
  .dgm-flow{flex-direction:column;min-width:0}
  .dgm-flow>.dgm-stage{flex:0 0 auto}
  .dgm-flow>.dgm-conn{flex:0 0 auto;width:2.5px;height:30px;align-self:center;margin:6px 0}
  .dgm-flow>.dgm-conn::after{top:auto;bottom:-1px;right:50%;border-top:0;border-right:0;border-bottom:2.5px solid var(--dgm-edge);border-left:2.5px solid var(--dgm-edge);transform:translateX(50%) rotate(-45deg)}
}

/* ===========================================================================
   Diagram brand skin — clean, robust, legible, in the website prism palette.
   The dgm-* geometry above is unchanged (grid alignment + compact mono labels,
   so nothing overflows or clips). This only: (1) seats each figure on a faint
   warm panel with a signature iridescent prism rule across the top, (2) retones
   the palette a touch bolder than the chips so diagrams read as EvalGlass rather
   than a default flowchart, (3) thickens the arrows so they read clearly.
   Semantics preserved: green=pass, red=fail, amber=blocked/proposed, blue=info,
   mint=EvalGlass/measure, orchid=accent, warm-grey=neutral. */

figure.dgm { border:1px solid var(--line-strong);
  border-radius:12px; padding:26px 20px 20px; overflow-x:auto;
  scrollbar-width:thin; scrollbar-color:var(--line-strong) transparent;
  /* Layered background. The top iridescent prism rule and the scroll-shadows are
     attachment:scroll, so they stay PINNED to the visible figure while its content
     scrolls horizontally — the top bar always spans the full visible width and no
     longer scrolls off. The paper "cover" layers are attachment:local (scroll with
     the content) and hide the shadows at the scroll extremes, so a fade+shadow
     shows only on the edge that still has hidden content. */
  background:
    linear-gradient(90deg,#bfa2e4,#93a8ee 30%,#74cdc0 56%,#f3c79f 80%,#eaa0b6) top left / 100% 4px no-repeat scroll,
    linear-gradient(to right, var(--paper) 30%, transparent) left center / 44px 100% no-repeat local,
    linear-gradient(to left,  var(--paper) 30%, transparent) right center / 44px 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%, rgba(55,35,20,.22), transparent) left center / 26px 100% no-repeat scroll,
    radial-gradient(farthest-side at 100% 50%, rgba(55,35,20,.22), transparent) right center / 26px 100% no-repeat scroll,
    var(--paper); }
figure.dgm::-webkit-scrollbar { height:9px; }
figure.dgm::-webkit-scrollbar-thumb { background:var(--line-strong); border-radius:5px; }
figure.dgm::-webkit-scrollbar-track { background:transparent; }

/* Diagrams stay inside the reading frame and scroll horizontally when wider than
   it — never bleeding past the card, never clipping, never overlapping. Stages
   size to their own content so a nowrap card can't spill out of its box; a flow
   centers when it fits and start-aligns (so scroll reaches everything) when it
   doesn't; and a stage that *wraps* a flow (the nested Evaluation-Core diagram)
   grows to enclose it so its dashed border holds around the whole flow. */
.dgm-flow > .dgm-stage { flex:0 0 auto; }
.dgm-flow { justify-content:safe center; }
.dgm-stage:has(> .dgm-flow) { width:max-content; max-width:none; align-items:stretch; }

/* diagram-only tones — bolder than the subtle chip palette, drawn from the prism */
.dgm--blue  {--dgm-soft:#e0e8ff;--dgm-edge:#2f6bf0}
.dgm--teal  {--dgm-soft:#d4f0e7;--dgm-edge:#138f7c}
.dgm--green {--dgm-soft:#daf1e0;--dgm-edge:#239a4c}
.dgm--amber {--dgm-soft:#fbe6cf;--dgm-edge:#c2701f}
.dgm--red   {--dgm-soft:#fbdbe1;--dgm-edge:#d23a52}
.dgm--violet{--dgm-soft:#ecdcf8;--dgm-edge:#9a55cc}
.dgm--slate {--dgm-soft:#ece2db;--dgm-edge:#6a5f54}

/* arrows: a touch thicker, with larger heads, so they read clearly on the panel.
   Scope the thickness to horizontal connectors — a bare .dgm-conn{height} would
   otherwise clobber the vertical connectors' height:32px and collapse them. */
.dgm-conn:not(.dgm-conn--v) { height:3px; }
.dgm-conn::after { width:9px; height:9px; border-top-width:3px; border-right-width:3px; }
.dgm-conn--v { width:3px; }
.dgm-conn--v::after { border-bottom-width:3px; border-left-width:3px; }
.dgm-conn--up::after { border-top-width:3px; border-right-width:3px; }
.dgm-conn--rev::after { border-left-width:3px; border-bottom-width:3px; }

/* ── SEO/GEO docs linkability (ESEO-M4): breadcrumb, page-local TOC, no-JS nav ───────── */
.crumbs { margin: 0 0 18px; font-size: 13px; line-height: 1.4; }
.crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; }
.crumbs li { display: inline; color: var(--muted, #6f625e); }
.crumbs li + li::before { content: "/"; margin: 0 8px; color: var(--faint, #cfc0bc); }
.crumbs a { color: var(--muted, #6f625e); text-decoration: none; }
.crumbs a:hover { color: var(--ink, #17140f); text-decoration: underline; }
.crumbs li[aria-current="page"] { color: var(--ink, #17140f); }

.toc {
  margin: 0 0 28px; padding: 14px 18px; border: 1px solid var(--line, rgba(23,20,15,.14));
  border-left: 3px solid var(--blue, #0058fe); border-radius: 10px;
  background: var(--surface, #fffaf7);
}
.toc__title {
  margin: 0 0 8px; font-family: var(--mono, ui-monospace, monospace); font-size: 11px;
  letter-spacing: .12em; text-transform: uppercase; color: var(--muted, #6f625e); font-weight: 700;
}
.toc ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 5px; }
.toc a { color: var(--blue-dark, #0042c4); text-decoration: none; font-size: 14px; }
.toc a:hover { text-decoration: underline; }

/* The no-JS documentation nav: only renders when JavaScript is off (crawlers/AI fetchers
   read it from raw HTML). JS users get the enhanced #docs-nav sidebar instead. */
.docnav-fallback { font-size: 14px; }
.docnav-fallback__brand { display: block; font-weight: 700; margin-bottom: 10px; }
.docnav-fallback__head {
  margin: 14px 0 4px; font-family: var(--mono, ui-monospace, monospace); font-size: 11px;
  letter-spacing: .1em; text-transform: uppercase; color: var(--muted, #6f625e);
}
.docnav-fallback ul { margin: 0; padding-left: 16px; }
