/* ────────────────────────────────────────────────────────────
   InterNull — landing page styles.

   This site treats the landing as the frontmatter of a peer-reviewed
   cryptography paper. Aesthetic references: IACR eprint, arXiv HTML
   renderings, old Harvard Mathematical Review, Braun product catalogues.

   Ruthless restraint:
   - One serif (Source Serif 4), one script display (Instrument Serif), one mono (IBM Plex Mono)
   - Single column of 64ch with outer margin for marginalia
   - No cards, no shadows, no gradients, no rounded corners
   - Hairline (0.5px) rules as the only separator
   - Paper by default; ink is the alternate
   ──────────────────────────────────────────────────────────── */

:root {
  /* Paper — off-white with a slight warmth, like quality book stock */
  --paper-bg: #FCF8F8;
  --paper-ink: #1A1814;
  --paper-ink-2: #3D3932;
  --paper-ink-3: #7A7468;
  --paper-rule: #1A1814;
  --paper-rule-soft: rgba(26,24,20,0.18);
  --paper-tint: #E8E1D2;    /* marginalia / subtle blocks */
  --paper-accent: #8B2A15;  /* oxblood, used rarely — for "preprint" stamp etc. */

  /* Ink — near-black with cool cast, like a plate */
  --ink-bg: #0E0E0C;
  --ink-fg: #EEEAE0;
  --ink-fg-2: #C4BFB4;
  --ink-fg-3: #6A6458;
  --ink-rule: #EEEAE0;
  --ink-rule-soft: rgba(238,234,224,0.16);
  --ink-tint: #1A1814;
  --ink-accent: #D97757;

  /* Live tokens */
  --bg: var(--paper-bg);
  --fg: var(--paper-ink);
  --fg-2: var(--paper-ink-2);
  --fg-3: var(--paper-ink-3);
  --rule: var(--paper-rule);
  --rule-soft: var(--paper-rule-soft);
  --tint: var(--paper-tint);
  --accent: var(--paper-accent);

  /* Type — real academic scale */
  --serif: "Source Serif 4", "Libertinus Serif", Cambria, Georgia, serif;
  --display: "Instrument Serif", "Source Serif 4", Georgia, serif;
  --mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;

  /* 10pt body equivalent at 16px body = 1rem */
  --fs-body: 1.0625rem;        /* 17px — readable long-form */
  --fs-small: 0.8125rem;       /* 13px — notes, captions */
  --fs-mono: 0.75rem;          /* 12px — running heads, folios, metadata */
  --fs-display: clamp(2.5rem, 5vw, 4.25rem);   /* paper title */
  --fs-section: 1.875rem;      /* §1 Statement, §2 Mechanism */
  --fs-pullquote: clamp(1.75rem, 3.4vw, 2.625rem);

  --leading-body: 1.55;
  --leading-display: 1.1;

  /* Layout */
  --col: 680px;                /* body measure ~ 68ch */
  --margin: 240px;             /* outer margin for marginalia */
  --gutter: 60px;
  --page-pad-x: 64px;

  --motion-fast: 160ms cubic-bezier(0.2, 0, 0, 1);
  --motion: 400ms cubic-bezier(0.2, 0, 0, 1);
}

[data-theme="ink"] {
  --bg: var(--ink-bg);
  --fg: var(--ink-fg);
  --fg-2: var(--ink-fg-2);
  --fg-3: var(--ink-fg-3);
  --rule: var(--ink-rule);
  --rule-soft: var(--ink-rule-soft);
  --tint: var(--ink-tint);
  --accent: var(--ink-accent);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  background: var(--bg);
  color: var(--fg);
  font-family: var(--serif);
  font-size: var(--fs-body);
  line-height: var(--leading-body);
  font-feature-settings: "kern", "liga", "onum" 1;  /* old-style numerals in body */
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Subtle paper texture — SVG noise, only on paper theme */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  opacity: 0.35;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.8' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.1  0 0 0 0 0.09  0 0 0 0 0.08  0 0 0 0.07 0'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");
}
[data-theme="ink"] body::before {
  opacity: 0.5;
  mix-blend-mode: screen;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.8' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.9  0 0 0 0 0.87  0 0 0 0 0.82  0 0 0 0.06 0'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");
}

::selection { background: var(--fg); color: var(--bg); }

a { color: inherit; text-decoration: underline; text-decoration-thickness: 0.5px; text-underline-offset: 3px; text-decoration-color: var(--rule-soft); transition: text-decoration-color var(--motion-fast); }
a:hover { text-decoration-color: var(--fg); }

