/* ==========================================================================
   style.css
   Design: one serif for reading (Newsreader, self-hosted) and a quiet sans
   for labels. Layout: a two-column grid on one vertical axis. The left rail
   holds labels and dates; the right column holds content. Hairlines only.
   Decorative motion uses opacity and transform. Colour transitions are also
   used on links. All motion is off when the OS asks for reduced motion.
   ========================================================================== */

/* ---------- 1. Fonts (SIL OFL, see assets/fonts/LICENSE-Newsreader.txt) ---------- */

/* Roman: variable font with weight and optical-size axes. Headings get the display cut automatically. */
@font-face { font-family: "Newsreader"; src: url("../fonts/newsreader-latin-opsz-normal.woff2") format("woff2"); font-weight: 200 800; font-style: normal; font-display: swap; }
@font-face { font-family: "Newsreader"; src: url("../fonts/newsreader-latin-400-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }

/* Approximate metric match, not a guarantee of zero layout shift on every device.
   Measured for this text: width 93%, ascent 0.74, descent 0.26. */
@font-face {
  font-family: "Newsreader Fallback";
  src: local("Georgia");
  size-adjust: 93%;
  ascent-override: 79.6%;
  descent-override: 28%;
  line-gap-override: 0%;
}

/* ---------- 2. Tokens ---------- */

:root {
  --bg: #ffffff;
  --ink: #171717;          /* 17.9:1 on --bg */
  --ink-2: #5f5e5a;        /*  6.5:1 */
  --ink-3: #74736d;        /*  4.8:1, the lowest contrast for text */
  --rule: #e8e7e3;
  --rule-strong: #c9c8c2;
  --wash: #f5f4f0;
  --selection: #ebe8df;
  --merged: #8250df;       /* GitHub's merged state; white on it is 5.0:1 */
  --star: #eac54f;         /* GitHub's starred gold (--button-star-iconColor), hover only */

  --serif: "Newsreader", "Newsreader Fallback", Charter, "Iowan Old Style", "Palatino Linotype", Georgia,
           "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial,
          "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  --rail: 10rem;           /* left column: picture, labels, dates */
  --gap: 2rem;
  --content: 36rem;        /* right column, about 70 characters per line */
  --page: calc(var(--rail) + var(--gap) + var(--content));
  --portrait: var(--rail);

  --text: 17px;
  --small: 15px;
  --label: 11.5px;
  --title-weight: 460;     /* between regular and medium: the name above stays the quietest */
  --ease: cubic-bezier(.2, .7, .2, 1);
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #121211;
    --ink: #e8e6e1;        /* 15.0:1 */
    --ink-2: #a6a49d;      /*  7.5:1 */
    --ink-3: #85837c;      /*  4.9:1 */
    --rule: #2a2927;
    --rule-strong: #4b4a46;
    --wash: #1a1918;
    --selection: #34322d;
    --merged: #8957e5;     /* GitHub dark; white on it is 4.6:1 */
    --star: #e3b341;       /* GitHub dark (--button-star-iconColor) */
  }
}

/* ---------- 3. Base ---------- */

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
.js-only { visibility: hidden; }
[data-enhanced] .js-only { visibility: visible; }

html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 400 var(--text) / 1.6 var(--serif);
  font-kerning: normal;
  font-optical-sizing: auto;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, p, ul, ol, figure, blockquote, pre { margin: 0; }
ul, ol { padding: 0; list-style: none; }
img { display: block; max-width: 100%; }
strong { font-weight: 600; }
sup { font-size: .7em; line-height: 0; }
p { text-wrap: pretty; }
.nowrap, .author { white-space: nowrap; }
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

::selection { background: var(--selection); }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; border-radius: 2px; }

/* Links: a quiet underline that darkens on hover. Label links opt out below. */
a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: var(--rule-strong);
  text-decoration-thickness: 1px;
  text-underline-offset: .18em;
  transition: color .15s, text-decoration-color .15s;
}
a:hover { text-decoration-color: currentColor; }

/* Buttons that look like text */
button {
  font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit;
  background: none; border: 0; padding: 0; cursor: pointer;
  transition: color .15s, text-decoration-color .15s;
}
.text-button {
  color: var(--ink-2);
  text-decoration: underline;
  text-decoration-color: var(--rule-strong);
  text-decoration-thickness: 1px;
  text-underline-offset: .18em;
}
.text-button:hover { color: var(--ink); text-decoration-color: currentColor; }

/* Small tracked labels (sans) */
.when, .block-head h2, .section-label, .links, .pub-links, .entry-links, .metric, .footer {
  font-family: var(--sans);
  font-size: var(--label);
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: .1em;
  text-transform: uppercase;
  font-variant-numeric: tabular-nums;
}

/* Link names and metrics keep their spelling: GitHub, OpenReview, arXiv, BibTeX, “15.7k”, “PRs”.
   Save wide tracking and capitals for section labels, not small controls or data. */
.links, .pub-links, .entry-links, .metric {
  font-size: 12px;
  letter-spacing: .02em;
  text-transform: none;
}

/* ---------- 4. Layout ---------- */

.page {
  width: min(var(--page), 100% - 3rem);
  margin-inline: auto;
}

/* Every row has the same two columns: [rail] [content] */
.row {
  display: grid;
  grid-template-columns: var(--rail) minmax(0, 1fr);
  column-gap: var(--gap);
  align-items: baseline;
}
.when { color: var(--ink-3); }

/* ---------- 5. Intro ---------- */

/* Desktop: the name is the masthead, on the same left edge as the section labels.
   The portrait sits in the rail beside the biography, so picture and text read
   as one unit instead of the picture hanging from the name. */
.intro {
  padding: 4rem 0 3rem;
  grid-template-areas: "name name" "portrait bio";
  row-gap: 1.25rem;
  align-items: start;
}

/* Top edge on the cap height of the biography's first line:
   half-leading (1.6 − 1) / 2 + Newsreader ascent .74 − cap height .673 = .367em. */
.portrait { grid-area: portrait; margin-top: .367em; }
.intro-text { grid-area: bio; min-width: 0; }
.portrait img,
.monogram {
  border: 1px solid var(--rule);
  border-radius: 4px;
}
/* Default: reserve the real width/height ratio before the image loads.
   Set avatar.layout in data/site.js, then regenerate; both modes share full-frame sources. */
.avatar-frame {
  width: var(--portrait);
  max-width: 100%;
  aspect-ratio: var(--avatar-width) / var(--avatar-height);
}
.avatar-frame--square { aspect-ratio: 1; }
.portrait-picture { display: block; width: 100%; height: 100%; }
.portrait img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  /* Do not apply filters, canvas conversion, opacity, or blend modes to HDR pixels. */
  dynamic-range-limit: no-limit;
}
.avatar-frame--square img { object-fit: cover; }
.monogram {
  width: var(--portrait);
  height: var(--portrait);
  display: grid;
  place-items: center;
  background: var(--wash);
  color: var(--ink-3);
  font-size: 2.6rem;
  font-weight: 380;
  letter-spacing: .06em;
  user-select: none;
}
.avatar-frame > .monogram { width: 100%; height: 100%; }
.monogram > span { grid-area: 1 / 1; transition: opacity .4s var(--ease); }
.monogram-hover { font-weight: 560; color: var(--ink-2); opacity: 0; }
.portrait:hover .monogram-ink { opacity: 0; }
.portrait:hover .monogram-hover { opacity: 1; }

/* Name line: the pronouns sit outside the h1, on the same baseline */
.name { grid-area: name; display: flex; flex-wrap: wrap; align-items: baseline; column-gap: .6rem; }
h1 {
  font-size: 2.125rem;
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -.005em;
  text-wrap: balance;
  margin-bottom: 1.1rem;
}
.name h1 { margin-bottom: 0; }
.pronouns {
  font-family: var(--sans);
  font-size: .8125rem;
  letter-spacing: .02em;
  color: var(--ink-3);
  white-space: nowrap;
}

.intro-text p + p { margin-top: .9em; }
.contact-note { color: var(--ink-2); font-size: var(--small); }

.links { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; margin-top: 1rem; color: var(--ink-3); }
.links a, .pub-links a, .pub-links button, .entry-links a {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  min-height: 24px;
  white-space: nowrap;
}
/* Equal alignment slots, not equal ink sizes. Filled marks need less area
   than line icons. Keep all scaling proportional and all geometry intact. */
.link-icon {
  position: relative;
  display: inline-block;
  width: 18px;
  height: 18px;
  flex: none;
  background: currentColor;
  -webkit-mask: var(--icon) center / var(--icon-size, 18px) var(--icon-size, 18px) no-repeat;
          mask: var(--icon) center / var(--icon-size, 18px) var(--icon-size, 18px) no-repeat;
}
.link-icon--email { --icon-size: 17px; --icon-brand: #0078d4; }
.link-icon--github { --icon-size: 15px; }
.link-icon--orcid { --icon-size: 16px; } /* ORCID's minimum display size */
/* Quiet monochrome at rest, brand color only on hover or keyboard focus.
   Separate layers retain the ORCID cutout and arXiv's crossing-band detail.
   No grayscale filter is applied to these icons or to the HDR portrait. */
.link-icon--arxiv, .link-icon--orcid {
  background: none;
  -webkit-mask: none;
          mask: none;
}
.link-icon--arxiv::before, .link-icon--orcid::before,
.link-icon--arxiv::after, .link-icon--orcid::after, .link-icon--email::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  transition: opacity .35s var(--ease);
}
.link-icon--arxiv::before, .link-icon--orcid::before {
  background: currentColor;
  -webkit-mask: var(--icon-mono) center / var(--icon-size, 18px) var(--icon-size, 18px) no-repeat;
          mask: var(--icon-mono) center / var(--icon-size, 18px) var(--icon-size, 18px) no-repeat;
  /* The grey plate is the official paths in greys, read by luminance (see inline-logos.py):
     sharp at the display resolution in WebKit too, unlike an SVG with a nested <mask>. */
  -webkit-mask-source-type: luminance;
          mask-mode: luminance;
  opacity: 1;
}
.link-icon--arxiv::after, .link-icon--orcid::after {
  background: var(--icon) center / var(--icon-size, 18px) var(--icon-size, 18px) no-repeat;
  opacity: 0;
}
.link-icon--email::after { background: var(--icon-brand); opacity: 0; }
/* Hover and focus show one icon at full colour, also over the reading light (section 11):
   !important beats its animation, and :where() keeps the specificity low so print still wins. */
:where(:is(a, button):is(:hover, :focus-visible)) > :is(.link-icon--arxiv, .link-icon--orcid)::before { opacity: 0 !important; }
:where(:is(a, button):is(:hover, :focus-visible)) > .link-icon::after { opacity: 1 !important; }
.links a { text-decoration: none; }
.links a:hover, .links a:focus-visible { color: var(--ink); }

.epigraph {
  margin-top: 1.6rem;
  padding-left: 1rem;
  border-left: 1px solid var(--rule-strong);
  color: var(--ink-2);
  font-size: var(--small);
}
.epigraph p { font-style: italic; }
.epigraph footer { margin-top: .35em; color: var(--ink-3); }

/* ---------- 6. Company and team names with their mark ---------- */

/* The mark is a CSS mask filled with a quiet grey. On hover, and under the reading light
   (section 11), the brand colour fades in
   (for the black-and-white brands, Z.ai and Moonshot AI, that is the ink colour).
   The team diagram follows the same idle/hover/focus rule. */
.icon-definitions { position: absolute; width: 0; height: 0; pointer-events: none; }
.org { white-space: nowrap; }
.org-logo {
  --size: .8em;
  position: relative;
  display: inline-block;
  width: calc(var(--size) * var(--aspect, 1));
  height: var(--size);
  margin-right: .28em;
  vertical-align: -.08em;
  background: var(--ink-2);
  -webkit-mask: var(--logo) center / contain no-repeat;
          mask: var(--logo) center / contain no-repeat;
}
.org-logo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--brand, var(--ink));
  opacity: 0;
  transition: opacity .35s var(--ease);
}
/* !important and :where(): see the link icons above. */
:where(.org:is(:hover, :focus-visible)) .org-logo::after { opacity: 1 !important; }

