:root,[data-theme]{--pub-i-info: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M4 8.25 A3.5 3.5 0 0 1 7.5 4.75 H16.5 A3.5 3.5 0 0 1 20 8.25 V15.5 A1 1 0 0 1 19 16.5 H11 L7.5 19.75 V16.5 H5 A1 1 0 0 1 4 15.5 Z%27%3E%3C/path%3E%3Cpath d=%27M8 9.5 H16 M8 12.5 H13%27%3E%3C/path%3E%3C/svg%3E");--pub-i-tip: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cg transform=%27rotate(-15 12 12)%27%3E%3Crect x=%279.75%27 y=%279.75%27 width=%274.5%27 height=%274.5%27 rx=%271.08%27 fill=%27black%27 stroke=%27none%27%3E%3C/rect%3E%3Cpath d=%27M12 3.75 V6.5 M12 17.5 V20.25 M3.75 12 H6.5 M17.5 12 H20.25%27%3E%3C/path%3E%3C/g%3E%3C/svg%3E");--pub-i-warning: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M10.27 4.5 A2 2 0 0 1 13.73 4.5 L20.6 16.5 A1.5 1.5 0 0 1 19.3 18.75 H4.7 A1.5 1.5 0 0 1 3.4 16.5 Z%27%3E%3C/path%3E%3Cpath d=%27M12 9.25 V12.75%27%3E%3C/path%3E%3Crect x=%2711.25%27 y=%2714.75%27 width=%271.5%27 height=%271.5%27 rx=%270.36%27 fill=%27black%27 stroke=%27none%27%3E%3C/rect%3E%3C/svg%3E");--pub-i-danger: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Crect x=%275.5%27 y=%275.5%27 width=%2713%27 height=%2713%27 rx=%273.25%27 transform=%27rotate(45 12 12)%27%3E%3C/rect%3E%3Cpath d=%27M12 8.25 V12.25%27%3E%3C/path%3E%3Crect x=%2711.25%27 y=%2714.25%27 width=%271.5%27 height=%271.5%27 rx=%270.36%27 fill=%27black%27 stroke=%27none%27%3E%3C/rect%3E%3C/svg%3E");--pub-i-todo: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Crect x=%273%27 y=%275%27 width=%276%27 height=%276%27 rx=%271%27%3E%3C/rect%3E%3Cpath d=%27m3 17 2 2 4-4%27%3E%3C/path%3E%3Cpath d=%27M13 6h8%27%3E%3C/path%3E%3Cpath d=%27M13 12h8%27%3E%3C/path%3E%3Cpath d=%27M13 18h8%27%3E%3C/path%3E%3C/svg%3E");--pub-i-success: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M20 6 9 17l-5-5%27%3E%3C/path%3E%3C/svg%3E");--pub-i-question: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%2710%27%3E%3C/circle%3E%3Cpath d=%27M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3%27%3E%3C/path%3E%3Cpath d=%27M12 17h.01%27%3E%3C/path%3E%3C/svg%3E");--pub-i-external: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M7 7h10v10%27%3E%3C/path%3E%3Cpath d=%27M7 17 17 7%27%3E%3C/path%3E%3C/svg%3E");--pub-i-play: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpolygon points=%276 3 20 12 6 21 6 3%27%3E%3C/polygon%3E%3C/svg%3E");--pub-i-link: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.5%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M6.5 4.75 H5 A1.25 1.25 0 0 0 3.75 6 V18 A1.25 1.25 0 0 0 5 19.25 H6.5 M9 7.25 H7.5 V16.75 H9 M17.5 4.75 H19 A1.25 1.25 0 0 1 20.25 6 V18 A1.25 1.25 0 0 1 19 19.25 H17.5 M15 7.25 H16.5 V16.75 H15%27%3E%3C/path%3E%3C/svg%3E")}.pub{min-height:100vh;min-height:100svh;display:flex;flex-direction:column;background:var(--floor);color:var(--foreground)}.fonts-pending .pub-main{visibility:hidden}.pub-top{display:flex;align-items:center;height:56px;padding:0 var(--gutter)}.pub-home{display:inline-flex;align-items:center;gap:8px;color:var(--foreground);text-decoration:none;border-radius:var(--radius-sm)}.pub-home svg{width:22px;height:22px}.pub-home span{font-size:.8125rem;font-weight:550;color:var(--fg-2)}.pub-home:hover span{color:var(--foreground)}.pub-main{flex:1;width:100%;max-width:calc(680px + 2 * var(--gutter));margin:0 auto;padding:24px var(--gutter) 72px}.pub-cover{aspect-ratio:3 / 1;margin:0 0 32px;border-radius:var(--radius-xl);overflow:hidden;background:color-mix(in oklab,var(--foreground) 6%,var(--floor))}.pub-cover img{display:block;width:100%;height:100%;object-fit:cover}.pub-head{margin-bottom:30px}.pub-emoji{display:block;font-size:2.75rem;line-height:1;margin-bottom:14px}.pub-title{font-size:2.125rem;font-weight:650;line-height:1.12;letter-spacing:-.03em;text-wrap:balance;overflow-wrap:anywhere}.pub-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:12px;font-size:.875rem;color:var(--fg-2)}.pub-meta .dot{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.6}.pub-space{font-weight:550;color:var(--foreground)}.pub-body{font-size:1rem;line-height:1.7;overflow-wrap:break-word}.pub-body>:first-child{margin-top:0}.pub-body>:last-child{margin-bottom:0}.pub-body p{margin:0 0 14px}.pub-body :is(h1,h2,h3,h4,h5,h6){font-weight:650;line-height:1.25;scroll-margin-top:24px;text-wrap:balance}.pub-body h1{margin:38px 0 12px;font-size:1.625rem;letter-spacing:-.025em;line-height:1.15}.pub-body h2{margin:34px 0 10px;font-size:1.3125rem;letter-spacing:-.02em}.pub-body h3{margin:28px 0 8px;font-size:1.125rem;letter-spacing:-.01em}.pub-body h4{margin:24px 0 6px;font-size:1rem}.pub-body :is(h5,h6){margin:22px 0 6px;font-size:.9375rem;color:var(--fg-2)}.pub-body strong{font-weight:650}.pub-body u{text-underline-offset:.22em;text-decoration-thickness:1px}.pub-body s{text-decoration-color:color-mix(in oklab,currentColor 60%,transparent)}.pub-body a{color:inherit;text-decoration:underline;text-decoration-color:color-mix(in oklab,currentColor 32%,transparent);text-underline-offset:.22em;text-decoration-thickness:1px;border-radius:2px}.pub-body a:hover,.pub-body a:focus-visible{text-decoration-color:currentColor}.pub-body a[rel~=nofollow]:after{content:"  ";background:currentColor;opacity:.55;-webkit-mask:var(--pub-i-external) right .02em center / .68em no-repeat;mask:var(--pub-i-external) right .02em center / .68em no-repeat}.pub-body :is(ul,ol){margin:0 0 14px;padding-left:1.5em}.pub-body li{margin:2px 0}.pub-body li>:is(ul,ol){margin:2px 0 0}.pub-body li>p{margin:0}.pub-body :is(ul,ol) ::marker{color:var(--muted-foreground)}.pub-body ul.tasks{list-style:none;padding-left:0}.pub-body li.task{display:flex;align-items:flex-start;gap:10px}.pub-body li.task>input[type=checkbox]{appearance:none;-webkit-appearance:none;flex:none;width:16px;height:16px;margin:.32em 0 0;border-radius:5px;box-shadow:inset 0 0 0 1.5px color-mix(in oklab,var(--foreground) 40%,transparent);background:transparent;opacity:1}.pub-body li.task>input[type=checkbox]:checked{background:var(--primary);box-shadow:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.25 5 8.5l4.5-5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-size:12px;background-position:center;background-repeat:no-repeat}[data-theme=abismo] .pub-body li.task>input[type=checkbox]:checked,[data-theme=mare] .pub-body li.task>input[type=checkbox]:checked,[data-theme=tinta-dark] .pub-body li.task>input[type=checkbox]:checked,[data-theme=nitido-dark] .pub-body li.task>input[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.25 5 8.5l4.5-5' fill='none' stroke='%230a0a0a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.pub-body li.task>:not(input){flex:1;min-width:0;margin:0}.pub-body li.task[data-checked=true]>:not(input){color:var(--fg-2);text-decoration:line-through;text-decoration-color:color-mix(in oklab,currentColor 45%,transparent)}.pub-body blockquote{margin:0 0 16px;padding:2px 0 2px 16px;box-shadow:inset 2px 0 color-mix(in oklab,var(--muted-foreground) 55%,transparent);color:var(--foreground)}.pub-body blockquote>:last-child{margin-bottom:0}.pub-body hr{margin:28px 0;border:0;height:1px;background:var(--border)}.pub-body br{line-height:inherit}.pub-body code{font-family:var(--font-mono);font-size:.875em;padding:.1em .35em;border-radius:var(--radius-xs);background:color-mix(in oklab,var(--foreground) 7%,transparent)}.pub-body pre{margin:0 0 18px;padding:14px 16px;border-radius:var(--radius-md);background:color-mix(in oklab,var(--foreground) 4.5%,var(--floor));box-shadow:inset 0 0 0 1px var(--border);overflow-x:auto;tab-size:2}.pub-body pre code{display:block;padding:0;background:none;border-radius:0;font-size:.8438rem;line-height:1.65;white-space:pre}.pub-body img{display:block;width:100%;aspect-ratio:16 / 10;object-fit:contain;margin:8px 0 18px;border-radius:var(--radius-lg);background:color-mix(in oklab,var(--foreground) 5%,var(--floor))}.pub-body p>img:only-child{margin:0}.pub-body table{display:block;width:max-content;max-width:100%;overflow-x:auto;margin:6px 0 20px;border-collapse:collapse;font-size:.875rem;line-height:1.55}.pub-body :is(th,td){padding:8px 14px 8px 0;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;min-width:6ch}.pub-body th{font-weight:600}.pub-body tr:first-child>:is(th,td){border-top:0}.pub-body :is(th,td)>p{margin:0}.pub-body div.math{margin:6px 0 18px;padding:12px 16px;border-radius:var(--radius-md);background:color-mix(in oklab,var(--foreground) 4.5%,var(--floor));box-shadow:inset 0 0 0 1px var(--border);font-family:var(--font-mono);font-size:.875rem;line-height:1.6;text-align:center;overflow-x:auto;white-space:pre-wrap}.pub-body span.math{font-family:var(--font-mono);font-size:.875em;padding:0 .2em;color:var(--foreground)}.pub-body p.embed{margin:8px 0 18px}.pub-body p.embed>a{position:relative;display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:var(--radius-lg);text-decoration:none;background:var(--card);box-shadow:inset 0 0 0 1px var(--border);overflow-wrap:anywhere}.pub-body p.embed>a:before{content:"";flex:none;width:36px;height:36px;border-radius:50%;background:var(--primary)}.pub-body p.embed>a:after{content:"";position:absolute;left:28px;top:50%;width:14px;height:14px;margin:-7px 0 0;background:var(--primary-foreground);opacity:1;-webkit-mask:var(--pub-i-play) center / contain no-repeat;mask:var(--pub-i-play) center / contain no-repeat}.pub-body p.embed>a:hover{background:color-mix(in oklab,var(--foreground) 4%,var(--card))}.pub-body aside.callout{--c: var(--muted-foreground);--g: var(--pub-i-info);margin:8px 0 18px;padding:12px 14px 12px 40px;position:relative;border-radius:var(--radius-md);background:color-mix(in oklab,var(--c) 7%,var(--floor));box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--c) 22%,transparent)}.pub-body aside.callout:before{content:"";position:absolute;left:13px;top:15px;width:16px;height:16px;background:var(--c);-webkit-mask:var(--g) center / contain no-repeat;mask:var(--g) center / contain no-repeat}.pub-body aside.callout>p.callout-title{margin:0 0 4px;font-size:.875rem;font-weight:600;line-height:1.45}.pub-body aside.callout>:last-child{margin-bottom:0}.pub-body aside.callout>:not(.callout-title){font-size:.9688rem}.pub-body aside.callout aside.callout{margin:10px 0 0}.pub-body aside.callout:is([data-callout=tip]){--c: var(--u-accent);--g: var(--pub-i-tip)}.pub-body aside.callout:is([data-callout=question]){--c: var(--u-accent);--g: var(--pub-i-question)}.pub-body aside.callout:is([data-callout=success]){--c: var(--u-emerald);--g: var(--pub-i-success)}.pub-body aside.callout:is([data-callout=todo]){--g: var(--pub-i-todo)}.pub-body aside.callout:is([data-callout=warning]){--c: var(--u-amber);--g: var(--pub-i-warning)}.pub-body aside.callout:is([data-callout=failure],[data-callout=danger],[data-callout=bug]){--c: var(--destructive);--g: var(--pub-i-danger)}.pub-foot{border-top:1px solid var(--border)}.pub-foot-in{max-width:calc(680px + 2 * var(--gutter));margin:0 auto;padding:22px var(--gutter) 28px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 20px}.pub-made{display:inline-flex;align-items:center;gap:10px;font-size:.875rem;color:var(--fg-2)}.pub-made svg{width:20px;height:20px;color:var(--foreground);flex:none}.pub-cta{display:inline-flex;align-items:center;height:36px;padding:0 14px;border-radius:var(--radius-sm);font-size:.875rem;font-weight:550;color:var(--primary-foreground);background:var(--primary);text-decoration:none}.pub-cta:hover{background:color-mix(in oklab,var(--primary) 88%,var(--floor))}.pub-missing{padding-top:clamp(32px,12vh,120px)}.pub-missing .pub-title{font-size:1.875rem}.pub-missing p{margin-top:12px;max-width:46ch;font-size:1.0625rem;line-height:1.6;color:var(--fg-2);text-wrap:pretty}.pub-missing .pub-cta{margin-top:24px;height:44px;padding:0 20px;font-size:.9375rem}@media(max-width:480px){.pub-title{font-size:1.75rem}.pub-cover{border-radius:var(--radius-lg);margin-bottom:24px}.pub-body aside.callout{padding-left:38px}}@media print{.pub-top,.pub-foot{display:none}.pub{background:#fff;color:#000}}.pub-tree{list-style:none;margin:0;padding:0}.pub-tree .pub-tree{position:relative;margin:1px 0 4px;padding-left:17px}.pub-tree .pub-tree:before{content:"";position:absolute;left:16px;top:0;bottom:4px;width:1px;background:var(--line)}.pub-tree a,.pub-tree-name{display:flex;gap:9px;align-items:center;min-height:32px;padding:5px 8px;border-radius:var(--radius-sm, 6px);line-height:1.35}.pub-tree a{color:var(--fg-2);text-decoration:none}.pub-tree a:hover{color:var(--foreground);background:color-mix(in oklab,var(--foreground) 5%,var(--floor))}.pub-tree a:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.pub-tree a[aria-current=page]{color:var(--foreground);font-weight:550;background:color-mix(in oklab,var(--foreground) 7%,var(--floor))}.pub-tree-name{color:var(--fg-3);font-weight:600;font-size:.9em}.pub-tree-icon{flex:none;display:grid;place-items:center;width:18px;height:18px;color:var(--fg-3)}.pub-tree a[aria-current=page] .pub-tree-icon{color:var(--foreground)}.pub-tree-emoji{font-size:15px;line-height:1}.pub-tree-title{min-width:0;overflow-wrap:anywhere}.pub-index .pub-index-tree{margin-top:28px;font-size:1rem}.pub-index .pub-tree a,.pub-index .pub-tree-name{min-height:38px}@media(min-width:1024px){.pub-main:has(.pub-index){max-width:calc(1040px + 2 * var(--gutter))}.pub-index{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);column-gap:64px;align-items:start}.pub-index .pub-head{position:sticky;top:32px}.pub-index .pub-index-tree{margin-top:6px;padding-left:32px;border-left:1px solid var(--line)}}.pub-start{display:inline-flex;flex-direction:column;gap:2px;margin-top:28px;padding:12px 16px 13px;border-radius:var(--radius-md, 10px);box-shadow:inset 0 0 0 1px var(--line);color:var(--foreground);text-decoration:none;transition:background-color var(--dur-quick, .15s) var(--ease-settle, ease-out)}.pub-start span{font-size:.8125rem;color:var(--fg-3)}.pub-start b{font-weight:600}.pub-start b:after{content:" →"}.pub-start:hover{background:color-mix(in oklab,var(--foreground) 4%,var(--floor))}.pub-start:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}@media(prefers-reduced-motion:reduce){.pub-start{transition:none}}.pub-side-space{display:block;margin:0 0 8px;padding:0 8px 12px;border-bottom:1px solid var(--line);font-size:.9375rem;font-weight:650;letter-spacing:-.01em;color:var(--foreground);text-decoration:none;border-radius:4px}.pub-side-space:hover{text-decoration:underline;text-decoration-color:color-mix(in oklab,currentColor 35%,transparent);text-underline-offset:3px}.pub-side-space:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.pub-side{display:none;font-size:.875rem}.pub-menu{margin:0 0 28px;font-size:.9375rem;border-radius:var(--radius-md, 10px);box-shadow:inset 0 0 0 1px var(--line)}.pub-menu summary{display:flex;align-items:center;gap:10px;min-height:46px;padding:0 14px;cursor:pointer;list-style:none;border-radius:inherit}.pub-menu summary::-webkit-details-marker{display:none}.pub-menu summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.pub-menu-label{font-weight:600}.pub-menu-count{margin-left:auto;font-size:.8125rem;color:var(--fg-3)}.pub-menu-chev{flex:none;color:var(--fg-3);transition:transform var(--dur-quick, .15s) var(--ease-settle, ease-out)}.pub-menu[open] .pub-menu-chev{transform:rotate(180deg)}.pub-menu nav{padding:2px 6px 10px;border-top:1px solid var(--line)}.pub-menu .pub-side-space{margin-top:10px}@media(prefers-reduced-motion:reduce){.pub-menu-chev{transition:none}}@media(min-width:1024px){.pub-main-wide{max-width:calc(240px + 56px + 680px + 2 * var(--gutter));display:grid;grid-template-columns:240px minmax(0,680px);column-gap:56px;align-items:start}.pub-main-wide .pub-side{display:block;position:sticky;top:24px;max-height:calc(100vh - 48px);overflow-y:auto;padding-bottom:24px}.pub-main-wide .pub-menu{display:none}}.pub-pager{display:flex;justify-content:space-between;gap:16px;margin-top:56px;padding-top:20px;border-top:1px solid var(--line);font-size:.9375rem}.pub-pager a{display:flex;flex-direction:column;gap:2px;max-width:48%;color:var(--foreground);text-decoration:none;border-radius:4px}.pub-pager a.next{margin-left:auto;text-align:right;align-items:flex-end}.pub-pager span{font-size:.8125rem;color:var(--fg-3)}.pub-pager b{font-weight:600;overflow-wrap:anywhere}.pub-pager a:hover b{text-decoration:underline;text-underline-offset:3px}.pub-pager a:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