/* ─────────── Running page chrome ─────────── */

.masthead {
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  padding: 28px var(--page-pad-x);
  border-bottom: 0.5px solid var(--rule);
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
.masthead__brand {
  display: flex;
  align-items: center;
  gap: 16px;
  color: var(--fg);
}

/* ─── Brand lockup — original chromed knot mark + INTERNULL wordmark ─── */
.logo {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--fg);
}
.logo__mark { display: block; flex: none; }
.logo__word {
  font-family: "Chakra Petch", "IBM Plex Mono", monospace;
  font-weight: 700;
  letter-spacing: 0.05em;
  line-height: 1;
  color: var(--fg);
  display: inline-flex;
  align-items: baseline;
  white-space: nowrap;
}
/* void treatment — INTER outlined, NULL solid */
.logo__inter {
  color: transparent;
  -webkit-text-stroke: 1.1px var(--fg);
  text-stroke: 1.1px var(--fg);
}
.logo__null { color: var(--fg); }
.masthead .logo__word { font-size: 1.35rem; }
.masthead__sub {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--fg-3);
  margin-left: 2px;
}
.colophon .logo__word { font-size: 1.6rem; }
.colophon__title { margin-bottom: 18px; }
.masthead__dot {
  display: inline-block;
  width: 4px;
  height: 4px;
  background: var(--accent);
  border-radius: 50%;
  margin-left: 10px;
  vertical-align: middle;
}
.masthead__right {
  display: flex;
  gap: 28px;
  align-items: center;
}
.masthead__link {
  text-decoration: none;
  color: var(--fg-3);
  transition: color var(--motion-fast);
}
.masthead__link:hover { color: var(--fg); }

/* CTA variant of the link, with a small testnet badge */
.masthead__link--cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--fg);
}
.masthead__badge {
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--fg-3);
  padding: 3px 6px;
  border: 0.5px solid var(--rule);
  border-radius: 2px;
  position: relative;
  top: -1px;
}
.masthead__link--cta:hover .masthead__badge {
  color: var(--fg);
  border-color: var(--fg-2);
}

/* Every major section has a folio bar at the bottom and a running head at the top,
   just like a book. */
.section {
  position: relative;
  padding: 96px var(--page-pad-x) 80px;
  border-bottom: 0.5px solid var(--rule);
}
.section__head {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  margin-bottom: 56px;
}
.section__head-title { color: var(--fg); }
.section__folio { color: var(--fg-3); letter-spacing: 0.1em; }

/* ─────────── Frontmatter (the "cover" of the paper) ─────────── */

.front {
  padding: 100px var(--page-pad-x) 72px;
  position: relative;
  border-bottom: 0.5px solid var(--rule);
}
.front__inner {
  max-width: 1240px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 80px;
  align-items: start;
}
.front__meta-top {
  display: grid;
  grid-template-columns: 1fr auto;
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  margin-bottom: 72px;
  padding-bottom: 18px;
  border-bottom: 0.5px solid var(--rule-soft);
}
.front__meta-top strong { color: var(--fg); font-weight: 500; }

.front__title {
  font-family: var(--display);
  font-weight: 400;
  font-size: var(--fs-display);
  line-height: 1.02;
  letter-spacing: -0.015em;
  color: var(--fg);
  text-wrap: balance;
  margin-bottom: 44px;
}
.front__title em {
  font-style: italic;
}
.front__subtitle {
  font-family: var(--serif);
  font-style: normal;
  font-weight: 400;
  font-size: 1.375rem;
  line-height: 1.4;
  color: var(--fg-2);
  max-width: 46ch;
  margin-bottom: 56px;
}

.front__authors {
  display: flex;
  flex-wrap: wrap;
  gap: 28px 40px;
  padding-top: 24px;
  border-top: 0.5px solid var(--rule-soft);
}
.front__author { max-width: 260px; }
.front__author-name {
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.0625rem;
  color: var(--fg);
  margin-bottom: 4px;
}
.front__author-aff {
  font-family: var(--serif);
  font-style: italic;
  color: var(--fg-2);
  font-size: 0.9375rem;
}
.front__author-email {
  font-family: var(--mono);
  font-size: 0.75rem;
  color: var(--fg-3);
  margin-top: 4px;
}

