.papiro { --font: system-ui, sans-serif; --font-title: system-ui, sans-serif; --font-reading: system-ui, sans-serif; --font-console: "JetBrains Mono", ui-monospace, monospace;  --background: #f7f5f0; --surface-1: #f0ede6; --surface-2: #fdfcf9; --surface-3: #e4e0d6; --text-color: #2b2a27; --text-soft: #6b675e; --text-faint: #9a958a; --line: #e4e0d6;  --primary-color: #8f6212; --primary-soft: #f8ecd2; --warning-color: #c58a1c; --mark-color: #fbeeb8; --code-keyword: #a2477d; --code-string: #4d7a2e; --code-number: #b0601a; --code-function: #2f6f9f; --code-type: #7a5ea8; --code-comment: #9a958a; --code-deleted: #b5403a;  --graph-node: #5c5c5c; --graph-line: #e0e0e0; --graph-focus: #8a5cf5; --graph-text: #222222; --radius: 0.625rem; --bar-height: 3.5rem; --speed: 0.25s; color-scheme: light; } .papiro[data-theme="dark"] { --background: #171716; --surface-1: #1f1f1d; --surface-2: #1c1c1a; --surface-3: #2e2d2a; --text-color: #e9e6df; --text-soft: #a9a59b; --text-faint: #75716a; --line: #2e2d2a; --primary-color: #e9b44c; --primary-soft: #3a2f17; --warning-color: #e0b04f; --mark-color: #5a4d1c; --code-keyword: #e29bc6; --code-string: #a9d18e; --code-number: #e8a46b; --code-function: #82b8e0; --code-type: #c3a6ea; --code-comment: #75716a; --code-deleted: #e88a84; --graph-node: #999999; --graph-line: #363636; --graph-focus: #a68af9; --graph-text: #dadada; color-scheme: dark; }  .papiro[data-font="papiro"] { --font: "Inter", system-ui, sans-serif; --font-title: "Source Serif 4", Georgia, serif; --font-reading: "Source Serif 4", Georgia, serif; }  .papiro { container: papiro / inline-size; position: relative; width: 100%; height: 100%; overflow: hidden; background: var(--background); color: var(--text-color); font: 15px/1.5 var(--font); text-align: left; transition: background var(--speed), color var(--speed); }  .papiro :where(*:not(svg, svg *, img, canvas)) { all: revert; } .papiro *, .papiro *::before, .papiro *::after { box-sizing: border-box; } .papiro :where(h1, h2, h3, h4, h5, h6, p, ul, ol, figure, blockquote, pre) { margin: 0; } .papiro :where(ul, ol) { padding: 0; } .papiro :where(button) { font: inherit; color: inherit; background: none; border: none; padding: 0; margin: 0; cursor: pointer; } .papiro :where(a) { color: var(--primary-color); text-decoration: none; } .papiro :where(a, button):focus-visible { outline: 0.15rem solid var(--primary-color); outline-offset: 0.15rem; border-radius: 0.35rem; } .papiro kbd { font: 0.7rem var(--font-console); padding: 0.05rem 0.4rem; border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 0.3rem; color: var(--text-soft); background: var(--surface-2); } .papiro .papiro-icon { display: block; flex: none; }  .papiro .papiro-shell { display: flex; flex-direction: column; height: 100%; } .papiro .papiro-body { position: relative; display: flex; flex: 1; min-height: 0; }  .papiro .papiro-main { container: papiro-main / inline-size; position: relative; flex: 1; min-width: 0; overflow: auto;  overscroll-behavior: contain; } .papiro .papiro-view { min-height: 100%; animation: papiro-appear var(--speed) ease; } @keyframes papiro-appear { from { opacity: 0; } }  .papiro .papiro-bar { display: flex; align-items: center; gap: 1rem; flex: none; height: var(--bar-height); padding: 0 1.25rem; border-bottom: 1px solid var(--line); background: var(--background); } .papiro .papiro-title { display: flex; align-items: center; gap: 0.6rem; min-width: 15rem; font-weight: 600; color: var(--text-color); } .papiro .papiro-logo { height: 1.4rem; } .papiro .papiro-search-trigger { display: flex; align-items: center; flex: 0 1 26rem; gap: 0.6rem; height: 2.15rem; margin-right: auto; padding: 0 0.65rem; border: 1px solid var(--line); border-radius: 0.5rem; background: var(--surface-2); color: var(--text-faint); font-size: 0.875rem; text-align: left; transition: border-color var(--speed); } .papiro .papiro-search-trigger:hover { border-color: var(--text-faint); } .papiro .papiro-search-trigger span { flex: 1; } .papiro .papiro-bar-buttons { display: flex; gap: 0.25rem; margin-left: auto; } .papiro .papiro-bar-button { display: grid; place-items: center; width: 2.15rem; height: 2.15rem; border-radius: 0.5rem; color: var(--text-soft); transition: background var(--speed); } .papiro .papiro-bar-button:hover { background: var(--surface-1); color: var(--text-color); } .papiro .papiro-narrow-only { display: none; }  .papiro .papiro-menu { flex: none; width: 17.5rem; height: 100%; padding: 1.25rem 0.75rem; overflow-y: auto; overscroll-behavior: contain; background: var(--surface-1); border-right: 1px solid var(--line); } .papiro .papiro-menu-title { margin-bottom: 0.5rem; padding: 0 0.6rem; font-size: 0.7rem; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-faint); } .papiro .papiro-menu-link { position: relative; display: flex; align-items: center; width: 100%; margin-top: 0.1rem; padding: 0.4rem 0.6rem; border-radius: 0.45rem; font-size: 0.875rem; line-height: 1.4; color: var(--text-soft); text-align: left; transition: background var(--speed), color var(--speed); } .papiro .papiro-menu-link:hover { background: var(--surface-3); color: var(--text-color); } .papiro .papiro-menu-link.selected { background: var(--primary-soft); color: var(--primary-color); font-weight: 500; } .papiro .papiro-menu-link.selected::before { content: ""; position: absolute; left: -0.15rem; top: 0.4rem; bottom: 0.4rem; width: 3px; border-radius: 3px; background: var(--primary-color); } .papiro .papiro-menu-folder > .papiro-menu-link span { flex: 1; } .papiro .papiro-menu-folder > .papiro-menu-link svg { color: var(--text-faint); transition: transform var(--speed); } .papiro .papiro-menu-folder.closed > .papiro-menu-link svg { transform: rotate(-90deg); } .papiro .papiro-menu-folder.closed > .papiro-menu-children { display: none; }  @container papiro (max-width: 899px) { .papiro .papiro-shell { flex-direction: column-reverse; } .papiro .papiro-bar { border-bottom: none; border-top: 1px solid var(--line); } .papiro .papiro-title { min-width: 0; } .papiro .papiro-search-trigger { display: none; } .papiro .papiro-narrow-only { display: grid; }  .papiro .papiro-wide-only { display: none; } .papiro .papiro-menu { position: absolute; z-index: 9; left: 0; top: 0; width: 86%; max-width: 20rem; transform: translateX(-100%); transition: transform var(--speed) ease; box-shadow: 0 0 2.5rem rgb(0 0 0 / 0.15); } .papiro .papiro-menu.open { transform: none; } }  .papiro .papiro-search { position: absolute; inset: 0; z-index: 20; display: flex; justify-content: center; align-items: flex-start; padding-top: 12vh; background: rgb(20 20 18 / 0.35); } .papiro .papiro-search.hidden { display: none; } .papiro .papiro-search-palette { display: flex; flex-direction: column; width: min(37.5rem, 92%); max-height: 70%; border-radius: 0.875rem; border: 1px solid var(--line); background: var(--surface-2); box-shadow: 0 1.5rem 3.75rem rgb(0 0 0 / 0.18); overflow: hidden; } .papiro .papiro-search-toolbar { display: flex; align-items: center; padding-right: 0.5rem; border-bottom: 1px solid var(--line); } .papiro .papiro-search-toolbar input { flex: 1; height: 3.4rem; padding: 0 1.1rem; border: none; background: transparent; color: var(--text-color); font: 1.05rem var(--font); outline: none; } .papiro .papiro-search-toolbar button { padding: 0.4rem; border-radius: 0.5rem; color: var(--text-faint); } .papiro .papiro-search-toolbar button:hover { color: var(--primary-color); } .papiro .papiro-search-results { flex: 1; padding: 0.5rem; overflow-y: auto; overscroll-behavior: contain; } .papiro .papiro-search-results p { padding: 0.75rem; font-size: 0.9rem; color: var(--text-faint); } .papiro .papiro-search-results a { display: block; padding: 0.6rem 0.75rem; border-radius: 0.5rem; color: var(--text-color); outline: none; } .papiro .papiro-search-results a b { display: block; font-weight: 500; } .papiro .papiro-search-results a span { font-size: 0.8rem; color: var(--text-faint); } .papiro .papiro-search-results a b i { font-style: normal; font-weight: 400; color: var(--text-soft); }  .papiro .papiro-search-results a small { display: block; margin-top: 0.2rem; font-size: 0.8rem; line-height: 1.4; color: var(--text-soft); overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .papiro .papiro-search-results a small mark { background: var(--mark-color); color: inherit; border-radius: 0.2rem; } .papiro .papiro-search-results a.selected { background: var(--primary-soft); } .papiro .papiro-search-hints { display: flex; gap: 0.9rem; padding: 0.6rem 1rem; border-top: 1px solid var(--line); font-size: 0.75rem; color: var(--text-faint); } @container papiro (max-width: 899px) { .papiro .papiro-search { padding-top: 0; } .papiro .papiro-search-palette { width: 100%; max-height: 100%; height: 100%; border-radius: 0; border: none; } .papiro .papiro-search-hints { display: none; } } .papiro .papiro-content { color: var(--text-color); font: 1.0625rem/1.75 var(--font-reading); overflow-wrap: break-word; } .papiro .papiro-content > :first-child { margin-top: 0; } .papiro .papiro-content :is(h1, h2, h3, h4, h5, h6) { font-family: var(--font-title); font-weight: 600; color: var(--text-color); letter-spacing: -0.01em; line-height: 1.25; scroll-margin-top: 1.5rem; margin: 2.25rem 0 0.6rem 0; } .papiro .papiro-content h1 { font-size: 2.5rem; line-height: 1.15; margin: 0 0 0.6rem 0; } .papiro .papiro-content h2 { font-size: 1.5rem; } .papiro .papiro-content h3 { font-size: 1.2rem; } .papiro .papiro-content :is(h4, h5, h6) { font-size: 1.05rem; } .papiro .papiro-content p { margin: 0.9rem 0; } .papiro .papiro-content a:hover { text-decoration: underline; text-underline-offset: 3px; } .papiro .papiro-content strong { font-weight: 600; } .papiro .papiro-content mark { background: var(--mark-color); color: inherit; padding: 0 0.15rem; border-radius: 0.2rem; } .papiro .papiro-content hr { border: none; border-top: 1px solid var(--line); margin: 2rem 0; }  .papiro .papiro-content code { font: 0.85em var(--font-console); background: var(--surface-1); border: 1px solid var(--line); padding: 0.05rem 0.35rem; border-radius: 0.3rem; }  .papiro .papiro-content pre { position: relative; margin: 1.25rem 0; background: var(--surface-1); border: 1px solid var(--line); border-radius: var(--radius); } .papiro .papiro-content pre code { display: block; padding: 2.25rem 1.1rem 1rem 1.1rem; overflow-x: auto; border: none; background: none; font-size: 0.84rem; line-height: 1.65; } .papiro .papiro-code-language { position: absolute; top: 0.55rem; right: 2.9rem; font: 0.7rem var(--font); color: var(--text-faint); } .papiro .papiro-code-copy { position: absolute; right: 0.35rem; top: 0.3rem; padding: 0.4rem; border-radius: 0.45rem; color: var(--text-faint); } .papiro .papiro-code-copy:hover { background: var(--surface-3); color: var(--text-color); }  .papiro pre code :is(.k, .kc, .kd, .kn, .kp, .kr, .nt, .ow) { color: var(--code-keyword); } .papiro pre code :is(.s, .s1, .s2, .sa, .sb, .sc, .sd, .se, .sh, .si, .sx, .sr, .ss, .gi) { color: var(--code-string); } .papiro pre code :is(.m, .mb, .mf, .mh, .mi, .mo, .il, .kc) { color: var(--code-number); } .papiro pre code :is(.nf, .fm, .na, .nd) { color: var(--code-function); } .papiro pre code :is(.kt, .nc, .nn, .nb, .bp, .no) { color: var(--code-type); } .papiro pre code :is(.c, .c1, .cm, .ch, .cs, .cp, .cpf) { color: var(--code-comment); font-style: italic; } .papiro pre code :is(.gd, .err) { color: var(--code-deleted); } .papiro pre code :is(.gh, .gu) { font-weight: 600; }  .papiro .papiro-content blockquote { margin: 1.5rem 0; padding: 0.75rem 1rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-2); font-size: 1rem; } .papiro .papiro-content blockquote p { margin: 0.3rem 0; } .papiro .papiro-content blockquote.callout { border-left: 3px solid var(--primary-color); } .papiro .papiro-content blockquote.callout.warning { border-left-color: var(--warning-color); } .papiro .papiro-content blockquote.callout > p:first-child > strong:first-child { display: block; font: 600 0.875rem var(--font); }  .papiro .papiro-content :is(ul, ol) { margin: 0.9rem 0; padding-left: 1.4rem; } .papiro .papiro-content ul li { list-style: disc; } .papiro .papiro-content ol li { list-style: decimal; } .papiro .papiro-content li { margin: 0.3rem 0; } .papiro .papiro-content li::marker { color: var(--text-faint); }  .papiro .papiro-content table { display: block; overflow-x: auto; border-collapse: collapse; margin: 1.25rem 0; font: 0.9rem/1.5 var(--font); } .papiro .papiro-content :is(th, td) { padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--line); text-align: left; } .papiro .papiro-content th { font-weight: 600; color: var(--text-soft); }  .papiro .papiro-content img { display: block; max-width: 100%; height: auto; margin: 1.5rem auto; border-radius: var(--radius); border: 1px solid var(--line); cursor: zoom-in; } .papiro .papiro-content img.zoomed { position: fixed; inset: 0; z-index: 30; width: 100%; height: 100%; max-width: none; margin: 0; padding: 2rem; object-fit: contain; border: none; border-radius: 0; background: rgb(20 20 18 / 0.85); cursor: zoom-out; }  .papiro .papiro-folder-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); gap: 0.75rem; margin-top: 1.5rem; } .papiro .papiro-folder-list a { padding: 0.9rem 1rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-2); color: var(--text-color); font: 0.95rem var(--font); text-decoration: none; transition: border-color var(--speed), transform var(--speed); } .papiro .papiro-folder-list a:hover { border-color: var(--primary-color); transform: translateY(-1px); text-decoration: none; } @container papiro (max-width: 899px) { .papiro .papiro-content h1 { font-size: 2rem; } } .papiro .papiro-page { display: grid; grid-template-columns: minmax(0, 42.5rem) 13.75rem; justify-content: start; gap: 3rem; max-width: 68.75rem;  margin: 0 auto; padding: 2.5rem 3rem 3rem 3rem; } .papiro .papiro-page article { min-width: 0; }  .papiro[data-width="wide"] .papiro-page { grid-template-columns: minmax(0, 1fr) 13.75rem; max-width: none; }  .papiro[data-layout="page"] .papiro-page { grid-template-columns: minmax(0, 1fr); padding: 1.5rem; } .papiro[data-layout="page"] .papiro-side:empty { display: none; } .papiro .papiro-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; margin-bottom: 1.1rem; font-size: 0.8rem; color: var(--text-faint); } .papiro .papiro-breadcrumb a { color: var(--text-soft); } .papiro .papiro-breadcrumb a:hover { text-decoration: underline; text-underline-offset: 3px; } .papiro .papiro-breadcrumb .separator { color: var(--text-faint); } .papiro .papiro-page-meta { margin: 0 0 2rem 0 !important; font: 0.8rem var(--font); color: var(--text-faint); }  .papiro .papiro-side { position: sticky; top: 2.5rem; align-self: start; font-size: 0.8rem; } .papiro .papiro-toc > p, .papiro .papiro-local-graph-header p { font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-faint); } .papiro .papiro-toc ul { margin-top: 0.5rem; list-style: none; border-left: 1px solid var(--line); } .papiro .papiro-toc a { display: block; margin-left: -1px; padding: 0.25rem 0.75rem; border-left: 2px solid transparent; color: var(--text-soft); line-height: 1.4; } .papiro .papiro-toc a.level-3 { padding-left: 1.5rem; } .papiro .papiro-toc a:hover { color: var(--text-color); } .papiro .papiro-toc a.on { color: var(--primary-color); border-left-color: var(--primary-color); } .papiro .papiro-local-graph { margin-top: 2rem; } .papiro .papiro-toc:empty + .papiro-local-graph, .papiro .papiro-side > .papiro-local-graph:first-child { margin-top: 0; } .papiro article .papiro-local-graph { margin-top: 3rem; } .papiro .papiro-local-graph-header { display: flex; align-items: baseline; justify-content: space-between; font-size: 0.7rem; } .papiro .papiro-local-graph canvas { display: block; margin-top: 0.5rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-2); } .papiro .papiro-local-graph > span { display: block; margin-top: 0.4rem; font-size: 0.75rem; color: var(--text-faint); }  .papiro .papiro-pager { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 3.5rem; padding-top: 1.5rem; border-top: 1px solid var(--line); } .papiro .papiro-pager a { padding: 0.85rem 1rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-2); color: var(--text-color); transition: border-color var(--speed), transform var(--speed); } .papiro .papiro-pager a:hover { border-color: var(--primary-color); transform: translateY(-1px); } .papiro .papiro-pager a.next { grid-column: 2; text-align: right; } .papiro .papiro-pager small { display: block; margin-bottom: 0.15rem; font-size: 0.75rem; color: var(--text-faint); } .papiro .papiro-footer { margin-top: 3rem; padding-top: 1.25rem; border-top: 1px solid var(--line); font-size: 0.8rem; color: var(--text-faint); }  @container papiro-main (max-width: 960px) { .papiro .papiro-page, .papiro[data-width="wide"] .papiro-page { grid-template-columns: minmax(0, 42.5rem); } .papiro .papiro-side { display: none; } } @container papiro-main (max-width: 640px) { .papiro .papiro-page { padding: 1.5rem 1.25rem 2rem 1.25rem; } }  .papiro .papiro-graph { display: flex; flex-direction: column; height: 100%; position: absolute; inset: 0; overflow: hidden; } .papiro .papiro-graph-header { padding: 1.5rem 2rem 0.75rem 2rem; } .papiro .papiro-graph-header h1 { font: 600 1.5rem var(--font-title); color: var(--text-color); } .papiro .papiro-graph-header p, .papiro .papiro-graph-empty { margin-top: 0.25rem; font-size: 0.8rem; color: var(--text-faint); } .papiro .papiro-graph-empty { padding: 0 2rem; } .papiro .papiro-graph canvas { display: block; cursor: grab; }  .papiro[data-layout="graph"] .papiro-graph-header { display: none; }  .papiro .papiro-home { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; min-height: 100%; padding: 3rem 1.5rem; text-align: center; } .papiro .papiro-home h1 { display: flex; align-items: center; gap: 1rem; font: 600 clamp(2.5rem, 8cqi, 5rem) / 1.1 var(--font-title); } .papiro .papiro-home h1 img { height: 1em; } .papiro .papiro-home p { font-size: 1.1rem; color: var(--text-soft); } .papiro .papiro-home-start { margin-top: 1.5rem; padding: 0.8rem 1.6rem; border-radius: 99rem; background: var(--primary-soft); color: var(--primary-color); font-weight: 500; }  .papiro .papiro-not-found { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; min-height: 100%; padding: 3rem; color: var(--text-faint); text-align: center; } .papiro .papiro-not-found h1 { font-size: 1.5rem; color: var(--text-soft); } html, body { height: 100%; margin: 0; overflow: hidden; overscroll-behavior: none; } body { height: 100dvh; background: #f7f5f0; } @media (prefers-color-scheme: dark) { body { background: #171716; } }