:root{color-scheme:light;--ink:#28252a;--muted:#716c74;--accent:#9b2854;--paper:#fcfaf7;--line:#e9e2e3}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-underline-offset:.2em}a:hover{color:#6d1738}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button{font:inherit;cursor:pointer}.skip-link{position:fixed;top:-80px;left:16px;background:white;padding:12px;z-index:30}.skip-link:focus{top:12px}.site-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px max(24px,calc((100vw - 1280px)/2));background:#fcfaf7ed;border-bottom:1px solid var(--line);backdrop-filter:blur(24px)}.wordmark{display:flex;align-items:center;gap:10px;font-weight:750;font-size:18px;letter-spacing:-.5px;color:var(--ink);white-space:nowrap}.wordmark span{font-size:12px;font-weight:400;color:var(--muted);letter-spacing:0}.wordmark img{border-radius:8px}.site-header a{text-decoration:none}.site-header nav{display:flex;gap:24px;font-size:13px;font-weight:600;white-space:nowrap}.page-layout{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:210px minmax(0,1fr);gap:55px;padding:0 28px 80px}aside{padding-top:66px}.contents{position:sticky;top:105px;font-size:13px}.contents summary{display:none}.contents nav{display:flex;flex-direction:column;gap:17px;border-left:1px solid var(--line);padding-left:18px}.contents a{color:var(--muted);text-decoration:none;line-height:1.4}.contents a:hover{color:var(--accent)}main{min-width:0;font-size:17px;line-height:1.75;overflow-wrap:anywhere}h1,h2,h3,h4{letter-spacing:-.045em;line-height:1.15}h1{font-size:clamp(40px,5.5vw,68px);font-weight:760;margin:65px 0 30px;max-width:900px}h2{font-size:clamp(28px,3.5vw,40px);margin:75px 0 25px}h3{font-size:26px;margin-top:45px}h4{font-size:22px;margin-top:40px}.markdown-body>h1+p{font-size:21px;line-height:1.6;color:var(--muted)}.markdown-body>h1{position:relative}.markdown-body>h1:before{content:"";position:absolute;z-index:-1;inset:-50px -20px -200px;background:radial-gradient(ellipse at 45% 30%,#f3dce780,transparent 65%);pointer-events:none}li+li{margin-top:10px}li::marker{color:var(--accent);font-weight:650}ul,ol{padding-left:25px}img{max-width:100%;height:auto}.markdown-body p>img,.markdown-body p>a>img{border-radius:14px;margin:12px 0;box-shadow:0 12px 40px #54283712;border:1px solid var(--line)}.markdown-body li img{vertical-align:middle;max-height:30px;width:auto}.markdown-body li>img{margin-right:5px}.markdown-body pre{overflow:auto;padding:20px;border:1px solid var(--line);background:#f5f0f3;border-radius:12px;font-size:13px;line-height:1.6}code{font-size:.86em;background:#f5f0f3;padding:.15em .3em;border-radius:4px}pre code{padding:0;background:none}hr{height:1px;border:0;background:var(--line);margin:60px 0}blockquote{border-left:3px solid var(--accent);margin-left:0;padding-left:20px;color:var(--muted)}table{width:100%;border-collapse:collapse;font-size:14px}td,th{text-align:left;padding:12px;border-bottom:1px solid var(--line)}main details:not(.contents){border:1px solid var(--line);border-radius:14px;padding:15px 20px;margin:20px 0;background:#ffffff80}summary{cursor:pointer}footer{border-top:1px solid var(--line);padding:28px 24px;display:flex;justify-content:center;flex-wrap:wrap;gap:25px;font-size:12px;color:var(--muted)}.provenance,.capture-meta{font-size:13px;color:var(--muted)}.profile-switch{display:flex;gap:4px;background:#f0e8eb;border:1px solid var(--line);padding:5px;border-radius:28px;width:max-content;max-width:100%;margin:30px 0}.profile-switch button{border:0;border-radius:22px;background:transparent;color:var(--muted);padding:10px 20px;font-size:13px;font-weight:600}.profile-switch button[aria-pressed=true]{background:var(--accent);color:white;box-shadow:0 3px 10px #9b285425}.capture{margin:40px 0 65px}.capture h2{margin:0 0 10px;font-size:29px}.capture-meta{margin:0 0 20px}.capture figure{margin:0;padding:18px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(140deg,#fff,#f8edf2)}.capture figure[hidden]{display:none}.screenshot-frame{display:block;max-height:900px;overflow:auto;border-radius:8px}.capture img{display:block;width:100%;height:auto;border-radius:8px}.capture figure[data-viewport=mobile]{max-width:440px;margin-inline:auto}.capture figure[data-viewport=tablet]{max-width:800px;margin-inline:auto}figcaption{font-size:12px;color:var(--muted);padding-top:12px;text-align:center}
@media(max-width:950px){.page-layout{grid-template-columns:1fr;gap:0;max-width:900px}aside{padding-top:24px}.contents{position:static;border-bottom:1px solid var(--line);padding-bottom:16px}.contents summary{display:list-item;color:var(--muted)}.contents:not([open])>nav{display:none}.contents nav{display:flex;flex-direction:row;flex-wrap:wrap;border:0;padding:18px 0 0;gap:12px 22px}h1{margin-top:40px}.wordmark span{display:none}}
@media(max-width:550px){.site-header{padding:12px 16px;gap:12px}.site-header nav{gap:14px;font-size:12px}.wordmark{font-size:16px;gap:7px}.wordmark img{width:27px;height:27px}.page-layout{padding:0 20px 45px}main{font-size:16px}.markdown-body>h1+p{font-size:18px}h1{font-size:42px;letter-spacing:-.055em}h2{margin-top:54px}.profile-switch button{padding:9px 16px}.capture figure{padding:8px;border-radius:12px}.capture-meta{font-size:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Shared project navigation stays usable without JavaScript. */
.project-menu { position: relative; flex: 0 0 auto; }
.project-menu > summary { cursor: pointer; padding: 10px 0; font-size: 13px; font-weight: 600; }
.project-menu > summary:focus-visible, .project-menu__links a:focus-visible { outline: 3px solid #9b2854; outline-offset: 3px; }
.project-menu__links { position: absolute; right: 0; top: 100%; z-index: 30; width: 220px; max-width: calc(100vw - 32px); padding: 8px; border: 1px solid #e9e2e3; border-radius: 12px; background: #fff; box-shadow: 0 12px 32px #28252a20; }
header nav .project-menu__links a { display: flex; align-items: center; min-height: 44px; padding: 8px 12px; color: #28252a; font-size: 13px; letter-spacing: normal; text-transform: none; text-decoration: none; white-space: nowrap; }
header nav .project-menu__links a:hover, header nav .project-menu__links a[aria-current="page"] { background: #f8edf2; color: #9b2854; border-radius: 6px; }
@media (max-width: 700px) { header.site-header { flex-wrap: wrap; } header.site-header nav { flex-wrap: wrap; gap: 8px 16px; } }

@media (max-width: 1100px) { .project-menu__links { position: fixed; left: 16px; right: 16px; top: auto; width: auto; } }

/* BEGIN ARCHIVEBOX CHROME */
/* Shared ArchiveBox site chrome. Source: ArchiveBox/monorepo/site-chrome. */
.abx-header, .abx-footer { box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 14px; line-height: 1.5; letter-spacing: normal; text-align: left; }
.abx-header *, .abx-footer * { box-sizing: border-box; }
.abx-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; gap: 24px; width: 100%; max-width: none; margin: 0; padding: 15px max(24px, calc((100% - 1280px) / 2)); border: 0; border-bottom: 1px solid #e9e2e3; background: #fcfaf7f5; color: #28252a; backdrop-filter: blur(16px); }
.abx-header a, .abx-footer a { text-decoration: none; text-underline-offset: .24em; }
.abx-header .abx-brand, .abx-footer .abx-brand { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 11px; margin: 0; padding: 0; color: inherit; font-size: 19px; font-weight: 750; line-height: 1.2; letter-spacing: -.5px; white-space: nowrap; }
.abx-brand .abx-logo { display: block; flex: 0 0 auto; width: 32px; height: 32px; margin: 0; }
.abx-header .abx-subsite { margin-left: 2px; color: #716c74; font-size: 12px; font-weight: 450; letter-spacing: 0; }
.abx-header .abx-nav { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 0; width: auto; max-width: none; margin: 0; padding: 0; font-size: 13px; font-weight: 600; }
.abx-nav > a, .abx-nav > details { margin: 0 0 0 15px; padding: 0 0 0 15px; border: 0; border-left: 1px solid #ded4d8; border-radius: 0; background: none; }
.abx-nav > :first-child { margin-left: 0; padding-left: 0; border-left: 0; }
.abx-header .abx-nav a { display: inline-flex; align-items: center; min-height: 36px; color: #4d424b; white-space: nowrap; }
.abx-header .abx-nav a:hover { color: #9b2854; }
.abx-header .abx-nav .abx-cta { margin-left: 18px; padding: 9px 17px; border: 1px solid #9b2854; border-radius: 24px; background: #9b2854; color: #fff; }
.abx-header .abx-nav .abx-cta:hover { background: #782040; color: #fff; }
.abx-header .abx-apps { position: relative; }
.abx-apps > summary { display: flex; align-items: center; gap: 7px; min-height: 36px; list-style: none; cursor: pointer; color: #4d424b; }
.abx-apps > summary::-webkit-details-marker { display: none; }
.abx-apps > summary::before { content: '›'; display: inline-block; color: #9b2854; font-size: 22px; line-height: 1; transition: transform .15s; }
.abx-apps[open] > summary::before { transform: rotate(90deg); }
.abx-header .abx-app-links { position: absolute; right: 0; top: calc(100% + 12px); width: 305px; max-height: min(70vh, 580px); overflow-y: auto; padding: 10px; border: 1px solid #e9e2e3; border-radius: 14px; background: #fcfaf7; box-shadow: 0 16px 48px #2d152522; }
.abx-header .abx-app-links a { display: flex; min-height: 42px; padding: 9px 12px; border-radius: 7px; white-space: normal; }
.abx-header .abx-app-links code { display: inline; vertical-align: baseline; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 1em; font-weight: inherit; line-height: inherit; margin: 0 .3em; padding: 0; border: 0; background: transparent; color: inherit; }
.abx-header .abx-app-links a:hover { background: #f2e8ed; }
.abx-footer { position: relative; z-index: 1; display: block; width: 100%; max-width: none; margin: 72px 0 0; padding: 60px max(24px, calc((100% - 1280px) / 2)) 24px; border: 0; border-top: 3px solid #7e284a; background: radial-gradient(ellipse at 12% 0, #54243b55, transparent 48%), linear-gradient(120deg, #201923, #14151b 75%); color: #ddd2dd; color-scheme: dark; }
.abx-footer .abx-footer-intro { display: flex; align-items: flex-start; justify-content: space-between; gap: 32px; margin: 0 0 42px; }
.abx-footer .abx-brand { color: #fff4ed; font-size: 24px; }
.abx-footer .abx-brand .abx-logo { width: 40px; height: 40px; }
.abx-footer .abx-tagline { max-width: 430px; margin: 12px 0 0; color: #b8acbb; font-size: 14px; line-height: 1.7; }
.abx-footer .abx-footer-motto { margin: 2px 0 0; color: #d8b39f; font: italic 25px/1.45 Georgia, serif; text-align: right; }
.abx-footer .abx-footer-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 42px; margin: 0; }
.abx-footer .abx-footer-column { margin: 0; padding: 20px 0 0; border: 0; border-top: 1px solid #67505e66; background: none; }
.abx-footer .abx-footer-column h2 { margin: 0 0 19px; padding: 0; border: 0; color: #e4acbb; font: 650 12px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; letter-spacing: .12em; text-transform: uppercase; }
.abx-footer .abx-footer-column ul { display: block; list-style: none; margin: 0; padding: 0; }
.abx-footer .abx-footer-column li { display: flex; align-items: center; gap: 10px; margin: 0; padding: 0; min-height: 36px; }
.abx-footer .abx-footer-column li::before { content: none; }
.abx-footer .abx-footer-column a { color: #ddd2dd; font-size: 13px; line-height: 1.55; }
.abx-footer .abx-footer-column a:first-child { padding: 6px 0; }
.abx-footer a:hover { color: #fff; text-decoration: underline; }
.abx-footer .abx-source { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 28px; width: 28px; height: 28px; border: 1px solid transparent; border-radius: 50%; color: #a58d9f; }
.abx-footer .abx-source:hover { color: #f3b5cb; border-color: #80516a; background: #ffffff08; }
.abx-source svg { width: 15px; height: 15px; fill: currentColor; }
.abx-footer .abx-footer-bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; margin-top: 32px; padding-top: 21px; border-top: 1px solid #67505e66; color: #a99bab; font-size: 12px; }
.abx-footer .abx-footer-bottom p { margin: 0; font-size: inherit; color: inherit; }
.abx-footer .abx-footer-bottom a { color: #cebbc9; }
.abx-footer .abx-footer-local { margin: 24px 0 0; padding: 16px 0 0; border: 0; border-top: 1px solid #67505e66; border-radius: 0; background: none; color: #baacbc; font-size: 12px; }
.abx-footer-local > summary { cursor: pointer; color: #d6bfce; }
.abx-footer-local > div { padding-top: 18px; }
.abx-footer-local a { color: #e5aabd; }
.abx-footer-local .brand, .abx-footer-local .footer-intro, .abx-footer-local .footer-grid, .abx-footer-local .footer-meta { color: inherit; }
.abx-footer-local .footer-card { background: transparent; border-color: #67505e66; }
.abx-footer-local h2, .abx-footer-local h3, .abx-footer-local strong { color: #e4d8e3; }
.abx-footer-local .footer-link-copy span, .abx-footer-local .footer-card-subtitle { color: #baacbc; }
.abx-header a:focus-visible, .abx-header summary:focus-visible, .abx-footer a:focus-visible, .abx-footer summary:focus-visible { outline: 3px solid #d67c9f; outline-offset: 4px; }
@media (max-width: 1100px) {
  .abx-header { flex-wrap: wrap; gap: 8px 24px; padding: 12px 20px; }
  .abx-header .abx-nav { justify-content: flex-start; }
  .abx-header .abx-app-links { position: fixed; top: auto; left: 20px; right: 20px; width: auto; margin-top: 10px; }
}
@media (max-width: 700px) {
  .abx-header { position: relative; padding: 14px 18px; }
  .abx-header .abx-brand { flex-wrap: wrap; row-gap: 5px; }
  .abx-header .abx-nav { width: 100%; gap: 4px 0; font-size: 12px; }
  .abx-nav > a, .abx-nav > details { margin-left: 10px; padding-left: 10px; }
  .abx-header .abx-nav .abx-cta { margin-left: 10px; padding: 7px 13px; }
  .abx-header .abx-app-links { left: 12px; right: 12px; max-height: 60vh; }
  .abx-footer { padding: 40px 22px 22px; margin-top: 48px; }
  .abx-footer .abx-footer-intro { display: block; margin-bottom: 30px; }
  .abx-footer .abx-footer-motto { margin-top: 20px; text-align: left; font-size: 22px; }
  .abx-footer .abx-footer-grid { grid-template-columns: 1fr; gap: 26px; }
  .abx-footer .abx-footer-column li { min-height: 40px; }
}
@media (prefers-reduced-motion: reduce) { .abx-apps > summary::before { transition: none; } }

.abx-footer-local > div > a + a { margin-left: 12px; }
/* END ARCHIVEBOX CHROME */