/* Hero plate — the real rendered knot photograph */
.hero-plate {
  width: 100%;
  position: relative;
}
.hero-plate__img {
  width: 100%;
  aspect-ratio: 1 / 1;
  background: #000;
  overflow: hidden;
  position: relative;
  border: 0.5px solid var(--rule-soft);
}
.hero-plate__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* Logo variant — the chromed knot PNG, on a warm paper field, no crop */
.hero-plate__img--logo {
  background: transparent;
  border: none;
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 4%;
}
.hero-plate__img--logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 20px 32px rgba(26,24,20,0.18));
}
[data-theme="ink"] .hero-plate__img--logo img {
  filter: drop-shadow(0 20px 32px rgba(0,0,0,0.6));
}
/* On paper theme, allow the dark image to sit in a warm frame — no filter */
[data-theme="paper"] .hero-plate__img {
  box-shadow: 0 1px 0 rgba(26,24,20,0.08);
}
.hero-plate__cap {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 14px;
  margin-top: 14px;
  font-family: var(--serif);
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--fg-2);
  font-style: italic;
}
.hero-plate__label {
  font-family: var(--mono);
  font-style: normal;
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--fg);
  padding-top: 1px;
}
.hero-plate__text em { font-style: normal; color: var(--fg); }

/* Full-bleed interstitial plate (fiber) */
.bleed-plate {
  position: relative;
  background: #000;
  border-top: 0.5px solid var(--rule);
  border-bottom: 0.5px solid var(--rule);
  overflow: hidden;
}
/* gradient scrim along the bottom so the caption stays legible over the image */
.bleed-plate::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 55%;
  background: linear-gradient(to top, rgba(0,0,0,0.78) 0%, rgba(0,0,0,0.35) 45%, transparent 100%);
  pointer-events: none;
}
.bleed-plate__cap { z-index: 2; }
.bleed-plate img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 560px;
  object-fit: cover;
  object-position: center;
}
.bleed-plate__cap {
  position: absolute;
  left: var(--page-pad-x);
  right: var(--page-pad-x);
  bottom: 32px;
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 24px;
  color: rgba(238,234,224,0.82);
  font-family: var(--serif);
  font-style: italic;
  font-size: 1rem;
  line-height: 1.4;
  max-width: 1240px;
  margin: 0 auto;
}
.bleed-plate__label {
  font-family: var(--mono);
  font-style: normal;
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: rgba(238,234,224,0.6);
}
.bleed-plate__text em { font-style: normal; color: #fff; }

/* Diagram grid — full-bleed SVG diagram above four written phases */
.diagram-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 56px;
  max-width: 1240px;
  margin: 0 auto;
  align-items: start;
}
.diagram-figure { margin: 0; }
.diagram-figure--wide {
  /* spans full width above the phase list */
  padding-bottom: 16px;
  border-bottom: 0.5px solid var(--rule-soft);
}
.diagram-figure__img {
  /* The SVG carries its own cream background; no overlay. */
  background: transparent;
  aspect-ratio: 1500 / 278;
  overflow: hidden;
  padding: 32px 24px;
}
.diagram-figure__img img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.diagram-figure__cap {
  margin-top: 18px;
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 20px;
  font-size: var(--fs-small);
  color: var(--fg-2);
  line-height: 1.5;
}
.diagram-figure__cap .figure__text {
  font-style: italic;
  font-family: var(--serif);
  max-width: 60ch;
}

/* Four phases, numbered, hanging labels */
/* Four phases — laid out as 4 columns beneath the full-width diagram */
.phase-list {
  list-style: none;
  padding: 0;
  margin: 0;
  counter-reset: phase;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 36px 44px;
}
.phase-list li {
  padding: 20px 0 0 0;
  border-top: 0.5px solid var(--rule);
}
.phase-list li:first-child { border-top: 0.5px solid var(--rule); padding-top: 20px; }
.phase-list__num {
  display: block;
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--fg-3);
  margin-bottom: 6px;
}
.phase-list h4 {
  font-family: var(--display);
  font-style: italic;
  font-weight: 400;
  font-size: 1.5rem;
  color: var(--fg);
  margin-bottom: 6px;
  letter-spacing: -0.005em;
}
.phase-list p {
  font-size: 0.9375rem;
  color: var(--fg-2);
  line-height: 1.5;
}