.org-logo--zai { --aspect: 1.17; }
/* Moonshot AI: the symbol's own bounds (31.928 × 32.377) and an optical size like the
   other compact marks: ink about 1.2× the cap height, bottom on the baseline. */
.org-logo--moonshot { --aspect: calc(31.928 / 32.377); --size: .81em; vertical-align: -.04em; }
.org-logo--kimi { --aspect: .944; }
.org-logo--sider { --size: 1em; --brand: linear-gradient(135deg, #32c5ff, #5666f5 35%, #8a57ea 55%, #eb35ce 80%, #f7b500); }
.org-logo--chaitin { --aspect: calc(961 / 580); --size: .78em; --brand: linear-gradient(#34b13a, #7dbb45); vertical-align: -.03em; }
.org-logo--alibaba { --aspect: calc(412 / 266); --size: .86em; --brand: #ff5a00; vertical-align: -.06em; }

/* Native artwork: a neutral mask at rest (--logo-mono), then the project's or
   organizer's own artwork (--logo) on hover or keyboard focus. Masks keep the
   source's geometry and holes; see tools/prepare-marks.py and SOURCES.md. */
.org-logo--native {
  --brand: var(--logo) center / contain no-repeat;
  background: none;
  -webkit-mask: none;
          mask: none;
}
.org-logo--native::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--ink-2);
  -webkit-mask: var(--logo-mono) center / contain no-repeat;
          mask: var(--logo-mono) center / contain no-repeat;
  opacity: 1;
  transition: opacity .35s var(--ease);
}
:where(.org:is(:hover, :focus-visible)) .org-logo--native::before { opacity: 0 !important; }

.org-logo--asis { --aspect: calc(169 / 88); --size: .95em; } /* Crypto CTF's organizer */
/* The Financial Cryptography Cup's emblem: tall and airy, so a little larger and lower. */
.org-logo--fincrypto { --aspect: calc(43 / 48); --size: 1.05em; vertical-align: -.16em; }

/* Open-source projects: product icons where they exist, one original mark
   (prompt-manager) where none does. Sizes are optical, not equal. */
.org-logo--oiia { --aspect: calc(43 / 48); --size: .95em; }
.org-logo--sagemath-vscode { --aspect: calc(49 / 48); --size: .84em; }
.org-logo--prompt-manager { --aspect: calc(56 / 48); --size: .72em; vertical-align: -.02em;
  /* White tile, black prompt: read by luminance, so the prompt is cut out without a nested
     SVG <mask> (which WebKit would draw at 1x and blur). */
  -webkit-mask-source-type: luminance; mask-mode: luminance; }
.org-logo--mooncake { --aspect: calc(43 / 48); --size: .9em; }
.org-logo--pegainfer { --size: .84em; }
/* SageMath's current wordmark, set like type: the letters' ink bottom (y = 32 of the
   8–42 view box, 10 units above the box bottom) sits on the text baseline, and their
   height falls between the x-height and the cap height of the text. */
.org-logo--sagemath { --aspect: calc(108 / 34); --size: .8em; vertical-align: calc(-.8em * 10 / 34); }

/* A small C6 diagram, not a bitmap thumbnail: preserve all six roots and edges.
   The open center and fine outer circle keep the mark light next to body text. */
.org-logo--normal-subgroup {
  --size: 1.125em;
  --team-ring: var(--ink-2);
  --team-cycle: var(--ink-2);
  --team-node: var(--ink-2);
  --team-ring-active: #bd174b;
  --team-cycle-active: #0084c8;
  background: none;
  -webkit-mask: none;
          mask: none;
  vertical-align: -.18em;
}
.org-logo--normal-subgroup::after { content: none; }
.org:is(:hover, :focus-visible) .org-logo--normal-subgroup {
  --team-ring: var(--team-ring-active);
  --team-cycle: var(--team-cycle-active);
  --team-node: var(--ink);
}
@media (prefers-color-scheme: dark) {
  .org-logo--normal-subgroup { --team-ring-active: #eb7e9f; --team-cycle-active: #69bce8; }
}

/* logos:start (generated by tools/inline-logos.py; do not edit by hand) */
.org-logo--zai { --logo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='5.2 6.6 19.6 16.8'%3E%3Cg fill='%23000'%3E%3Cpath d='M15.47,7.1l-1.3,1.85c-0.2,0.29-0.54,0.47-0.9,0.47h-7.1V7.09C6.16,7.1,15.47,7.1,15.47,7.1z'/%3E%3Cpolygon points='24.3,7.1 13.14,22.91 5.7,22.91 16.86,7.1 '/%3E%3Cpath d='M14.53,22.91l1.31-1.86c0.2-0.29,0.54-0.47,0.9-0.47h7.09v2.33H14.53z'/%3E%3C/g%3E%3C/svg%3E"); }
.org-logo--moonshot { --logo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 31.928 32.377'%3E%3Cpath fill='%23000' d='M28.8186 6.53439C26.7444 3.70476 23.7481 1.53777 20.1255 0.555313C16.5029 -0.427149 12.837 -0.0676099 9.64385 1.33292L28.8186 6.53439ZM2.80611 7.02702C4.22375 4.93598 6.09629 3.23513 8.24272 2.0311L22.3683 5.86339C21.4413 6.40479 20.4483 7.33778 19.6796 8.36344L31.294 11.5143C31.6236 12.6173 31.8383 13.7607 31.9285 14.9278L2.80611 7.02702ZM31.4282 20.3773C31.2644 20.9975 31.0669 21.5995 30.8384 22.1813L0.168318 13.861C0.257781 13.2409 0.384406 12.6201 0.548192 11.9999C0.933572 10.543 1.50338 9.18634 2.22597 7.94886L17.2345 12.0208C16.6337 12.8904 16.0866 13.8353 15.6049 14.8463L31.6917 19.2109C31.6181 19.6004 31.53 19.9892 31.4275 20.3787L31.4282 20.3773ZM0.928067 21.6162C0.184146 19.5071 -0.133105 17.2258 0.0513273 14.9076L14.2058 18.7476C14.1039 19.0737 14.0083 19.4039 13.9195 19.7391C13.7392 20.4212 13.5919 21.102 13.4777 21.7779L28.7621 25.9244C28.0506 26.8811 27.2399 27.7479 26.3501 28.513L0.928067 21.6162ZM11.8508 31.8213C7.02602 30.512 3.31123 27.1034 1.4091 22.8258L12.9272 25.9509C12.9086 27.0386 12.9753 28.0984 13.1219 29.115L21.4909 31.3851C18.5035 32.4972 15.1596 32.7187 11.8508 31.8213Z'/%3E%3C/svg%3E"); }
.org-logo--sider { --logo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath d='M9.885 1.953c2.205 0 4.027 1.716 4.301 3.936v.413H10.14a.4.4 0 0 0-.267.1l-1.69 1.446a.94.94 0 0 0-.415-.096c-.54 0-.977.454-.977 1.015s.437 1.015.977 1.015c.539 0 .976-.455.976-1.015q0-.129-.029-.248l1.575-1.347h3.896v7.394H6.278a.98.98 0 0 0-.882-.58c-.54 0-.977.454-.977 1.014s.437 1.015.977 1.015c.39 0 .725-.237.882-.58h7.908v7.394H10.29L8.715 21.48q.03-.119.03-.247c0-.56-.438-1.015-.977-1.015-.54 0-.977.455-.977 1.015s.437 1.015.977 1.015q.224-.001.415-.096l1.69 1.447a.4.4 0 0 0 .267.099h4.046v.413c-.306 2.225-2.151 3.936-4.371 3.936-2.047 0-3.767-1.454-4.263-3.424-1.485-.674-2.523-2.216-2.523-4.011 0-.423.058-.832.166-1.22C1.867 18.676.955 17.24.93 15.579v-.143c0-1.816 1.071-3.372 2.593-4.023a4.3 4.3 0 0 1-.488-1.78l-.004-.086a4 4 0 0 1-.008-.272c0-1.8 1.107-3.33 2.652-3.897.47-1.966 2.176-3.424 4.209-3.424' fill='%23000'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.103 5.427c-.452-1.992-2.17-3.474-4.22-3.474-2.206 0-4.027 1.716-4.302 3.936v18.223c.306 2.225 2.151 3.936 4.372 3.936 2.046 0 3.767-1.454 4.263-3.424 1.484-.674 2.522-2.216 2.522-4.011 0-.423-.058-.832-.165-1.22 1.345-.728 2.264-2.193 2.264-3.882 0-1.52-.744-2.859-1.873-3.642a.45.45 0 0 1-.088.24c-.84 1.124-1.79 1.832-2.836 2.122a3.105 3.105 0 0 0-.174 1.185q.019.458.18.928a.443.443 0 0 1-.25.56.415.415 0 0 1-.538-.262 4.2 4.2 0 0 1-.231-1.184 4 4 0 0 1 .094-1.08c-1.056.05-2.197-.287-3.412-1.01a.447.447 0 0 1-.156-.596.41.41 0 0 1 .573-.163l.074.044c2.45 1.426 4.41.958 6.02-1.195.33-.612.518-1.318.518-2.07 0-1.813-1.096-3.36-2.635-3.96m-6.435 14.736a.444.444 0 0 1 .234-.568.413.413 0 0 1 .536.22l.01.023.018.04c.037.076.091.167.165.263.12.158.268.296.445.401.432.257.995.303 1.738.045.609-.41 1.366-.606 2.265-.579a.43.43 0 0 1 .407.45.43.43 0 0 1-.432.425c-1.651-.05-2.625.768-3.02 2.55a.42.42 0 0 1-.503.328.44.44 0 0 1-.315-.524q.207-.936.617-1.605a2.4 2.4 0 0 1-1.173-.33 2.4 2.4 0 0 1-.968-1.081l-.003-.009zm1.913-14.128a.43.43 0 0 0-.41.447q.028 1.178.483 2.015c-.716.053-1.415.446-2.05 1.236a.45.45 0 0 0 .051.616.41.41 0 0 0 .592-.054c.518-.644 1.034-.917 1.54-.929a1.5 1.5 0 0 1 .58.105c.11.043.203.092.272.137l.035.024.021.016.03.018q.713.476 1.743.667a.42.42 0 0 0 .486-.355.436.436 0 0 0-.34-.507q-.872-.16-1.445-.545l-.037-.027-.043-.03c-.703-.511-1.053-1.306-1.078-2.407a.43.43 0 0 0-.43-.427' fill='%23000'/%3E%3C/svg%3E"); }
.org-logo--chaitin { --logo: url("data:image/png;base64,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"); }
.org-logo--kimi { --logo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 118 125'%3E%3Cpath fill='%23000' d='m59.388 58.929 41.899 32.852c4.098 3.217 10.167 5.712 14.974 6.433.708.178 1.252.532 1.252 1.431v23.569c0 .887-.532 1.431-1.429 1.254-8.208-1.076-15.34-3.572-22.827-8.574l-50.46-40.362c-.71-.532-1.43-.532-1.961 0L23.358 92.68c-.531.532-.708 1.076-.708 1.785v29.104c0 .887-.531 1.431-1.429 1.431H1.429C.543 125 0 124.468 0 123.569V1.431C0 .544.531 0 1.429 0H21.22c.886 0 1.429.532 1.429 1.43v58.208c0 1.254.886 1.608 1.783.71L86.313.71C86.844.177 87.388 0 88.096 0h26.571c1.428 0 2.137 1.608 1.074 2.673l-56.53 54.28c-.709.71-.709 1.254.177 1.964z'/%3E%3C/svg%3E"); }
.org-logo--alibaba { --logo: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZwAAAEKCAYAAAAmfuNnAAATzElEQVR42u3dP3YbWXbH8Z/aCpyROxBmBeKsQOgViF5BYwlcApw5G3gFg44cGr0DaAUDZc4MZZMNlI2jdoDiqMQhRYCsQtWr9/mec4+kPjPdVNWr93v3z7v3TQAgmTWWJDdJrh/552n++fuO/9ufkxxafz4k2bX+vH3in6Mw3ngEQDVi8tCS5EOhf6fPLQF67FcQHAA9cd14Jvfeybwnb6QEvjbCs29sS4gIDoCXC8u85al88FjOEqJ7AboXJRAcIEJh37yWefPrlcfSKV9aArSVIyI4AHHBJb2gbZJN8ysPiOAAxTN/IC7vPJLRekCblgCB4ABFCMy9ybmU6/1sWgaCAxAYEB+CAxAYZJJht3Vje48DQHpI8i+a0+0hye+M5ZjnufV5AOjCi1k1p1ibK/uR7ZPc5VuLIADIc5cseTHsNXZIsiQ8AJ4Kld3leAHQhskITxQNAF1y03gy89TZewy5aHXbqjG93YCKREY+hg3p8Sx8hgCRYexStms8awCZRk5mSWTYyG0VhQVASq0uk/hnJZZS83aAQljkWMJs82K8HQDpIy+zjnsybHq5nRufN5DR3JXZ25hGaWuepko2QMiMXToHMW9CRPJprxNwABfyZlZCZpPIO8yaQ4MQ6MuagsrrAD16M1sbzaQrq25yLFnn/Zye1yE6AG+GV5PXl7LftmbKeL5PC7xiAuAV3EZupjS7vUD1Ie/n6WICogO84HKm06yy3VPHRKx5v0QHODdsZuNQthuD8DoJr8npAE9sEsJmynb7CL3V3MZIIQGQ76vNxOHr2PhmhucNVjINRH7GRlxbiO02Jre6HApcSGiW8jPKpWNs+BC2sAUhFRUC2GzZ2G/GzyZccKByDYSGVR1im2fchSzriXnkO9sSCA2r2e4KCAUvJhRyW9qiQGhYzbYppHz3ZiJrXGgNhIbpAxYFMEqlAULDopoqT9wl23vOAKFh5d4buSY8vRdtjOoZ/4u9FQ/CCP+R5L/EgNEjX5P8Pclfk/xPQT/3LseS6i9J/liAYP5rkv8bU3jtjbWPVmeAuyRXHgc65HOzUe+bjW/XnLynwLKAb+ZrE7E4WIoYS5hAZwDWRfhm22zCi4o85OuMP/y85OEgI7n09s6jwJl8aTyVtu19T6P9nr7qKI0MeM9g60TOcnop86Y5Jc9tXM96O6uoWAOKcP0ZcZmKt3PQ8ga1spSnYfnnnAtx6feAt9N9ALWdtPY2V9ZK6N9m+EFpNbE2NgKp4OLm1iZb9fTNdeqqFiM6p4VMgc7DZzbdOsuRhcaIjrAahM9Yp6fUdY4XDm0eREdYDbl0cnJjI550eGwVuZepsFGthlK5U3022eS+8Jjqtb7MukJc3iQwqOf7HXLN3XoFiKIAAgPfceRxMJJT0c6GTWAwGfamgcJpiHWR5CcwyAmd2odapwCvJmWWKd9XkUnGohQvR0k9eDUppwfZIsqUkU4qTYdYxzxw8GpGHCZbOhUi/ZRJVz2UDfWddtjjt/mFyXAJtqmkUu2tdz2qbgEfPIrB+NS8g63b2BhAcD4MEElBhdxGt4ChcjHrHHMxvBhk4D6ISqNR7TjaqZcsO92h9jzOwWOPwgDWuW1yzI3NLDuMGHdxkL4uewmh9R8qk/BHFA6MS3AUDVw+hPaLR9E5XxpPZiM2DYwXgpOLhdDWSd57FJ3xuSUyqsowhQPpEP9NuZwIobGnk/7yMYgcTpndBng46X2krBDa6/gt30Jle48DvBtgfFP9Sq8sW/gQEfdwJjX5k4eT3qZxXnkUL/JkNhFXRn17xhD4zmK+BU8GSHWhd/dwUMSiITJA2ewIDiJfQ2SAiY4n2LmHkyJjr5sk7zyKPNZ9eS0nA+S5goHUkr8hOHlVl+d1FAfkwWXMe5HZexzASftIBhptjSgOcBkTqId9TPxEFAc8NxFTm38grw7JD/UN33r8KWIqZ+1dmIkM0A1DzsMSkVCJNupW/wCmEU5TEm1YmjJmIPLAxktXLjaHypL/RAbIJAeuKRggNoMn/5cRzwVSQbNOBQPcXcl/ICpdJ90lGvWJzcbJBhicWYYPnYPY9GYLJxqAd9PYyisYB8uJejYLrxbg3WSgsdKoq3vA3usF7DPRRNci4OUAvJsL2dprIDa8HMBeoxzaAuDlAEjJTTqVQxMbXg4QXQUufS0CxIaXA0RXAeE0YsPLAZBSO0KrTiM2vBygEu5G8s2vvYo6XzwvB0g1M7TG0vxX38RoV8PLAWKapwMmseHlAEjhZdC/N9EdEBteDhBl0H0XC7h7U9kJY6y2tUyASR9012N7OG8mKjbbJFfW/rP8THiSHO8o3OYYajzkODPEc0FeUCiwH9He80fzb9J7g7wD74WXk5dd0Ns98nzujOBGyioU8G1f6HSxIyLmY6SfuUg7eS8UFMbXWYDY8HIK2jwOP6jwU/mDh+xUoUYXAeZiWE+HmD3vEBnnxXKeeOqIm5ZoO6WTPxSd9Qkz4j2/yBtnPKXQiLs2xGa6HvROYUHcuRmHLb2STLrtd6l2EErrVHQ8z1RZTj+2b9oBMpdN6jJiM9Rp1nON5py8GxVpTCn0pdYe0amDDe/GKZOpYOlbcLY+fqG0EX7XvJuoSCM29XrWWooIpfFuoiKtVltbQrl0znDl0Qml8W4UCRAbnHPQOciXYaShNN5NTx1YCYfWNSmwg4XQmlAa7yaKBFzsRH5we3wnd4aRh9L2vu9cpHMvsxjHGkLTTFEoTRFQdBJwsRPPhUw2NgcUMmPLIaaCeCmxme4J9vDK0KVcToT04/K2l1yZGbx03ul104Hnch1jIGLsgEKgyNu42Ikn19nhlZ7k7ZlJ5aXHHlcxzK+KvE35Zgrl6Wtsn9fHz29ecDFZWC0meMadusjbuNhZw4l121E44/qJ9XvK/x+iLC55Rp07sclk8zTrjp71qoPc49wrEWWJS56RnCvzYif6F5rDicUYS3k2XU2iDFpyTheBqk6om46f8yzdXRB0ShVlUQYdyTldBFJ8h4DdwCGMGcHRjT7KoJ/kbYZPzr231s/ia+uiIu/4uFEsklx1+O/93BKwc9gn+XTC/wYZXfh1NXIxRAebBW9FF4GXbA53PXrGPBBRFoUCkZxj9S6+vkXmPmzhQl2UQEehQIyKZu1FuGrCatcTT/6vLnD6PAhZRAm0QgEvmZ1cRbVqNs1ZwR7vvDltbi/47FaKL1w0H6ltpvjQ3wzwkndJ3lnv6bOoYNds3PvGtiP70G8agZk1v7904chvTYhOyCJVl0B/HPE3fDPF9XnpKrUlsemdqyQfGntMiO5F6NCqwtp1WPV23cqF3LT+fP3Iz3RpPrW8KKTqi+YfM+680p6Hk1dXpf3FWi/GQzr33V6N+O9EaFDKPvRJ7iYueLIibePjRWHVsSolzbhhKeuu0jrlFlCgP9Zx7SFmgte3IXoO/ZSL36k6Q8prXaNdVYyL7vMUM8uxJNfl1268GWEzpPAGwdZwB9zaFJ+tr78hPi96hgsnQuT0qxhjXs8rr0n7miE6v95coIULkUHkbYTSon1NNbmGUwX7tvlg9pU+p3UFLXyQavM21YXS+rqHM0vyv9Z7p8991izO+UC38/vmS+P9bVtdEoC8Im+zzbjvh/124iRZgpPnCwU+WPO9P/f5wC1i0kH7nV2+dUAA0lE4fzvy7+Frq4LXxpfXFQr8tzX/Q37u8db7TUuAZi0boqXQ5+aD2rZa6ewMj0P6z9v8MvKf8d8y0QadlxQczTmHF5xz+5y1vaVzODxogbNveSlbrxgZLm/z55H/jNWF0qKjwKB2Z6kAVd63OdRcBPNTup/KiNM8DQDdflPrjLtIII1ncyA43Xg3V9b9yeIMIJ1ewxh70cx/Rri5M1dWqKyby58AcvZ8m99d8Ix+aYzgAA67eqWlw7sgROR8A5Aq2mfplRaD1QgOUDabAr7znVBaqupVZLIfEFcwfOfloxu0mC4QYXwTPKMyZNS2sISAvCRvc1AYlKru4VxT77iLA2SQitirAprTOlB2KDh3LnkCiMudT+2Pe6+ru5O5kBiXG4hx9c+OkEemPbKV4ADRlDMac/Ju2HeLE0BOGnmi8pR3w+LyJ2DP0U2Ad1OAzSwrIKVfLN95VbwbLjgQTTnTf2hcNwHeDcEBoimn6b28GxatL4AU3JRTCXT6ufh5nWMNPADkApcmPxbwc+om0JPg6CqQXuPUAPKPppx/SjkXUV1tiI7QLn8C0ZQzSqCjLJE9nHMOoJwx9UqgLQKXP4EYpnaJEuiZ1xWl0IWa0xIib2OGFY5xSqLQzylpHQUDQEl5m7XX1S8H4tB5vmapmyyQ0kL2e99tzJ4oaLFyxYEUmbf5XTQiOgsQGiDyNlrXRFxVjobQAOXvL1uvK+7ejFholmK9QKaQtzG9MxrnjbmJ38zSATKVvM3c64rqtIwvT2NhApnMfBtd3KM6zaIEYr5NXMaOy571dQdQJglkclWvWtdEZ2heDSBqcgkz9yt6p/FqgHL3FCMHEOXQFiIQJdD/OFAqgY4469DxXC42kBePii7lOxe9iPzN0CeemSUBZOol0AuvK4OULRKab23IudfAy9mlnAvbiGZ6GvUB0U0gRg5YJNFwE0DZoTR5m+ifJmkIRFWaSEbEXIkNgJRdlbb1qoaH2ADIxC94GjkQcVcLD4iQfIwciAo1ng2A8vcPHUMi9kpsgLgwHiMHquCnykJLc4sPSJfXKd6N/Gf8Gi2qYgaOFhZAFAr47qN2XsdnACm92a/WNQRH/BaIylata1JnDmfKiN8C6SUMnwLmex28Kh6OkbFAlEHHKPgoa5yObb1aoLoD6t4rirY2A9jMqwWqG0O/8JoIjqo0QDSEd4PJdYrWJw3ontvI3SCvr1I7TLCRoOoUIJ23wEoBd4MwzsPK3b0jsJW7AZCyK9PctxufyKwfdKPYvJ3YX/JzxHGB9FAskAKq5zAc143I3DYHlKvHDi5vJxZ+4lID6bxn2i8EB8+IzMecGJZdCqcByNMdoQ1XQ/sAcndmKmbb3punIjh7awFIrRfDVaam1955q5xf0Xx4rNjkVmcBACmzFPre0E/Sf/+K/XhWaudXNfhAjCAQUus1VLbI8VrJa+9BLp76j7xVTgjgB6fcFJTARs4ud7+vKnvfwb/v1xxDaIcaug3wcIC67t60be2VneXFHDrOn5/kYb5tCc577wNAgd7N/c97rcvIP3l985Yn8y7dzxtbveSwf8fDAVB41MMecBSX5QXe3+Y111BuVKkBaJ2MS90HbioVmG0ud/1k3sUPfpiA6EgcAnWVQz9WJXUz8Zv9ywF6YB669iA3ExCchb0CSC3dBX60Oc4zjQuXixwLInYDF2TMUuE0v1PiigAcPu83yuuCxOU2xyT8dkQduOfitvqpAVEwcLK3sx7RvnBfOXY3MnE5+fLma3jzyMnmY+Efy69Ca8CrmGqrmM/NBr+5QJHRTUtcrps/3+Txtv1j4b7MedVXefmbR8Jqf57AwvpDNPMEXnoC/1slf9fPzca6bXl2hzOe080jv/9Q8EF9OcS+eVAiDUSHAVaDbS9ZYPFTpjnE7EPKmMEOAEPwJcnPjdhsh+63MxX1nltXAA+HfXdxczHU4vrpiYFLv2Y65Z039hDkZUnfu2YNreNSMcrma5J/bxyKdUbYVXRKZZG31hvOaBHyWB5zxcNhhe5/yxIOTOuJPfilPRX5vkXIOfcgNgSHFbjnXZc0O2FqL2Anr1N1eGydl43MPVQUmiU40+iwMIueSl4ILnJQ6qpFyKG0UyLBITSlhx72XhBGLi7LH+ReCI3IBqFx4hndC1PNVqe4EJo82tqGEZooIOg/x7Ow4YzikHPJ5oZ7QkNwohmp0NrApwfl1P0Ly6LltVx6je01es1U21spb075lT61vuxNszHN7EWvasc+lLAQmvPY2uAJzRhYWADZN97PQt4n7fxK21vZjHTT2vJahdC1oBmONy9cjL/4Jr/jU475n12zULYT9G6vG2F5aO8K+Pl/y7d8EJ7nLsmfPIbB9pJ1ptFEuRPBITo5uXfRvQDtG9d4l/PnbqTH/MlDQWn/8+sk71P+ML6l2UgvOmD8xWNwKBqL4Fw3D+a9dZKuhkCllbDddSgm7U3kKnUIfa9TC1NP4cCVx9D7Wl03a9Wh6ATR2Ym1soyrpB2Rx8n48zN3yvCJDiuzfH3uU+ycW2url2pXRSsdiM7GYmIXPiEunRB7Z2+tdVLWvIorFVxw5oSIPFetZt29vARfiNcCZYV6M06IOozwZpDHKqS0xmBd9IuSm5HL4Xnj5LJpi5G9pIWQ3My4kKN9vCpSpVkMcGNlfrjCEEJrJYR3hcwy/lvLvB1GZMr/jg8Vi4y+iSmvoEBuh8gQGaJDZHAx13xl8yUyKFp0dhNdq0sik8m2s1/bkCdZXSbx7+BY2lp1ICI8rKCT4SpKmFPpFYhdYZcxl9YqCE+ZA+h4MUizFrYEBulpPEGfrvoix7j/O69nFHxpPtxtazw0kCfyO4scL0G+G2Bw2b7xuLYdjPhABYLz0F1fxKC3DDCfZ9v6cAkMXjN2fN78/kO6H2q4a/0KgtOZ13Pb2EevrHPvZffgVGhoGfr8lm8emTL7GO21uHfwIThDLdh5S4BMJCQuAAhOLhUzvhegD17nd2GH3YOYNgAQnB4E6Kax9xN+d58aD6Ud0yYsAAhOhi0+uMkxcXkvRFeFeClpicjDXwGA4BQkRO1f75OY1z15Rl9aic9DS1Dav5dXAUBwCFPa5Z6z/Liq5qGQAED1/D/m8Ztc+7zmWAAAAABJRU5ErkJggg=="); }
.org-logo--mooncake { --logo: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAwCAQAAAAiRUsTAAAGu0lEQVR42m3Xa4xdVRUH8N/Z59xHp1PaKU2htAqNtdThJSDPaAWhLSFKFCUYQ7BENIgiIAnxgQmGD0Z8AV/8Yozl1ZBAQK0ipbyqPCItQnm0VIpCqFQKLR0o87r3bj/cfc+cO3ZO5ubufddaZ+21/2v918rkIrL0CbGymtrtyfQk9OlN0w7lsqfc/ZZVvkeZXFtLWyiV+yWzPo0sF8plVvEjq3iQ6WibaUg0nn7reV81VjlFECtH6v53gxCTYEDTLzxvi+fdqFExohKsWNFGnp7wf5+5moam4M6kFkVrBA0NtVKzqtfTFMplEASFQiFXqKUDLhG1POICG7VEH077tSRXlKZD7wVZGdtuhIJJUDeBZc43bNxqE47wX4u8Kne3zGb32l7KURN1qpiYcjwH8xxuLj5mrfdFUduoSZep+baWiRSMEbdbgrkOd7BuOEPpd+l8IZhrjV1GvOlnnhRF71vnPDtEE7ZoiV52oT/bL4r+6Ea77LPLb81JJotebEO5XF+5mjHPuskycLa30u4uZ4Bht9jkg4r8OkFRxje5XsfpopZ7rPKwlg98FBQaWOQbvudSC9BQgCONaXvQKn/QFp1EwkfoIaGOC7XtNQtHmBSdKdeUq2tWrnWGetpfKRqzEENGtJ2PetdsKHOD/YJBFxu0Wob3tEXRhDHMdJABjKa7b3sPhdUGfdWAYH/l5SkIhdyAl0QdO0TRC5rqyKxwk0dt86ptHvMrZyVIzbBNFO3QET2nmeyEbmxzQU3uKH8ymS5gu+MFnOWJyrX0nr/6NIITvZJ2Jj3qWHkvtt10yBBscqx73Gmh/9hgH37oBhles8Fmb5vnE1b4EDq+70bMcbYF3vAtZ9nslKnimSvUcZ4ouiyFJuAGUbTXNYYqQZvrWvtE0XWkFOIqUXQOaoJcKimZe3W8alBNwwC+kOJ2HDINDXUNdXCCf4uiz2KGhpqDvK7tLiFhIYG45nXRz9GQC2b5l47dlqKZMqeXOE0M26PjFTNL1N8segW5miBB+yNestdi1NTxdVF0MWakytZL8CBo4muiaDXpDIvttNHhKbAyh/q9EaPetcZQSo31Op5JCAkVwz3zhdxzOtahIZjndruN2Oce8wVqHq5A5z6ZYI6domtTSKYbzuUauE70mkFBcH/Fxno5y0UttznVfVqiY7DMuOgM1PuM5WWVqmOlaL8lOEHUcrdTrdUSncZF2vYZxGEmdKzAx0XR0al0VCty7xW1JNV2DD6nbdR8zLFf25eCdwQDrjbf1YLMu5jQwkF9FD9Fgj06n41JE9gjqCUbDcFeZqXMfkcUbdIQzPeW6JuyFNspnut53JS5UvSmuTJNz1VsvGAmHG+rKHrP045EXeZxHRvK+plXMNDjZDbqeAx1DNucivqLju2WaWZa6Uk7LCpx+wNRy5kJPmEaYTexSlt0DepqWGKvF6ww0LWZp4TcIbpWpqGQWWCvjq1ml3k3hYYGhvxT29vmCwoNmR+JdiTWToWxruYhbc/K1dQ0caUoesRQOkFNTT15drCNouhyNNNvL+r4iyKFTS5o4BJRxwXp7hsya1OsVur/Ozdd8m2ydFK+oiO6qKSd8oCzvCG6yzLLDafD3JFgtcEVPulon/KdMifXpGoybLmlbhW9lgpPpU+o43xbjRgTjVvnUBmu8GaZlJ3y206XI7PQ/cZFo971uHNkqdrmSiQW+JsoaomiBxKMFviuh+w0rm3UGx50lUNSB/ZIIpwoerCvTazg8GxRx82G3aElOgozSk5YathSc9O6ieNFLWsM+7WOaHnJDXnPbB1f1rZHEwtNilYoNBTq5cV0L7Mh11A4VzTmEAwa0fbF8sKKUMn23YJZrrfYj2XGbNMyKWBC4XTnOk1uXEehpWW7CYXrLXa9AcHuZCv14z2gd/uEmPrE/W51iYHUFj2VXv6EJWDQpe5N3WO3zduS+oTQo8ipdmnY02WjtlkUbfMTx/l7qhlR9LhhP7VdFL3sgST/lCPLMloBWLc+UTjFKifhDP9IKi3jWn7pCLdo+cDetL/JZ3CylU4WqPSLFW97FEivANV93lpbPKtt1GzMM2HSQ55xh/PU9Ai2x7dTtvpGkC7U6ooeLYMTRS2/cbTfaSXW6LYoNUWqFf2UH1SGkdBnvsv/dbl6X5o8qpZAVyWhMI2a+qg6HGBVk1lkvXHRmPsdJpSgDwd8ciGTl/3t1Ew4feJtY9iQPbaSpmTTRto+7UyoDJnTDVeHz1Z5lbEyPjuwdm8uO9DE3T+X56kHn5LVN9H1aRd9/jlAEHo+tadJZtPkpxyI/A9KpZrmfBtoWwAAAABJRU5ErkJggg=="); }
.org-logo--prompt-manager { --logo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='4 8 56 48'%3E%3Crect x='4' y='8' width='56' height='48' rx='11' fill='%23fff'/%3E%3Cpath d='m17 22 10 10-10 10m16 0h13' fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.org-logo--sagemath { --logo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='26 8 108 34'%3E%3Cg fill='none' stroke='%23000' stroke-width='4' stroke-linejoin='round'%3E%3Cpolyline points='55,10 38,10 38,20 53,20 53,30 28,30'/%3E%3Cpolyline points='97,30 85,30 75,10 60,10 60,30 75,30 85,10 100,10 100,40 80,40'/%3E%3Cpolyline points='132,30 107,30 107,10 122,10 122,20 110,20'/%3E%3C/g%3E%3C/svg%3E"); }
.org-logo--asis { --logo: url("data:image/png;base64,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"); --logo-mono: url("data:image/png;base64,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"); }
.org-logo--oiia { --logo: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAwCAMAAAC/knOqAAAAwFBMVEVxaWObm5NqYl1rY15dV1WblJDj0tKDenlFQT3/AABDPjxVAAB/fxVDQD6gmZRAPT2DfHX//7//v/9/AH87OTaDbVmMmX//f3+JgHpVVaoAAAA5NDJQSERCPDlkWVBbUkxKQjwvLCtvY1l8fHv///9MSEZWVlZNR0VvaGWDeG1MSUhpZmZ1a2NRSkdbVFCXlZVYU1BaVVRkXFpaVVI8Ojlya2c/Pz9kWldbWld8dXJiWlZjWlS7uKlrYlyqqqpZU0/aWfzUAAAAQHRSTlPYGWCsIvAHHrAB1AMC1Ji5nwQEArX/FAL8AwD+/f7+/f7+/ggBjwXQTvxsFv60zQ+uTDBvziUEeDAnUpAQlQ2PHfAMbwAAA0xJREFUeNp9lYliojAQhlG09m733s1tAiLgfVV7vv9b7T8JiNsuRUASPiYzf2aSiLUc1+W7jhGL/k+OWG/WZezin85Wdqz0Q8IcY99GzuGvtxy1sxOln57rdrKazlwr+6gmSsRFUSz3Kzd+E/olaWXXWikhtMCRzehvfPTXjXC72rmquWMPSilPGlzS6Mx9jK2itzNtJ1aD8j8hpsmR7RVpmhbLbcV3ImUtGTbGCMk52FozV9yYMNxiTO0y0kJpjZPcMFxIMT0LbDk1UuJrHFKkKzZaKEQFFHdl/QcmG3i2nIILaKAXIS7c4MdEaEsxbj1bGD7kvGGJ8nLBOtw2wpLlB2LdOR8O6QwosV4sqcRwOFRglUJ0izNiNxxkxUrPhoByi36RCzERQy6mHbCjwHJyxEge1Pd3a+FprlROjZTmuNzw2mqwDJzUhbYiyg09ajgS5vg7P0V9eAAoQGOUMfYHJkQuvL5LXsuAT7x0EuFALasoLIMT0XYZcnKf1SZP/SBlLfLBWCsl5O5SXSSp8Jb4qSPeDYIRH2KbqDghtsyyG7wxHpXvYJ+VlMhrX29uPE/hj6wkODqBDNGUlH5m5BLZ73UAa2StQTUhlEuV01abyx7ldcR2rqjMgj1OdPhW2zyfaCkvy8Aid2qWVwF6oxKPRttIw8DloGa75sjKIAa5QG6hRa/MNKnXktWJXV6nECU7wgiZlB7Xna0WjVa1E8YE0RS99DJ41s1EM2k0z9IXH0zjUHh393q024mEV+B04gwgKhBL7nWbtW8e4dtNelcZ99pCL8ozXHjeN2wnNnz9yp6LTch3jG0FmfYVDPl6Dfvl3uo5liXmUj88qkBT2ZBVQjPXsMn97+inV5CtF2+hOqkcyWfyJntt2F9xHnWOC1qKavCqEpuR0PHXk3V9HI+TirxiB10Vp5g9HQ4ZRnhJTveAebNOXrE1FaWy0aDjRxGq27ZfOFbOKL9tTKsne8RUjz/ZWx4pvy2VjaNcEV123comL6oaGYNkxrwlrXYdO0RV5eI4l1x32n24Tp4UrYs0BNufm/i5nd2RxzytWvNe55PYHOvlfTVzTQDtbML+3Pb7/UHYji9G7rP9GPtQv387f9/dsm+ycnv2oe8vSIvmftRlv7cAAAAASUVORK5CYII="); --logo-mono: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAwCAQAAAAiRUsTAAAD1klEQVR42q3XS4gcVRQG4O9Wd9Q8RkJIBMkDwYgJPqK4cCGIiRtxoSQbEcSN6MJFcGdQCbhQhIC7iCBZaQwMvhBBIsYEnYXgK1kkIZhxMpKYydNMZjLOTHfVddHV1dXNdKY7mXPpqubWrb/P/c/j/k2/VrUKQejyPKgIlb4gK6L77VX1K3MCB1Hs19MKtor+87oEST4q+R1W2mp5/7DPq4ui3ZbN4eujDjppbbVvbjMVmeBVaxzEuAljzpu2wTbbrPKBs3OT3i0gFcFLokwmE4tx1V+OuSaKJmyh09tEkImNeOavtgdkTe4xmZg7MWAA1FSNOtYOGwRZ/j1K87mkmEvUrfdskQNJvlLuc6IiOO1SGbaRGvfabIPFZowadtyJ3KMokbnbXg+LOWDzvdY1YkqtRWGCATuMlBibcconniqerzUkSksrOkcq2u+W8i+u9JkoytTV1YvXp3xkE5b7RlS7DmgD9rBVra0MGMwhmxHOZNIc/Jz3DYrStvjPDXvOQy1ft4slyPaRddznA36jEbLoFltFSZdsDaJMaAtUN4t4zJIG1GIrunakZldKeq7D2yxKiiJYODtpMhFRM7UggFEw5WtpgmDSpQWCTRxyQGjkwRNGe4z09UYmGrelWdZ3OTpP9fQKes0rzUJO7F4A0Kgu+lKl0VQTq2025Leb5jXgJ6kgkrjqNc8YomiAN2KZxJTDTQqqxn2H6QXIg7NG8zqToCq56QSLmG45V0UqurwA3k6bLbdvOC/ro+q7kXClTAKcc605dcN5cFJN0g578aZoiBJ1Qy0B1Twia2rFKRrE60i3bnbA/tbJnRR51zrAG5+0Twr2mWzRWC2iOJHfjzlsnSdVpHrXkzOGO/cXsNQB0awdVmCplx0pDspemsxF93VK04CqT0Wj1hU7WO0dk/Mch2lxLB51Rxm2SUJqQuqyKUEqSJzxpj897W/PWd3hSZTlsrRpF3ISO7xNDIqOuL1DYcF7XRrnqD+KlviFaqe3UZAZFH1loohmVgi7j73ozlIVzhoz4kf71HzuQamKS9Ju5bSoqwLfWSiaVPSzjbnw5G3RrOitdprKfaA2ZwlEwYd+KcnOfxw3IXGr4HczqqKR7rBhzk1kgvN2mixmTuVKuCY6bVwQXelU3+09Uxfg/fYUpTlWWnnaRSkeL0nuni3BesM5j9vzmUbf2JPL1U1lGpKeO9Sw7/MdJW272+VbY35w4UZaXxUvqKuL3u14tswD/f7BK+9qozNSqUOlomn5Hm6s+wcVe0XRv+5pg+lPps7h7yNOGLHLkl4acD+2VsUZtfmW/Q9naEtQ9SgJ4wAAAABJRU5ErkJggg=="); }
.org-logo--sagemath-vscode { --logo: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAwCAMAAACPHmKLAAAAwFBMVEVo4tkibnMqk5yl2defqq3N09VOXmUGISkFHykFDzQVLkB/f384x7wdeYADHyq2vsIsvcEoNUMAGyQGIy5qgpkAAAD8/f1lfJM7U2pWa4NCWXFNZHpbcoosRlZwiKEhO0sAEh0aNkYGFiILIig0TGQs2NcHFhobMjgx5dslNDkNJSsSMj0vy80ACxYHISoFISsYZ2vQ1tc26eI39enn6eoAAFUTVFsORE0FISouubmapqkmLDYKISqKlppoeH48U1tyFUvYAAAAQHRSTlP/////////ZqoO/wL//9L//xP8+v8A///+//7///7//v/+JR3+/yYW/xMv/v//j8v//////wP//63//xFN////hJErfQAAA+hJREFUeNqFVgeb2jgQNbAlyXXJYKtZFtgJi03dLGXr//9X90ZyAS65vA9cpHmaKo2jcYeHKeErga7+cfrVD04ferGouS9Wa845+wk4X68WZ4yn8Wz1c+mOdJz1OhZryLu0h7wAjVgOzqJlLKDA6Dj7McJ4rA30LALjARpkFjdI6A+01244U9Ay84wVZ2mGuaxjxf3SPZJMMr4aP0XjGUzyKysrvAQsSI1x1hgZTO3UGLIrGt9zJjyD5zyhpZVDHHIAEargtOoYmvF7MNaMe3uzFPHKssRCnFXm44PC4wPrklZNxY7j6KE1Ko4dQ8ggVMWj7xPg9oZRTBGjpDfrpWFQaOKEJnmuvDjhPWeD6PcBa9ZMYAafRd9aBtmJJfP3Vn7ynef7aB5NTB6UXDAo+rjCFdkRJluWD0GYJEueeJFLBoKYwBO+9cI3d4it4vlmhJcPCmJ2wUD+EoM60XDCE+6WFN0cXj9PJm8UQ2nFFcPkzKIO8mciwAwPCq1FBJnCDCyjBHRWgeFo4JYYlvGUKtY4yg1jRaIQRe397GKlrRM0sG0YQgNCFo5zlwqdpE7GDaPJhwcG/iKGWnJnDLaJEEriokP0f8BAcGKfCLts9p0RGtqa6YbxAkY7ggzakLvYwm+qRZ4mHXRSdAwsoxVgWf7WJnw7en634BgVQAzTWoVnzRs72M3kDG/9gWGuGKo/Nd7OKbehehFl1zK+Bat0ap0Hitc8b3vKCIpp3KprhhbeWml42FHy7jlQkpynQglK0DXDQ1HSWNi11quKUCk0A4meQQQ4L3TDsc6XVW6IMD/kTocS0J3nfkCqVg1sQ1UV8HgLwm6fo2b8rO51+BcuG0rgCRwRN6P5fE4MiKb6kiE4C3etFSkoCoSAR7v5vDywirLlLq0KOmjt1HXH/HLwuJuXJw5hlEeKyXOGEFLBEuW605/xwQ6Ecoj9Qc6JM4btjE/p/NkMT6d6k1f1I0wq/wZVNdPBqn+IQSvgj22c7+tHwmDpyrKsy/oAbU6E9IrWc9u8K2jYlB67zbKqcT8d/ElqOwadDIhCeCfCl2Fd1y2jPv1BVmIPw23PQMBf/EkdCHj9IovBsBwe9hucXIMDpy1VSOpO0otUbI2znRqOkl4FZmVRDPdL1CL3pwiOBTRCbDSLOlC+5UTogswpapCWG98okbsWtvBNNK1oLYnQU8d5Gh+RkbanNrciwLfdpvviB7+Pvg/OqECkTH8B2jnUbCP0/1ffzf/TwtsnmfobAsNf2y+AV0672dlz0EY9Q0USr+PP7VfG4vjLrwzGP00hefkl83/yf366v/r2AWb0fTRt0D0EfP6tE/sX3uPpATYyWdwAAAAASUVORK5CYII="); --logo-mono: url("data:image/png;base64,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"); }
.org-logo--pegainfer { --logo: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAwFBMVEUVGyb8/PwFCxfn6OkAAAALER0bISvGx8qytLjW19mnqa1FSlKEh400OUOSlZoUGyZjZ29YXGQkKjRwdHqanKEVGyZ4fIIVHCYVGyY9Qku7vcBPVFwsMjwAAD/f4OFcYGgTEyfd3uCfoaa+wMN9gIcAAFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUjSo/AAAAQHRSTlP+////AP////////////+C///////N/yK+/////wT//w3/////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ2OCjQAAAm1JREFUeNqdVomWokAM7E5P39wwOiDqqLP//4ubdKMci7uweW/UgQqVVI6GfZAd80/2D/vMjwHK8O+cs02WDw7fX2yjfX2jw6/zZjx6nJEhZzss/2BH+labPY6MCAC2UzDUUzVJjz6baIL8inPuTmw7DTTowW2Sbg1Neh7NlAzk8q6iHKt+7qG5ODgRaeQ8GwmyL5wQ6SymkqBFogPNdcwGY/TxKuftlBsyutQlCxpVODtEy+2EFg7WaUJyYbIm0hQKZGWHzBL6nBBAwUcTxnXkLLI0jXgGiojvEwnB8KndtA7PJj/jJSsrILIaxqgqvFcX9xhXwFoRfh+AyZJnqCv+619RKQrKXr331x/38iIXUTCJZW1OFdZKT4oDSQRdtHHOaBucLqRdC1HWzHFejR5t6wRfmmBXTAI77RF9xERZy1fM9lgfceC8l2lHCY3KYmJoWj+My7LsbjAPEYrbk1ZWKamK2stFc/CMsbTErC8Dg1YMHF0HbChYtCWcBl1mOcQHmcThuCznC1I9iV7f8LMg/Z7POC37XmFFh4K7xCDMegjDJawhSQv4c1C6EEftE6rYgUkV10maGKxSujJ5dRDXUM5ND+EZwE4udJVenW28G0LuPE5OikNR1c/EElhfKjRJooCAtGkmhp6dNt4sDahD90RksEf8adk6nlRvVfOS13mm30ekaN2I+uc1R7SohqlbTUCmyH6jCLS1mqYaZSIHW64uOFkNgeNUqnFBdyJ5t0TtEz4TRFXv9me3Bv/LfnW74LjLSEOQW08IHLms3QjPX0t645F1HI+BbYfi7mN3/8G+99XhP15O9r3+/Ab+sRsjLCKJrQAAAABJRU5ErkJggg=="); --logo-mono: url("data:image/png;base64,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"); }
.org-logo--fincrypto { --logo: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAwCAMAAAC/knOqAAAAwFBMVEXxZiL5lx7lICUXVfKrLWjtZBXqICbOJksrT/DtJiskTu1OR9HoIin8pREHEfz8zx8gT/NtO6niFVzvXB/79wVQTOLpXSRfQbmzKl9rOKesKmW6IhnKJEj2nCCRM4eyKGVKRMpgOrB/IX/3mR6KNIitXACwR2T60x36zx1wOaXJKExfQrKTL5OjUVuuUKFDRc9/AADHS1E/H79mM8zIREoAVaqEM4h/f39dQrf/AP9dQLmvRFqzVWEAAAD/AADzHSZAgtOzAAAAQHRSTlP0/B4b+xJe+PLsYPWdDwX6ougYYgcVm/WqG14ErKX9E5pdA1+mA/hRjptbJBcEBGYC+wQFngNlAmIBlnOVAAL8ciSefQAAA0tJREFUeNqNlul62kwMhc2Mx7td7wvgsARoCGmTdP8WDfd/Vz2yTQiEhp4fPNjP6zMaSSPboBOlZAWW0HRRxumlJmFZFj9gib9hBWRZwd4VpK+wtu0Gwg1SPHSNnUxt205t20pnV2Lg7aXpPcyhK75IRG1Pp/cdm+LqPXYGFjJNk9nlu+wnqs2DZnmYh2Gu/oKt8+Fenl9lxxTmH6H8T76fqb7p0U3bjj50ust757fs6gYyn0eDOpjCS+xSg90YxugowHTJV/+klWn0GnU/DLcXfDXqZLnuwKI5J8JiOiR1xuoJk3uXZSMLlguarNHoltZneYCnCPb7PWjzJtlSHuCZQGVAw9OcYfmO3O9tM4EardGcrkVldkAPbBcok9NVVVWJv0AXoS1coRSFIWD9pAf2YFqPm7lfVX71dUljsNPBUemDLzbVmdY/GiKfVdAD+s20x2F427Z3H7EVIZjVT2Tx6ouioX8KRh/pQc1Q5ud2KEbbnVUDu9JY3/0hYfqVYsfxPfoc0fj5VfE+3HYxIAFAx1LOKIqkdBzH4wCzoXYDe6cRsgHUDRaySSkiybbekXzFcuIMxDqV3g4kUM9x5JEsy82m7PGuHkbqTj0npoJh/iN6cmPePCySbRTdd3CYI2uGcGM2+w5bL5ZkMfhtjMptf1WJ9GQ2emkeI7USxChlhPskXAYjWlRJgqJgHWGMXpoH+RULD5iUpNEtY2SOfqHMc9+v5o4DtA2HjjCG2YLUoXPvJU8I1KNqPC4KDgh651WfLYuowNAIOlIXJAHtqPG8+f+Z+gRyfdJn+kkEQYHD9h2ow/2Ae4InsArDs7mDgtSenCBmTrEHNMWZ+KJKLkcbanVkEes0jvmfjJ2YY66ngtShdi29YtGTNZKMBMfICD2scNpyeJY9m73koTfWM+SYY6DdNlk1lBklzHpY5frsDHX6QkWVLCRlTKo+CjWEcDybPwuUTtKjP5c7Uv9FJBRxa5Qv6MksiaKCe9KTj9tmOek3V07o4vyVEdDYi/1/G1qvOxRFU5fmete+0HzHheYAMjWc4DcszgVy1iWN2JS3t37/ncUSgVuiwpN33llRFDFoBTz0Tpa/6ItXcQe+Jc9Zfml3XwSTS58FvwHLmzaL8xTIZwAAAABJRU5ErkJggg=="); --logo-mono: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAwCAQAAAAiRUsTAAAFZElEQVR42q3Xa4xV1RUH8N85596ZKVMgwmCRMhgrFXmJDwRbC7GmYKEZ0lY+9JGphdoGTF+JpjrUamOD1WrbYIMJbR0giIQammKMCegYSyrFD9qUh4WCUGOoDxCEwjBwH7sfZnu5M8jcmdp9v9x77t7/tc5a//Vfa2f6WplgvqXG6vKmAays5o7Djhilwd981a3GG+yEk7UOpf0wPNImz6u31Z8d80P/tt+Yfp3tw+hYQRAsNcNuq6WuttBwJP8rbIIGa/1L8KppgqDNFRr6c7DWulheo2F22adRiuOudECqfL4juZphKFtlsr/b7tMSqYKcxprn+sGUjTG63Z+yoMulfaesP1ZPCwrSqt2HvC2RyCREYwOGLUqklZ1lmVedFJR6BCsIA4Mt9fgV8KSgyWjNhuEdO70x8NiuERSqYluy0ibvVMX7hFWGSPrP5Axre8BWJ6+goKikLFhWLQW5mrzO1PfgdxAUJfISOWWkipjK2cTlavhaVlbfy1CiDpzARys4LyNTrK0H3bz8mreUlatefZvlFmiWM9Qce5WVnDKutvgk8S3m2NojliUlLfiyfdb4jnGYryRYXFtku/+e7I8xju97WhSsR2JFfPKMzE2Cn9QCTWQY7H6dPcq129dOY6US25R1KlqM+9xbC7T7z3l2R8Auz1ofI1sQ3A2anRSUnTRG6hOok4tnE2lv9mZo8liEPGqz7xvmPkFBUfCSvDqJrwtOCzadk+SkN8ESqZLZlhuLY7Z4xnP2YW48clyrgrygJWrDQ+pNNsllmhy1WQc+ZrhDDp0FZUkUvY2+bYo6JCY4o6QYwfIyIxwRBP+xzr4eVbfOzy0xy3BV8fitIPiLb5lqBMjj/vjCi1AvwcLIiVDhRyEWcdDaO/drBIctMdXlBkVTqQu8KQi+F/c2anVAWVFRKQK+T7+Cop9Jo3EZfi3ocIPpJkqjAuTxsKAz+tDkdv+sIlxPn4OCsger5WCu4DEz3OX6WPPdoHMFO1yFke72RoQqCTqt87Rgn9XejoaKgnlnGZzZbrNFXvP7+DCJxk76FfLaHIxevheBp2tx0HPGGawlSmSwU8NZzb3QAb9zStmoiq1GC2wwGQsi5B4r3GyvkuAB9wq2Ga/VYLcIugSnfapabFK3eVkQLPIRmZyP+7zrMN0uwXGPm28U7hQEL1gtOGWhLZ7X5HVFwVFfOLeEm7VY7A7jUOcCDPIHwWvuMiHuma0s2G2p4JROGxx1MDL3aePPBU16iTRf8Z5dWg2rVOJl3hK8a6y2Su5LgmOeMPt8s2cqk5PFql5mv1uj7qfq0OwfgtddjUFm+bEVlvuRmbFzZH11mUQqb412o5CTymSY6IDgBZfEfQ0mGRe/jzbJRbXHzkc85BYTo+/wTcEZ98T+da2fajNJzmessFeXkqOeNTnqygdq7TxP2uipyrMZOpzWHtM2w+NWmYZpPZpREPzpfFKe4QarBNuMMdoXPeIpbS4GV3jCX81H3npFW/3SHiWlKEVt5+8QCUa4ys2uN8l1RlcE5hd2W24IPmu79hjZBwUFZwQvGdTXTJN8wDw5024valWHm7S7Jopm3iuxvna6qFYzT6SRaN0pu1OwwUxDMcbt6pBTj2/E/tZhZP+vJ93Ta7tgh8+Z5ZN+4DeulJOTxxSHBcEDcgO586QS7YLTNvuuTfZ41Egik691WPCKG/t5CatixZwKeQ5aaQpE7t4mOOIO9cR5fAAXp2ZLPeoeLZoqnY1rbNHl4VhZmf/Dmmqt/ZZF4uX68jOpMTZ1D5ZDzPIlF9pspXfjgBo+zHVvqAmmudRhHV6szLzhw9wi613uEqn9dsRrSU6pNiT8F2tLM4R2H1/sAAAAAElFTkSuQmCC"); }
.link-icon--abstract { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5h16M4 10h16M4 15h16M4 20h10'/%3E%3C/svg%3E"); }
.link-icon--arxiv { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17.732 24.269'%3E%3Cpath d='M573.549,280.916l2.266,2.738,6.674-7.84c.353-.47.52-.717.353-1.117a1.218,1.218,0,0,0-1.061-.748h0a.953.953,0,0,0-.712.262Z' transform='translate%28-566.984 -271.548%29' fill='%23bdb9b4'/%3E%3Cpath d='M579.525,282.225l-10.606-10.174a1.413,1.413,0,0,0-.834-.5,1.09,1.09,0,0,0-1.027.66c-.167.4-.047.681.319,1.206l8.44,10.242h0l-6.282,7.716a1.336,1.336,0,0,0-.323,1.3,1.114,1.114,0,0,0,1.04.69A.992.992,0,0,0,571,293l8.519-7.92A1.924,1.924,0,0,0,579.525,282.225Z' transform='translate%28-566.984 -271.548%29' fill='%23b31b1b'/%3E%3Cpath d='M584.32,293.912l-8.525-10.275,0,0L573.53,280.9l-1.389,1.254a2.063,2.063,0,0,0,0,2.965l10.812,10.419a.925.925,0,0,0,.742.282,1.039,1.039,0,0,0,.953-.667A1.261,1.261,0,0,0,584.32,293.912Z' transform='translate%28-566.984 -271.548%29' fill='%23bdb9b4'/%3E%3C/svg%3E"); }
.link-icon--bibtex { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 3H7a2 2 0 0 0-2 2v4c0 2-2 3-2 3s2 1 2 3v4a2 2 0 0 0 2 2h2M15 3h2a2 2 0 0 1 2 2v4c0 2 2 3 2 3s-2 1-2 3v4a2 2 0 0 1-2 2h-2'/%3E%3Ccircle cx='12' cy='12' r='1' fill='%23000' stroke='none'/%3E%3C/svg%3E"); }
.link-icon--blog { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5C9 3 5 3 2 4v15c3-1 7-1 10 1 3-2 7-2 10-1V4c-3-1-7-1-10 1Zm0 0v15M5 8h3m-3 4h3m8-4h3m-3 4h3'/%3E%3C/svg%3E"); }
.link-icon--email { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ctitle%3EMicrosoft Outlook%3C/title%3E%3Cpath fill='%23000' d='M7.88 12.04q0 .45-.11.87-.1.41-.33.74-.22.33-.58.52-.37.2-.87.2t-.85-.2q-.35-.21-.57-.55-.22-.33-.33-.75-.1-.42-.1-.86t.1-.87q.1-.43.34-.76.22-.34.59-.54.36-.2.87-.2t.86.2q.35.21.57.55.22.34.31.77.1.43.1.88zM24 12v9.38q0 .46-.33.8-.33.32-.8.32H7.13q-.46 0-.8-.33-.32-.33-.32-.8V18H1q-.41 0-.7-.3-.3-.29-.3-.7V7q0-.41.3-.7Q.58 6 1 6h6.5V2.55q0-.44.3-.75.3-.3.75-.3h12.9q.44 0 .75.3.3.3.3.75V10.85l1.24.72h.01q.1.07.18.18.07.12.07.25zm-6-8.25v3h3v-3zm0 4.5v3h3v-3zm0 4.5v1.83l3.05-1.83zm-5.25-9v3h3.75v-3zm0 4.5v3h3.75v-3zm0 4.5v2.03l2.41 1.5 1.34-.8v-2.73zM9 3.75V6h2l.13.01.12.04v-2.3zM5.98 15.98q.9 0 1.6-.3.7-.32 1.19-.86.48-.55.73-1.28.25-.74.25-1.61 0-.83-.25-1.55-.24-.71-.71-1.24t-1.15-.83q-.68-.3-1.55-.3-.92 0-1.64.3-.71.3-1.2.85-.5.54-.75 1.3-.25.74-.25 1.63 0 .85.26 1.56.26.72.74 1.23.48.52 1.17.81.69.3 1.56.3zM7.5 21h12.39L12 16.08V17q0 .41-.3.7-.29.3-.7.3H7.5zm15-.13v-7.24l-5.9 3.54Z'/%3E%3C/svg%3E"); }
.link-icon--extensions { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7h7v7h7v7H3Zm0 7h7v7'/%3E%3Cpath d='m17.5 3.4 3.6 3.6-3.6 3.6-3.6-3.6Z'/%3E%3C/svg%3E"); }
.link-icon--github { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 98 96'%3E%3Cpath fill='%23000' d='M41.4395 69.3848C28.8066 67.8535 19.9062 58.7617 19.9062 46.9902C19.9062 42.2051 21.6289 37.0371 24.5 33.5918C23.2559 30.4336 23.4473 23.7344 24.8828 20.959C28.7109 20.4805 33.8789 22.4902 36.9414 25.2656C40.5781 24.1172 44.4062 23.543 49.0957 23.543C53.7852 23.543 57.6133 24.1172 61.0586 25.1699C64.0254 22.4902 69.2891 20.4805 73.1172 20.959C74.457 23.543 74.6484 30.2422 73.4043 33.4961C76.4668 37.1328 78.0937 42.0137 78.0937 46.9902C78.0937 58.7617 69.1934 67.6621 56.3691 69.2891C59.623 71.3945 61.8242 75.9883 61.8242 81.252L61.8242 91.2051C61.8242 94.0762 64.2168 95.7031 67.0879 94.5547C84.4102 87.9512 98 70.6289 98 49.1914C98 22.1074 75.9883 6.69539e-07 48.9043 4.309e-07C21.8203 1.92261e-07 -1.9479e-07 22.1074 -4.3343e-07 49.1914C-6.20631e-07 70.4375 13.4941 88.0469 31.6777 94.6504C34.2617 95.6074 36.75 93.8848 36.75 91.3008L36.75 83.6445C35.4102 84.2188 33.6875 84.6016 32.1562 84.6016C25.8398 84.6016 22.1074 81.1563 19.4277 74.7441C18.375 72.1602 17.2266 70.6289 15.0254 70.3418C13.877 70.2461 13.4941 69.7676 13.4941 69.1934C13.4941 68.0449 15.4082 67.1836 17.3223 67.1836C20.0977 67.1836 22.4902 68.9063 24.9785 72.4473C26.8926 75.2227 28.9023 76.4668 31.2949 76.4668C33.6875 76.4668 35.2187 75.6055 37.4199 73.4043C39.0469 71.7773 40.291 70.3418 41.4395 69.3848Z'/%3E%3C/svg%3E"); }
.link-icon--openreview { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 18H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-6l-6 3Zm1-7 3 3 5-6'/%3E%3C/svg%3E"); }
.link-icon--orcid { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72'%3E%3Cpath d='M72,36 C72,55.884375 55.884375,72 36,72 C16.115625,72 0,55.884375 0,36 C0,16.115625 16.115625,0 36,0 C55.884375,0 72,16.115625 72,36 Z' fill='%23A6CE39'/%3E%3Cg transform='translate%2818.868966, 12.910345%29' fill='%23FFFFFF'%3E%3Cpolygon points='5.03734929 39.1250878 0.695429861 39.1250878 0.695429861 9.14431787 5.03734929 9.14431787 5.03734929 22.6930505 5.03734929 39.1250878'/%3E%3Cpath d='M11.409257,9.14431787 L23.1380784,9.14431787 C34.303014,9.14431787 39.2088191,17.0664074 39.2088191,24.1486995 C39.2088191,31.846843 33.1470485,39.1530811 23.1944669,39.1530811 L11.409257,39.1530811 L11.409257,9.14431787 Z M15.7511765,35.2620194 L22.6587756,35.2620194 C32.49858,35.2620194 34.7541226,27.8438084 34.7541226,24.1486995 C34.7541226,18.1301509 30.8915059,13.0353795 22.4332213,13.0353795 L15.7511765,13.0353795 L15.7511765,35.2620194 Z'/%3E%3Cpath d='M5.71401206,2.90182329 C5.71401206,4.441452 4.44526937,5.72914146 2.86638958,5.72914146 C1.28750978,5.72914146 0.0187670918,4.441452 0.0187670918,2.90182329 C0.0187670918,1.33420133 1.28750978,0.0745051096 2.86638958,0.0745051096 C4.44526937,0.0745051096 5.71401206,1.36219458 5.71401206,2.90182329 Z'/%3E%3C/g%3E%3C/svg%3E"); }
.link-icon--pdf { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H5a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V9Zm0 0v6h6M12 12v6m-3-3 3 3 3-3'/%3E%3C/svg%3E"); }
.link-icon--pgp { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='8' r='5'/%3E%3Cpath d='m11.5 11.5 9 9m-3-3 3-3m-6 0 3-3'/%3E%3Ccircle cx='6.5' cy='6.5' r='.8' fill='%23000' stroke='none'/%3E%3C/svg%3E"); }
.link-icon--site { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3c2.4 2.5 3.6 5.5 3.6 9s-1.2 6.5-3.6 9c-2.4-2.5-3.6-5.5-3.6-9S9.6 5.5 12 3Z'/%3E%3C/svg%3E"); }
.link-icon--orcid { --icon-mono: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72'%3E%3Cpath d='M72,36 C72,55.884375 55.884375,72 36,72 C16.115625,72 0,55.884375 0,36 C0,16.115625 16.115625,0 36,0 C55.884375,0 72,16.115625 72,36 Z' fill='%23fff'/%3E%3Cg transform='translate%2818.868966, 12.910345%29' fill='%23000'%3E%3Cpolygon points='5.03734929 39.1250878 0.695429861 39.1250878 0.695429861 9.14431787 5.03734929 9.14431787 5.03734929 22.6930505 5.03734929 39.1250878'/%3E%3Cpath d='M11.409257,9.14431787 L23.1380784,9.14431787 C34.303014,9.14431787 39.2088191,17.0664074 39.2088191,24.1486995 C39.2088191,31.846843 33.1470485,39.1530811 23.1944669,39.1530811 L11.409257,39.1530811 L11.409257,9.14431787 Z M15.7511765,35.2620194 L22.6587756,35.2620194 C32.49858,35.2620194 34.7541226,27.8438084 34.7541226,24.1486995 C34.7541226,18.1301509 30.8915059,13.0353795 22.4332213,13.0353795 L15.7511765,13.0353795 L15.7511765,35.2620194 Z'/%3E%3Cpath d='M5.71401206,2.90182329 C5.71401206,4.441452 4.44526937,5.72914146 2.86638958,5.72914146 C1.28750978,5.72914146 0.0187670918,4.441452 0.0187670918,2.90182329 C0.0187670918,1.33420133 1.28750978,0.0745051096 2.86638958,0.0745051096 C4.44526937,0.0745051096 5.71401206,1.36219458 5.71401206,2.90182329 Z'/%3E%3C/g%3E%3C/svg%3E"); }
.link-icon--arxiv { --icon-mono: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17.732 24.269'%3E%3Cpath d='M573.549,280.916l2.266,2.738,6.674-7.84c.353-.47.52-.717.353-1.117a1.218,1.218,0,0,0-1.061-.748h0a.953.953,0,0,0-.712.262Z' transform='translate%28-566.984 -271.548%29' fill='%23ccc'/%3E%3Cpath d='M579.525,282.225l-10.606-10.174a1.413,1.413,0,0,0-.834-.5,1.09,1.09,0,0,0-1.027.66c-.167.4-.047.681.319,1.206l8.44,10.242h0l-6.282,7.716a1.336,1.336,0,0,0-.323,1.3,1.114,1.114,0,0,0,1.04.69A.992.992,0,0,0,571,293l8.519-7.92A1.924,1.924,0,0,0,579.525,282.225Z' transform='translate%28-566.984 -271.548%29' fill='%23fff'/%3E%3Cpath d='M584.32,293.912l-8.525-10.275,0,0L573.53,280.9l-1.389,1.254a2.063,2.063,0,0,0,0,2.965l10.812,10.419a.925.925,0,0,0,.742.282,1.039,1.039,0,0,0,.953-.667A1.261,1.261,0,0,0,584.32,293.912Z' transform='translate%28-566.984 -271.548%29' fill='%23ccc'/%3E%3C/svg%3E"); }
.star { --star-outline: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z'/%3E%3C/svg%3E"); --star-fill: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Z'/%3E%3C/svg%3E"); }
/* logos:end */

/* ---------- 7. Blocks ---------- */

.block { position: relative; padding: 2rem 0 2.25rem; }
.block::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 1px;
  background: var(--rule);
  transform-origin: left;
}
.block-head { margin-bottom: 1rem; }
.block-head h2, .section-label { color: var(--ink); font-weight: 600; }
.lead { color: var(--ink-2); font-size: var(--small); }
/* Two independent facts, one per line; no one-word last line. */
.personal-notes .facts { color: var(--ink-2); font-size: var(--small); text-wrap: pretty; }
.personal-notes .facts li + li { margin-top: .35rem; }

.rows > .row { padding: .3rem 0; }
.rows > .row[hidden] { display: none; }
.item-title { font-weight: var(--title-weight); }
.item-sub { color: var(--ink-2); font-size: var(--small); }

.group + .group { margin-top: 1.4rem; }

/* ---------- 8. Entries: publications and open source ---------- */

.pub + .pub,
.entry + .entry { margin-top: 1.25rem; }

.pub-list.has-thumbs .pub {
  display: grid;
  grid-template-columns: 6.25rem minmax(0, 1fr);
  column-gap: 1.1rem;
  align-items: start;
}
/* The body gives the row its baseline, so the year in the rail lines up with the title, not the image. */
.pub-list.has-thumbs .pub-body { align-self: baseline; }
.pub-thumb {
  display: block;
  margin-top: .3rem;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border: 1px solid var(--rule);
  border-radius: 2px;
  background: var(--wash);
}
.pub-thumb img { width: 100%; height: 100%; object-fit: cover; }

.pub-title,
.entry-title { font-size: var(--text); font-weight: var(--title-weight); line-height: 1.4; text-wrap: balance; }
.pub-title a,
.entry-title a { text-decoration-color: transparent; }
.pub-title a:hover,
.entry-title a:hover { text-decoration-color: var(--rule-strong); }

.pub-authors,
.pub-venue,
.entry-desc { color: var(--ink-2); font-size: var(--small); line-height: 1.5; }
.pub-authors,
.entry-desc { margin-top: .15rem; }
.pub-authors { text-wrap: balance; }
.pub-authors .me { color: var(--ink); }
.pub-venue .note { color: var(--ink); }
.pub-venue .sep { margin: 0 .4em; color: var(--ink-3); }

.note { margin-top: .1rem; font-size: var(--small); line-height: 1.5; font-style: italic; color: var(--ink-3); }

/* Title left, metrics right. When the line is too narrow for both, at any width,
   the metrics move under the title as one group; nothing overflows. */
.entry-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .15rem 1rem; }
.metric { flex: none; color: var(--ink-3); }

/* Merged pull requests use GitHub's own indicator, as in its contribution
   activity: <span class="State State--merged f6 lh-condensed-ultra px-1">4</span> merged.
   It is the only non-brand colour on the page, because readers already know it.
   The count is the link to the list; the word stays in the metric style. */
.metric--prs { text-decoration: none; }
.metric--prs:is(:hover, :focus-visible) { color: var(--ink); }
.state {
  display: inline-block;
  padding: 0 4px;
  border: 1px solid transparent;  /* becomes visible in forced colours */
  border-radius: 2em;
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0;
  text-align: center;
  color: #fff;
  -webkit-print-color-adjust: exact;
          print-color-adjust: exact;
}
.state--merged { background: var(--merged); }
/* A sentence in place of a title (smaller contributions): no extra gap above it. */
.entry-head > .entry-desc { margin-top: 0; }

/* The metrics of one entry form one group; it wraps inside only as a last resort. */
.metrics { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .75rem; min-width: 0; }

/* Stars follow GitHub exactly. At rest: the list star (octicon star-16, outline) in
   the text colour, as GitHub shows a star count. On hover or focus: the starred star
   (star-fill-16) in GitHub's starred gold. The merged pill stays purple at rest,
   because GitHub always shows that state in colour. The count links to stargazers. */
.star {
  position: relative;
  display: inline-block;
  width: 14px;
  height: 14px;
  margin-right: .25em;
  vertical-align: -3px;  /* star centre on the digits' centre */
}
.star::before,
.star::after {
  content: "";
  position: absolute;
  inset: 0;
  transition: opacity .35s var(--ease);
}
.star::before {
  background: currentColor;
  -webkit-mask: var(--star-outline) center / contain no-repeat;
          mask: var(--star-outline) center / contain no-repeat;
}
.star::after {
  background: var(--star);
  -webkit-mask: var(--star-fill) center / contain no-repeat;
          mask: var(--star-fill) center / contain no-repeat;
  opacity: 0;
}
.metric--stars { text-decoration: none; }
.metric--stars:is(:hover, :focus-visible) { color: var(--ink); }
.metric--stars:is(:hover, :focus-visible) .star::before { opacity: 0; }
.metric--stars:is(:hover, :focus-visible) .star::after { opacity: 1; }

.pub-links,
.entry-links { display: flex; flex-wrap: wrap; gap: .2rem 1.1rem; margin-top: .4rem; color: var(--ink-3); }
.pub-links a,
.entry-links a { text-decoration: none; }
.pub-links a:hover,
.pub-links a:focus-visible,
.entry-links a:hover,
.entry-links a:focus-visible,
.pub-links button:hover,
.pub-links button:focus-visible,
.pub-links [aria-expanded="true"] { color: var(--ink); }

.pub-panel {
  margin: .75rem 0 .25rem;
  padding: .1rem 0 .1rem 1rem;
  border-left: 1px solid var(--rule-strong);
  color: var(--ink-2);
  font-size: var(--small);
  line-height: 1.55;
}
.pub-panel[hidden] { display: none; }
.pub-panel pre {
  font-family: var(--mono);
  font-size: 12.5px;
  line-height: 1.55;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.pub-panel .copy {
  display: block;
  margin-bottom: .4rem;
  font-family: var(--sans);
  font-size: var(--label);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-3);
}
.pub-panel .copy:hover { color: var(--ink); }

/* ---------- 9. Footer ---------- */

.footer { border-top: 1px solid var(--rule); padding: 1.75rem 0 4rem; color: var(--ink-3); }
.footer .dot { margin: 0 .6em; }

/* ---------- 10. Small screens ---------- */

/* Three balanced columns on phones and small tablets. Do not leave just PGP
   on a second line when the desktop content column is slightly too narrow. */
@media (max-width: 767px) {
  .links { display: grid; grid-template-columns: repeat(3, max-content); gap: .4rem 1.15rem; }
}

@media (max-width: 680px) {
  :root { --text: 16px; --small: 14.5px; --portrait: 7rem; }
  .page { width: min(var(--page), 100% - 2.5rem); }
  .row { grid-template-columns: minmax(0, 1fr); row-gap: .15rem; }
  .row > span:empty { display: none; }
  /* Keep name and full-ratio portrait together; the biography gets the full
     width below. The original image is never cropped to fit this layout.
     The name block sits on the portrait's bottom edge: an image has no text
     baseline, so grid alignment uses its bottom edge, and the pronouns' baseline
     lands exactly on it, whatever the system font. */
  .intro {
    padding: 2rem 0 2.25rem;
    grid-template-columns: minmax(0, 1fr) var(--portrait);
    grid-template-areas: "name portrait" "bio bio";
    gap: 1.1rem 1.25rem;
    align-items: last baseline;
  }
  .name { flex-direction: column; align-items: flex-start; gap: .35rem; }
  .links a, .pub-links a, .pub-links button, .entry-links a { min-height: 32px; }
  .portrait { margin-top: 0; justify-self: end; }
  .monogram { font-size: 2rem; }
  h1 { font-size: 1.85rem; }
  .rows > .row { padding: .45rem 0; }
  .block-head { margin-bottom: .6rem; }
  .personal-notes .row { row-gap: .6rem; }
  .group + .group { margin-top: 1.1rem; }
  .pub-list.has-thumbs .pub { grid-template-columns: 5rem minmax(0, 1fr); }
}

@media (max-width: 360px) {
  /* A smaller portrait keeps the name on one line at 320 px. */
  :root { --portrait: 6rem; }
  .links { grid-template-columns: repeat(2, max-content); gap: .4rem 1.5rem; }
  .pub-links { display: grid; grid-template-columns: repeat(2, max-content); gap: .35rem 1.1rem; }
}

/* ---------- 11. Motion ---------- */
/* Everything below needs no JavaScript and animates opacity or transform only
   (the team diagram's colour mix is the one exception, on two small SVGs). */

@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }

  /* Panels and expanded author lists fade in when they open */
  .pub-panel,
  [data-authors-rest] { transition: opacity .3s var(--ease), translate .3s var(--ease); }
  @starting-style {
    .pub-panel { opacity: 0; translate: 0 -4px; }
    [data-authors-rest] { opacity: 0; }
  }

  /* Scroll-linked: each hairline is drawn from the left by a small pen as its block
     enters the view (after the spark in mexicat/pdoom-video, but in ink). The line goes
     out fast and settles; the pen lifts off at the end. Only the decoration moves; the
     content itself is never hidden or delayed. The pen is the right end of a transparent
     strip as wide as the block that starts just left of it: translateX(100%) is then the
     block's width in every engine, and the strip never reaches past the right edge. */
  @supports (animation-timeline: view()) {
    .block { view-timeline: --block block; }
    .block::before {
      animation: rule-draw linear both;
      animation-timeline: --block;
      animation-range: entry 0% entry 60%;
    }
    .block::after {
      content: "";
      position: absolute;
      top: -1px;
      left: calc(1.5px - 100%);
      width: 100%;
      height: 3px;
      background: radial-gradient(circle closest-side, var(--ink-2) 1.5px, transparent 1.5px) right center / 3px 3px no-repeat;
      pointer-events: none;
      animation: rule-pen linear both, rule-pen-lift linear both;
      animation-timeline: --block, --block;
      animation-range: entry 0% entry 60%, entry 0% entry 60%;
    }
  }
}

/* One curve for the line and the pen, so the pen stays on the tip: out quickly, then
   settle (ease-out cubic; a stronger curve would finish the line in the first few pixels
   of scrolling and leave the pen waiting at the end). The pen lifts as the line completes. */
@keyframes rule-draw { from { transform: scaleX(0); animation-timing-function: cubic-bezier(.33, 1, .68, 1); } }
@keyframes rule-pen { from { transform: translateX(0); animation-timing-function: cubic-bezier(.33, 1, .68, 1); } to { transform: translateX(100%); } }
@keyframes rule-pen-lift { 0% { opacity: 0; } 4%, 55% { opacity: 1; } 80%, 100% { opacity: 0; } }

/* The reading light.
   Every mark on the page is printed twice: a grey key plate, and a colour plate with
   its own colours (brand colours, or the project's artwork). One invisible mask, as
   large as the screen, lies over all the colour plates at once. It is open across the
   middle of the screen and closes toward the edges: a mark develops into its own
   colours as it rises through the bottom fifth, and returns to grey in the top eighth.
   The mask is never drawn; only the marks show where it is. An edge closes only if
   more of the page lies beyond it: at the top of the page the top edge stays open, and
   at the end the bottom edge opens, so every mark reaches its full colour.
   It moves with scrolling only, so nothing changes while you read. Hover or focus still
   shows one mark at full colour. Not in the colour print: stars (gold means "starred")
   and merged pills (always purple), line icons, text, and the portrait. */
@media screen and (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    /* Is there more page above or below the screen? Over the first and last 25vh of
       scrolling, each edge of the mask closes or opens. */
    :root {
      animation: light-edge-above linear both, light-edge-below linear both;
      animation-timeline: scroll(root block), scroll(root block);
      animation-range: 0 25vh, calc(100% - 25vh) 100%;
    }
    :is(.org-logo, .link-icon--email, .link-icon--orcid, .link-icon--arxiv) { view-timeline: --light block; }
    :is(.org-logo, .link-icon--email, .link-icon--orcid, .link-icon--arxiv)::after {
      animation: light-plate linear both;
      animation-timeline: --light;
    }
    /* Layered marks also hide their grey plate, so no grey fringe shows under the colour. */
    :is(.org-logo--native, .link-icon--orcid, .link-icon--arxiv)::before {
      animation: light-key linear both;
      animation-timeline: --light;
    }
    /* The team diagram has no separate plate: its colours mix by the same profile. The two
       closing ends are separate plain numbers, combined here with the edges, because WebKit
       does not update a var() inside a custom property's keyframes. */
    .org-logo--normal-subgroup {
      --lit: calc(1 - (1 - var(--lit-top)) * var(--more-above) - (1 - var(--lit-bottom)) * var(--more-below));
      --team-ring: color-mix(in oklab, var(--team-ring-active) calc(var(--lit) * 100%), var(--ink-2));
      --team-cycle: color-mix(in oklab, var(--team-cycle-active) calc(var(--lit) * 100%), var(--ink-2));
      --team-node: color-mix(in oklab, var(--ink) calc(var(--lit) * 100%), var(--ink-2));
      animation: light-lit-bottom linear both, light-lit-top linear both;
      animation-timeline: --light, --light;
    }
  }
}

/* The mask's profile along the screen, for each mark's view timeline: 0 % is the bottom
   edge, 100 % the top edge. Closed at the very bottom, developing over the bottom fifth,
   open across the middle, closing in the top eighth. The three sets share these stops.
   The closed ends open where no more page lies beyond that edge (--more-below/above). */
@property --lit { syntax: "<number>"; inherits: true; initial-value: 0; }
@property --lit-bottom { syntax: "<number>"; inherits: true; initial-value: 1; }
@property --lit-top { syntax: "<number>"; inherits: true; initial-value: 1; }
@property --more-above { syntax: "<number>"; inherits: true; initial-value: 0; }
@property --more-below { syntax: "<number>"; inherits: true; initial-value: 1; }
@keyframes light-plate {
  0%, 4%    { opacity: calc(1 - var(--more-below)); animation-timing-function: ease-in-out; }
  24%, 86%  { opacity: 1; animation-timing-function: ease-in-out; }
  97%, 100% { opacity: calc(1 - var(--more-above)); }
}
@keyframes light-key {
  0%, 4%    { opacity: var(--more-below); animation-timing-function: ease-in-out; }
  24%, 86%  { opacity: 0; animation-timing-function: ease-in-out; }
  97%, 100% { opacity: var(--more-above); }
}
@keyframes light-lit-bottom {
  0%, 4%    { --lit-bottom: 0; animation-timing-function: ease-in-out; }
  24%, 100% { --lit-bottom: 1; }
}
@keyframes light-lit-top {
  0%, 86%   { --lit-top: 1; animation-timing-function: ease-in-out; }
  97%, 100% { --lit-top: 0; }
}
@keyframes light-edge-above { from { --more-above: 0; } to { --more-above: 1; } }
@keyframes light-edge-below { from { --more-below: 1; } to { --more-below: 0; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* Labels carry the meaning. Do not leave low-contrast decorative images in
   a user-selected forced-color palette. Native link/focus colors stay intact. */
@media (forced-colors: active) {
  .link-icon, .org-logo { display: none; }
  /* The star tells what the number counts: keep it, in the link colour. */
  .star::before { forced-color-adjust: none; background: LinkText; opacity: 1; }
  .star::after { display: none; }
  .block::after { display: none; }
}

/* ---------- 12. Print ---------- */

@media print {
  :root { --bg: #fff; --ink: #000; --ink-2: #333; --ink-3: #555; --rule: #ddd; --wash: #f5f5f5; }
  body { font-size: 11pt; color: #000; background: #fff; }
  .org-logo--normal-subgroup { --team-ring-active: var(--ink-2); --team-cycle-active: var(--ink-2); }
  .org-logo::after, .link-icon::after, .star::after { opacity: 0 !important; }
  .link-icon::before, .org-logo--native::before, .star::before { opacity: 1 !important; }
  .portrait img { dynamic-range-limit: standard; }
  a { text-decoration: none; }
  .block::before { animation: none !important; }
  .block::after { display: none !important; }
  .pub-links button, .text-button, .pub-panel { display: none !important; }
  .block, .pub, .entry { break-inside: avoid; }
}
