@font-face{font-family:PPNeueMontreal;src:url('/fonts/PPNeueMontreal-Book.woff2')}@font-face{font-family:PPNeueMontrealMono;src:url('/fonts/PPNeueMontrealMono-Medium.woff2')}@font-face{font-family:PPNeueMontrealMonoBook;src:url('/fonts/PPNeueMontrealMono-Book.woff2')}@font-face{font-family:NeueBit;src:url('/fonts/NeueBit-Bold.woff2')}@font-face{font-family:BerkeleyMono;src:url('/fonts/BerkeleyMono-Regular.woff2')}
#navbar{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.nav-logo{font-family:NeueBit,monospace;font-size:42px}#navbar>span{font-size:14px}.nav-group{font-size:12px;text-transform:uppercase;letter-spacing:.08em;margin:24px 0 10px}.nav-anchor{display:block;padding:7px 9px;font-size:13px;line-height:1.5}.nav-anchor[aria-current=page]{background:var(--float-cream-deep)}
:root:root:root #docs-static-sidebar{overflow-y:auto!important}.docs-layout{display:flex;gap:40px;max-width:1200px;margin:auto;padding:48px 40px 80px}article{min-width:0;flex:1;font-size:16px;line-height:1.7}article h1{margin:16px 0 32px}article h2,article h3{margin:36px 0 16px;scroll-margin-top:24px;font-size:21px}article p,article ul,article ol,article blockquote,article pre{margin:20px 0}article ul{list-style:disc;padding-left:24px}article ol{list-style:decimal;padding-left:24px}article a{color:var(--float-blue);text-decoration:underline}article pre{overflow:auto;padding:20px;font-size:13px;line-height:1.7}article :not(pre)>code{padding:2px 4px;overflow-wrap:anywhere;font-size:.85em}article table{display:block;overflow:auto;width:100%;margin:24px 0;border-collapse:collapse;font-size:14px}article th,article td{padding:12px;border:1px solid var(--float-line-soft);min-width:130px;text-align:left}article blockquote{border-left:3px solid;padding-left:20px}article hr{margin:32px 0;border-color:var(--float-line-soft)}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.1em}.float-page-toc{display:block;width:180px;flex-shrink:0;align-self:flex-start;position:sticky;top:30px;font-size:12px}.float-page-toc p{font-weight:bold;margin-bottom:16px}.float-page-toc a{display:block;margin:12px 0;line-height:1.5}.page-navigation{display:flex;justify-content:space-between;gap:24px;border-top:1px solid var(--float-line-soft);margin-top:48px;padding-top:24px;font-size:14px}.page-navigation a{max-width:48%}.mobile-navigation{display:none}
@media(max-width:1200px){.float-page-toc{display:none}}@media(max-width:1023px){.mobile-navigation{display:block}.mobile-navigation[open]{position:fixed;inset:var(--pixel-frame-inset);z-index:100;background:var(--float-cream);padding:20px;overflow:auto;border:1px solid}.mobile-navigation summary{cursor:pointer}.docs-layout{padding:28px 24px 60px}}@media(max-width:480px){#navbar>span{display:none}.docs-layout{padding:24px 18px 48px}}

/* Match the article track while keeping it outside the scrolling sidebar. */
:root:root:root body #docs-static-sidebar {
  overflow-y: auto !important;
  scrollbar-width: none;
  overscroll-behavior: contain;
}
#docs-static-sidebar::-webkit-scrollbar { display: none; }
:root:root:root .pixel-frame__scrollbar--sidebar {
  inset-inline: calc(18rem - 0.5rem) auto;
}
:root:root:root .pixel-frame__scrollbar[hidden] { display: none; }
@media (max-width: 1023px) {
  :root:root:root .pixel-frame__scrollbar--sidebar { display: none; }
}