/* Vault plate — full-bleed dark slab with copy panel */
.section--dark {
  background: #0E0E0C;
  color: #EEEAE0;
  border-color: rgba(238,234,224,0.16);
  padding: 0;
}
.section--dark .section__head-title,
.section--dark .section__folio {
  color: rgba(238,234,224,0.55);
}
.section--dark .section__head-title { color: #EEEAE0; }
.vault {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  min-height: 620px;
}
.vault__img {
  position: relative;
  overflow: hidden;
  background: #000;
}
.vault__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.vault__copy {
  padding: 96px 72px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  max-width: 640px;
}
.section__head--over {
  margin-bottom: 40px;
  color: rgba(238,234,224,0.55);
}
.section__head--over .section__head-title { color: #EEEAE0; }
.vault__title {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(2.5rem, 4.2vw, 3.75rem);
  line-height: 1.04;
  letter-spacing: -0.015em;
  color: #EEEAE0;
  margin-bottom: 28px;
}
.vault__title em { font-style: italic; }
.vault__body {
  font-size: 1.0625rem;
  line-height: 1.6;
  color: rgba(238,234,224,0.82);
  margin-bottom: 1em;
  max-width: 40ch;
}
.vault__specs {
  margin-top: 24px;
  padding-top: 24px;
  border-top: 0.5px solid rgba(238,234,224,0.18);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px 40px;
}
.vault__specs div { }
.vault__specs dt {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: rgba(238,234,224,0.55);
  margin-bottom: 4px;
}
.vault__specs dd {
  font-family: var(--serif);
  font-style: italic;
  font-size: 1.0625rem;
  color: #EEEAE0;
}

/* Mercury ornament next to the citation */
.cite-wrap {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 56px;
  align-items: start;
  max-width: 1100px;
  margin: 0 auto;
}
.mercury {
  margin: 0;
  text-align: center;
}
.mercury img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  background: #000;
  border: 0.5px solid var(--rule-soft);
  display: block;
}
.mercury figcaption {
  margin-top: 12px;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 12px;
  font-family: var(--serif);
  font-style: italic;
  font-size: 0.8125rem;
  color: var(--fg-2);
  text-align: left;
  line-height: 1.4;
}
.mercury figcaption .figure__label {
  font-style: normal;
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--fg);
}

/* Actions — link buttons that read as footnote callouts, not CTAs */
.front__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 32px;
  margin-top: 56px;
  padding-top: 28px;
  border-top: 0.5px solid var(--rule-soft);
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
.front__action {
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
  text-decoration: none;
  color: var(--fg);
  transition: color var(--motion-fast);
}
.front__action:hover { color: var(--accent); }
.front__action-num {
  color: var(--fg-3);
}
.front__action-arrow {
  transition: transform var(--motion-fast);
  display: inline-block;
}
.front__action:hover .front__action-arrow { transform: translateX(4px); }

/* ─────────── Body / section layouts ─────────── */

.section__body {
  max-width: 1240px;
  margin: 0 auto;
}

/* Two-column text+margin layout (for abstract, statement, contributions) */
.two-col {
  display: grid;
  grid-template-columns: minmax(0, var(--col)) 1fr;
  gap: var(--gutter);
}
.two-col__main { max-width: var(--col); }
.two-col__aside {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  line-height: 1.7;
  padding-top: 6px;
}
.two-col__aside .note {
  margin-bottom: 22px;
  text-transform: none;
  letter-spacing: 0;
  font-size: 0.8125rem;
  color: var(--fg-2);
  font-family: var(--serif);
  font-style: italic;
  line-height: 1.5;
}
.two-col__aside .note::before {
  content: attr(data-sup) "  ";
  font-family: var(--mono);
  font-style: normal;
  color: var(--fg-3);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  vertical-align: top;
  margin-right: 2px;
}

/* A leader word / small capital section initial */
.lede::first-letter {
  font-family: var(--display);
  font-size: 4.2em;
  line-height: 0.85;
  float: left;
  padding: 0.08em 0.12em 0 0;
  font-weight: 400;
  color: var(--fg);
}

.para { margin-bottom: 1em; }
.para:last-child { margin-bottom: 0; }

/* Superscript citation / footnote */
sup.fn {
  font-family: var(--mono);
  font-size: 0.55em;
  letter-spacing: 0.05em;
  color: var(--fg-3);
  padding-left: 1px;
  vertical-align: super;
  line-height: 0;
}

/* Pull quote — breaks the rhythm once, mid-document */
.pullquote {
  padding: 88px var(--page-pad-x);
  border-bottom: 0.5px solid var(--rule);
}
.pullquote__inner {
  max-width: 1000px;
  margin: 0 auto;
  text-align: left;
}
.pullquote__text {
  font-family: var(--display);
  font-weight: 400;
  font-style: italic;
  font-size: var(--fs-pullquote);
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--fg);
  text-wrap: balance;
  margin-bottom: 28px;
}
.pullquote__text::before {
  content: "“";
  display: inline;
  margin-right: 0.08em;
  color: var(--fg-3);
}
.pullquote__text::after {
  content: "”";
  display: inline;
  margin-left: 0.08em;
  color: var(--fg-3);
}
.pullquote__attr {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--fg-3);
}

/* Contributions — numbered list, hanging numeral in the margin */
.contrib-list { list-style: none; }
.contrib-list > li {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 16px;
  padding: 20px 0;
  border-top: 0.5px solid var(--rule-soft);
}
.contrib-list > li:first-child { border-top: none; padding-top: 0; }
.contrib-list > li:last-child { padding-bottom: 0; }
.contrib-list__num {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  letter-spacing: 0.12em;
  padding-top: 3px;
}
.contrib-list__body { color: var(--fg-2); }
.contrib-list__body strong { color: var(--fg); font-weight: 500; }

/* ─────────── Figure (the single diagram) ─────────── */
.figure {
  margin: 0 auto;
  max-width: 1080px;
}
.figure__frame {
  position: relative;
  background: var(--tint);
  border: 0.5px solid var(--rule-soft);
  padding: 64px 56px;
  aspect-ratio: 16 / 9;
}
[data-theme="ink"] .figure__frame { background: var(--ink-tint); }
.figure__frame svg { width: 100%; height: 100%; display: block; color: var(--fg); }

.figure__caption {
  margin-top: 20px;
  display: grid;
  grid-template-columns: 80px 1fr 120px;
  gap: 20px;
  font-size: var(--fs-small);
  color: var(--fg-2);
  line-height: 1.5;
}
.figure__label {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--fg);
}
.figure__text { max-width: 70ch; font-family: var(--serif); font-style: italic; }
.figure__source {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  text-align: right;
}

/* ─────────── Deployments (chains) — typeset as a TOC ─────────── */
.toc {
  max-width: 820px;
  margin: 0 auto;
}
.toc__row {
  display: grid;
  grid-template-columns: 32px 1fr auto auto auto;
  gap: 24px;
  align-items: baseline;
  padding: 22px 0;
  border-top: 0.5px solid var(--rule-soft);
}
.toc__row:first-child { border-top: none; }
.toc__row:last-child { border-bottom: 0.5px solid var(--rule-soft); }
.toc__num {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  letter-spacing: 0.1em;
}
.toc__chain {
  font-family: var(--serif);
  font-size: 1.375rem;  color: var(--fg);
  letter-spacing: -0.005em;
}
.toc__chain em { font-style: italic; color: var(--fg-2); font-size: 1.05rem; font-weight: 400; }
.toc__logo {
  width: 22px;
  height: 22px;
  display: inline-block;
  vertical-align: -5px;
  margin-right: 10px;
  object-fit: contain;
  /* Desaturate so the vibrant chain logos harmonize with the ink palette */
  filter: grayscale(1) contrast(0.95);
  opacity: 0.88;
}
.toc__ticker {
  font-family: var(--mono);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  color: var(--fg-2);
  padding: 2px 6px;
  border: 0.5px solid var(--rule);
  border-radius: 2px;
  margin-left: 6px;
  vertical-align: 2px;
  font-weight: 500;
}
.toc__leaders {
  border-bottom: 1px dotted var(--fg-3);
  height: 0.8em;
  min-width: 60px;
  align-self: end;
  margin-bottom: 3px;
}
.toc__status {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
.toc__status.live { color: var(--fg); }
.toc__folio {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  letter-spacing: 0.05em;
  min-width: 48px;
  text-align: right;
}

/* ─────────── Key metrics strip — like a table of results from a paper ─────────── */
.metrics {
  max-width: 1080px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}
.metric {
  padding: 28px 24px 24px 0;
  border-left: 0.5px solid var(--rule-soft);
  padding-left: 24px;
}
.metric:first-child { border-left: none; padding-left: 0; }
.metric__value {
  font-family: var(--display);
  font-size: 3.25rem;
  line-height: 1;
  color: var(--fg);
  letter-spacing: -0.02em;
  font-variant-numeric: oldstyle-nums;
  margin-bottom: 12px;
}
.metric__value .unit {
  font-family: var(--serif);
  font-style: italic;
  font-size: 1rem;
  margin-left: 4px;
  color: var(--fg-2);
  letter-spacing: 0;
  vertical-align: baseline;
}
.metric__label {
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--fg-3);
}