.nav-section > summary {
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  cursor: pointer;
  list-style: none;
  padding: 8px 0;
}
.nav-section > summary::-webkit-details-marker { display: none; }
.nav-section > summary::after { content: "+"; font-size: 16px; }
.nav-section[open] > summary::after { content: "−"; }
.nav-section > summary:hover { color: var(--float-blue); }
.nav-section > summary:focus-visible {
  outline: 2px solid var(--float-blue);
  outline-offset: 3px;
}

/* Illustrated section labels, matching the reference's pastel icon tiles. */
.nav-section > summary.nav-group {
  justify-content: flex-start;
  gap: 12px;
  margin: 18px 0 8px;
  font-family: "PPNeueMontreal", sans-serif;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1.4;
  text-transform: none;
}
.nav-section-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 32px;
  width: 32px;
  height: 32px;
  color: var(--float-ink);
  border: 1px solid rgb(26 26 26 / 15%);
}
.nav-section-icon svg { width: 25px; height: 25px; }
.nav-section-icon--1 { background: #b7c3b0; }
.nav-section-icon--2 { background: #d9bd73; }
.nav-section-icon--3 { background: #dbb9cb; }
.nav-section-icon--4 { background: #b7c9dc; }
.nav-section-label { flex: 1; }
.nav-section > summary::after { flex: 0 0 auto; }

#navbar .nav-logo {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  line-height: 1;
}
.float-logo-tile {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  overflow: hidden;
  background: #000;
}
.float-logo-tile img {
  display: block;
  width: 44px;
  height: 44px;
  object-fit: contain;
}

/* Match float-web's 3rem header, title, and navigation type exactly. */
#navbar {
  height: 3rem;
  padding-left: 0;
  padding-right: 1rem;
}
#navbar .nav-logo {
  height: 100%;
  gap: .625rem;
}
#navbar .nav-logo > span:last-child {
  display: flex;
  height: 100%;
  align-items: center;
  justify-content: center;
  font-family: "NeueBit", sans-serif;
  font-size: 2rem;
  font-weight: 700;
  line-height: 1;
  text-transform: uppercase;
  transform: translateY(.125rem);
}
#navbar > span {
  font-family: "PPNeueMontrealMonoBook", ui-monospace, monospace;
  font-size: .75rem;
  font-weight: 610;
  line-height: normal;
}
#navbar .float-logo-tile {
  height: 3rem;
  width: auto;
  aspect-ratio: 1;
  flex: 0 0 auto;
  margin-block: -1px;
  margin-left: -1px;
}
#navbar .float-logo-tile img {
  width: 100%;
  height: 100%;
}

#float-docs-header-tabs-root {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.float-header-tabs {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2.5rem;
  font-family: "PPNeueMontrealMonoBook", ui-monospace, monospace;
  font-size: .75rem;
  font-weight: 610;
  color: var(--float-ink);
}
.float-header-tabs > a {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  gap: .75rem;
  color: var(--float-ink) !important;
  text-decoration: none !important;
  white-space: nowrap;
}
.float-header-tab__key {
  display: flex;
  width: 1.25rem;
  height: 1.25rem;
  align-items: center;
  justify-content: center;
  font-size: .6875rem;
  font-weight: 610;
}
.hover-effect {
  position: relative;
  font-kerning: none;
  white-space: nowrap;
}
.hover-effect--cursor-square span {
  position: relative;
  --opa: 0;
}
.hover-effect--cursor-square span::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 1ch;
  height: 100%;
  opacity: var(--opa);
  background: currentColor;
}
@media (max-width: 1023px) {
  #float-docs-header-tabs-root {
    position: static;
    margin-left: auto;
    transform: none;
  }
  .float-header-tabs > a:not(:first-child) { display: none; }
}
@media (min-width: 768px) {
  #navbar { padding-right: 1.25rem; }
}