/* ─────────── BibTeX / citing this work ─────────── */
.cite-box {
  max-width: 820px;
  margin: 0 auto;
  background: var(--tint);
  border: 0.5px solid var(--rule-soft);
  padding: 28px 32px;
  font-family: var(--mono);
  font-size: 0.8125rem;
  line-height: 1.6;
  color: var(--fg);
  white-space: pre;
  overflow-x: auto;
  position: relative;
}
[data-theme="ink"] .cite-box { background: var(--ink-tint); }
.cite-box__copy {
  position: absolute;
  top: 14px;
  right: 16px;
  background: transparent;
  border: 0.5px solid var(--rule-soft);
  color: var(--fg-3);
  font-family: var(--mono);
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  padding: 4px 8px;
  cursor: pointer;
  transition: color var(--motion-fast), border-color var(--motion-fast);
}
.cite-box__copy:hover { color: var(--fg); border-color: var(--fg); }

/* ─────────── Colophon (footer masthead) ─────────── */
.colophon {
  padding: 80px var(--page-pad-x) 64px;
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  line-height: 1.8;
}
.colophon__inner {
  max-width: 1240px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 56px;
  align-items: start;
}
.colophon__title {
  font-family: var(--display);
  font-size: 1.75rem;
  color: var(--fg);
  letter-spacing: -0.01em;
  line-height: 1.2;
  text-transform: none;
  margin-bottom: 16px;
  max-width: 20ch;
}
.colophon__note {
  font-family: var(--serif);
  font-style: italic;
  font-size: 0.875rem;
  color: var(--fg-2);
  letter-spacing: 0;
  text-transform: none;
  max-width: 40ch;
  line-height: 1.5;
  margin-top: 12px;
}
.colophon__col-title {
  color: var(--fg);
  margin-bottom: 14px;
  border-bottom: 0.5px solid var(--rule-soft);
  padding-bottom: 10px;
}
.colophon__list { list-style: none; }
.colophon__list li { padding: 3px 0; }
.colophon__list a { text-decoration: none; color: var(--fg-3); }
.colophon__list a:hover { color: var(--fg); }

.colophon__baseline {
  max-width: 1240px;
  margin: 48px auto 0;
  padding-top: 24px;
  border-top: 0.5px solid var(--rule-soft);
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 24px;
  align-items: baseline;
}

/* ─────────── Utilities ─────────── */
.muted { color: var(--fg-3); }
.ink { color: var(--fg); }
.mono { font-family: var(--mono); font-size: var(--fs-mono); text-transform: uppercase; letter-spacing: 0.12em; }
.italic { font-style: italic; }
.display { font-family: var(--display); }
.fraction { font-variant-numeric: diagonal-fractions; }

/* Section numeral as display treatment */
.section-num {
  font-family: var(--display);
  font-style: italic;
  font-size: 1.75rem;
  color: var(--fg-3);
  letter-spacing: -0.01em;
}

/* Theme toggle — inline icon button in the masthead nav */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  background: transparent;
  border: 0.5px solid var(--rule);
  border-radius: 0;
  color: var(--fg-3);
  cursor: pointer;
  transition: color var(--motion-fast), border-color var(--motion-fast), background var(--motion-fast);
}
.theme-toggle svg { display: block; }
.theme-toggle:hover { color: var(--fg); border-color: var(--fg); }

/* Section section-title — big, quiet, one per section */
.section-title {
  font-family: var(--display);
  font-style: italic;
  font-weight: 400;
  font-size: var(--fs-section);
  line-height: 1.2;
  color: var(--fg);
  letter-spacing: -0.01em;
  margin-bottom: 48px;
  max-width: 24ch;
}

/* Keywords line under abstract */
.keywords {
  margin-top: 32px;
  padding-top: 20px;
  border-top: 0.5px solid var(--rule-soft);
  font-family: var(--serif);
  font-size: var(--fs-small);
  color: var(--fg-2);
}
.keywords__label {
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: var(--fs-mono);
  color: var(--fg-3);
  margin-right: 10px;
}
.keywords__word {
  font-style: italic;
}
.keywords__word::after {
  content: "·";
  margin: 0 6px;
  color: var(--fg-3);
  font-style: normal;
}
.keywords__word:last-child::after { content: none; }

/* Abstract — indented and italicized, like a real paper */
.abstract {
  border-left: 0.5px solid var(--rule);
  padding: 4px 0 4px 28px;
  margin-bottom: 0;
}
.abstract p {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--fg-2);
}
.abstract p + p { margin-top: 0.75em; }

/* Inline chain pill — no rounded corners */
.chain-pill {
  display: inline-block;
  padding: 1px 6px 0;
  font-family: var(--mono);
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  border: 0.5px solid var(--rule-soft);
  color: var(--fg-2);
}

/* Fade-in reveal (subtle, once) */
.reveal { opacity: 0; transform: translateY(6px); transition: opacity 900ms var(--motion), transform 900ms var(--motion); }
.reveal.in { opacity: 1; transform: none; }
.reveal[data-delay="1"] { transition-delay: 80ms; }
.reveal[data-delay="2"] { transition-delay: 160ms; }
.reveal[data-delay="3"] { transition-delay: 240ms; }
.reveal[data-delay="4"] { transition-delay: 320ms; }

/* ─────────── Principles strip — three numbered claims ─────────── */
.principles {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  max-width: 1240px;
  margin: 0 auto;
}
.principles li {
  padding: 8px 40px 8px 0;
  border-left: 0.5px solid var(--rule-soft);
  padding-left: 40px;
}
.principles li:first-child {
  padding-left: 0;
  border-left: none;
}
.principles li:last-child { padding-right: 0; }
.principles__num {
  display: block;
  font-family: var(--mono);
  font-size: var(--fs-mono);
  color: var(--fg-3);
  letter-spacing: 0.14em;
  margin-bottom: 18px;
  text-transform: uppercase;
}
.principles h3 {
  font-family: var(--display);
  font-style: italic;
  font-weight: 400;
  font-size: 1.75rem;
  line-height: 1.15;
  color: var(--fg);
  letter-spacing: -0.01em;
  margin-bottom: 16px;
  max-width: 14ch;
}
.principles p {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--fg-2);
  max-width: 32ch;
}

/* ─────────── Paper section — intro block ─────────── */
.paper-intro {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 72px;
  align-items: start;
  max-width: 1100px;
  margin: 0 auto 48px;
}
.paper-intro__copy { min-width: 0; }
.paper-intro__actions {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;
}
.paper-intro__btn {
  display: inline-flex;
  align-items: baseline;
  padding: 14px 22px;
  background: var(--fg);
  color: var(--bg);
  text-decoration: none;
  font-family: var(--mono);
  font-size: var(--fs-mono);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  border: 0.5px solid var(--fg);
  transition: opacity var(--motion-fast);
}
.paper-intro__btn:hover { opacity: 0.85; }
.paper-intro__btn--ghost {
  background: transparent;
  color: var(--fg);
  border: 0.5px solid var(--rule);
}
.paper-intro__btn--ghost:hover {
  background: var(--fg);
  color: var(--bg);
  opacity: 1;
}

/* Citation wrapper — solo variant, no ornament, just the block centered */
.cite-wrap--solo {
  max-width: 820px;
  margin: 0 auto;
}

/* Give the new Principles section a little breathing room vs. other sections */
.section--principles {
  padding-top: 72px;
  padding-bottom: 72px;
}