/* Keep article emphasis and technical references on the plain page surface. */
html body article :where(strong, b) {
  font-weight: inherit;
}
html body article :where(em, i) {
  font-style: normal;
}
html body article :where(mark, pre, :not(pre) > code, [data-callout-type]) {
  background: transparent !important;
  color: inherit !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
html body article :not(pre) > code {
  padding: 0;
}
html body article :where(pre, blockquote, [data-callout-type]) {
  padding: 0;
  border: 0 !important;
}
html body article th {
  background: transparent !important;
  color: var(--float-ink) !important;
}

/* The page rail as a position, not a menu. The marker is a rule down the left
   edge that fills in on the section you are in, so the eye can find it without
   the text changing weight and reflowing the column. */
.float-page-toc a {
  position: relative;
  padding-left: 12px;
  color: var(--float-ink-muted);
  text-decoration: none;
  transition: color 160ms ease;
}
.float-page-toc a::before {
  content: "";
  position: absolute;
  left: 0;
  top: 2px;
  bottom: 2px;
  width: 2px;
  background: var(--float-ink);
  transform: scaleY(0);
  transform-origin: top;
  transition: transform 220ms cubic-bezier(0.4, 0, 0.2, 1);
}
.float-page-toc a:hover { color: var(--float-ink); }
.float-page-toc a[data-current] { color: var(--float-ink); }
.float-page-toc a[data-current]::before { transform: scaleY(1); }

/* Section toggles that move rather than cut.
   A <details> has no open/close animation of its own: the content simply is or
   is not, which on a four section rail reads as the page flinching. The links
   now sit in a wrapper whose height is animated, and the marker turns from a
   plus into a minus by rotating its vertical stroke onto the horizontal one,
   so the state change is a movement the eye can follow rather than a glyph
   being swapped underneath it. */
/* The closed state is set here rather than left to the browser. A control
   <details> injected into this document renders its content when closed just
   as these did, so the native hiding is not working in the mirrored page at
   all. Relying on it would have meant an accordion that animates correctly and
   is permanently open. The inline height the script sets during a transition
   wins over this while it runs, and clearing it afterwards hands the element
   back to whichever of the two states applies. */
.nav-section-body { overflow: hidden; }
.nav-section:not([open]) > .nav-section-body { height: 0; }

.nav-section > summary::after { content: none; }

.nav-plus {
  position: relative;
  flex: 0 0 auto;
  width: 12px;
  height: 12px;
}
.nav-plus::before,
.nav-plus::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 1.5px;
  background: currentColor;
  transition: transform 260ms cubic-bezier(0.4, 0, 0.2, 1);
}
.nav-plus::before { transform: translateY(-50%); }
.nav-plus::after { transform: translateY(-50%) rotate(90deg); }
.nav-section[open] .nav-plus::after { transform: translateY(-50%) rotate(0deg); }

/* The genesis grid is seven columns and one of them is a 42 character address.
   The default cell rules put a 130px floor under every column and 12px of
   padding on each side, which alone reserves more width than the article has,
   so the token column ran off the edge and the address broke into a stack of
   chips inside its cell. Both are the same fix: let the columns be as narrow as
   their content and stop the address wrapping, since an address split across
   four lines cannot be read or copied, which is the only reason it is there. */
.grid-wide table { font-size: 12.5px; margin: 24px 0; }
.grid-wide th,
.grid-wide td { padding: 7px 9px; min-width: 0; }
.grid-wide td code {
  white-space: nowrap;
  overflow-wrap: normal;
  font-size: 11px;
  padding: 1px 4px;
}
.grid-wide td:nth-child(4) { text-align: right; font-variant-numeric: tabular-nums; }
/* Backing route and ADR ratio are short, fixed phrases. Letting them wrap made
   every row two lines tall for the sake of one word, so they hold their line and
   the type comes down slightly to pay for it. */
.grid-wide table { font-size: 12px; }
.grid-wide td:nth-child(5),
.grid-wide td:nth-child(6) { white-space: nowrap; }