/* Print: approximate the actual paper look */
@media print {
  body::before { display: none; }
  .masthead, .theme-toggle { display: none; }
  .section { border: none; padding: 24pt 0; break-inside: avoid; }
  .front { padding: 0; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   RESPONSIVE — mobile + tablet. Appended 2026-05-31 (v3).
   The stylesheet originally shipped with no breakpoints except @media print;
   every desktop grid stayed multi-column on phones. These overrides collapse
   the layout gracefully. Cascade-appended so the base rules stay untouched.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ---- Tablet / small laptop ---- */
@media (max-width: 900px) {
  .front__inner { grid-template-columns: 1fr; gap: 48px; }
  .front__right { order: -1; max-width: 360px; }
  .principles { grid-template-columns: 1fr 1fr; gap: 0 32px; }
  .principles li,
  .principles li:first-child {
    border-left: none;
    border-top: 0.5px solid var(--rule-soft);
    padding: 24px 0;
  }
  .metrics { grid-template-columns: 1fr 1fr; }
  .metric:nth-child(odd) { border-left: none; padding-left: 0; }
  .metric:nth-child(n+3) { border-top: 0.5px solid var(--rule-soft); }
  .agents-install { grid-template-columns: 1fr !important; }
  .agents-install > div { border-right: none !important; border-bottom: 0.5px solid var(--rule); }
  .agents-install > div:last-child { border-bottom: none; }
  .agents-stats { grid-template-columns: 1fr !important; }
  .agents-stats > div { border-right: none !important; border-bottom: 0.5px solid var(--rule); }
  .agents-stats > div:last-child { border-bottom: none !important; }
  .paper-intro { grid-template-columns: 1fr; gap: 40px; }
  .paper-intro .mercury { max-width: 240px; }
  .colophon__inner { grid-template-columns: 1fr 1fr; gap: 40px 32px; }
}

/* ---- Phone ---- */
@media (max-width: 600px) {
  :root { --fs-section: 1.5rem; --page-pad-x: 22px; }

  /* belt-and-suspenders: nothing may force horizontal scroll */
  html, body { overflow-x: hidden; }
  .diagram-grid, .diagram-figure, .diagram-figure__img,
  .phase-list, .phase-list li, .metrics, .toc, .agents-install,
  .agents-stats, pre, img { min-width: 0; max-width: 100%; }
  .diagram-figure__img img { width: 100%; height: auto; }
  pre { white-space: pre-wrap; word-break: break-word; }

  /* Masthead: stack brand over a wrapping nav, keep it compact */
  .masthead {
    grid-template-columns: 1fr;
    gap: 14px;
    padding-top: 18px;
    padding-bottom: 18px;
  }
  .masthead__right {
    flex-wrap: wrap;
    gap: 14px 18px;
    justify-content: flex-start;
  }
  .masthead__brand { flex-wrap: wrap; }

  /* Tighten section rhythm */
  .section { padding-top: 56px; padding-bottom: 48px; }
  .front { padding-top: 64px; padding-bottom: 48px; }
  .section__head { margin-bottom: 32px; }
  .section--principles { padding-top: 48px; padding-bottom: 48px; }

  /* Hero */
  .front__title { font-size: clamp(2.25rem, 11vw, 3rem); margin-bottom: 28px; }
  .front__subtitle { font-size: 1.125rem; margin-bottom: 36px; }
  .front__right { max-width: 100%; }

  /* Everything to a single column */
  .principles { grid-template-columns: 1fr; }
  .principles h3 { font-size: 1.5rem; }
  .metrics { grid-template-columns: 1fr 1fr; }
  .metric__value { font-size: 2.5rem; }

  /* Four-phase list: stack */
  .phase-list { grid-template-columns: 1fr; }
  .phase-list li { border-top: 0.5px solid var(--rule); padding-top: 20px; }

  /* Chain table: let name take the row, status + folio sit under it */
  .toc__row {
    grid-template-columns: 28px 1fr auto;
    row-gap: 4px;
    align-items: center;
  }
  .toc__leaders { display: none; }
  .toc__folio { display: none; }
  .toc__chain { font-size: 0.95rem; }

  /* Diagram image shouldn't overflow */
  .diagram-figure__img img,
  .hero-plate__img img,
  .mercury img { max-width: 100%; height: auto; }

  /* Pull quote */
  .pullquote { padding-left: var(--page-pad-x); padding-right: var(--page-pad-x); }

  /* Colophon to single column */
  .colophon__inner { grid-template-columns: 1fr; gap: 32px; }

  /* Theme toggle — keep it a comfortable tap size in the wrapped nav */
  .theme-toggle { width: 44px; height: 44px; }

  /* ---- Thumb-friendly tap targets (≥44px) ----
     Base links are bare text (~20px tall); on touch screens that's too small.
     Add vertical hit-area without disturbing the visual rhythm. */
  .masthead__right { gap: 4px 18px; }
  .masthead__link {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
  .front__action {
    min-height: 44px;
    padding: 4px 0;
  }
  .colophon__list li { padding: 0; }
  .colophon__list a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
  /* Builders rail anchors: give the link real height */
  .phase-list h4 a { display: inline-flex; align-items: center; min-height: 44px; }
}

/* Inline-injected SVG figures inherit the page foreground for theme-awareness */
.inline-svg { color: var(--fg); width: 100%; }
.inline-svg svg { display: block; width: 100%; height: auto; max-width: 100%; }

/* Paper-section figure now holds a dark photographic knot crop (not the ink
   droplet). Drop the multiply blend (which was for black-on-cream) and give it
   a quiet frame that reads in both themes. */
.mercury img {
  mix-blend-mode: normal;
  opacity: 1;
  border: 0.5px solid var(--rule);
  display: block;
}

/* Right-aligned plate caption (for images whose negative space is on the right) */
.bleed-plate__cap--right {
  grid-template-columns: 1fr 360px;
  justify-items: end;
  text-align: right;
}
.bleed-plate__cap--right .bleed-plate__label { grid-column: 2; }
@media (max-width: 600px) {
  .bleed-plate__cap, .bleed-plate__cap--right {
    grid-template-columns: 1fr; gap: 6px; bottom: 18px;
    text-align: left; justify-items: start;
  }
  .bleed-plate__cap--right .bleed-plate__label { grid-column: 1; }
  .bleed-plate img { max-height: 360px; }
}
