:root{--maroon: #532638;--maroon-deep: #401E2B;--maroon-ink: #2A121B;--coral: #BE5133;--peach: #E59A63;--cream: #FCF3D8;--cream-soft: #F6F4E9;--pink: #FB6A76;--palm: #27E62B;--berry: #6A1E23;--paper: #FBF6E8;--rule: rgba(42, 18, 27, .14);--rule-strong: rgba(42, 18, 27, .35);--muted: rgba(42, 18, 27, .58);--serif: "Source Serif 4", ui-serif, Georgia, serif;--sans: "Inter", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;--mono: "JetBrains Mono", ui-monospace, Menlo, monospace;--side: 280px;--toc: 240px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--paper);color:var(--maroon-ink)}body{font-family:var(--sans);font-size:15.5px;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:var(--coral);text-decoration:none}a:hover{text-decoration:underline}.caps{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.mono{font-family:var(--mono)}nav.top{position:sticky;top:0;z-index:50;background:color-mix(in oklab,var(--paper) 92%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--rule)}.nav-in{max-width:1480px;margin:0 auto;padding:14px 32px;display:flex;align-items:center;gap:28px}.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--maroon-ink);line-height:1}.logo img{width:28px;height:28px;display:block;transform:translateY(-3px)}.logo span{font-family:var(--sans);font-size:18px;font-weight:600;letter-spacing:-.02em;line-height:1;display:inline-block}.nav-links{display:flex;gap:28px;margin-left:24px}.nav-links a{font-size:14px;color:var(--maroon-ink);text-decoration:none;padding:6px 0;position:relative}.nav-links a:hover{color:var(--coral)}.nav-dd{position:relative}.nav-dd-trigger{display:inline-flex!important;align-items:center;gap:6px}.nav-dd-trigger svg{color:var(--muted);transition:transform .15s ease}.nav-dd:hover .nav-dd-trigger svg,.nav-dd:focus-within .nav-dd-trigger svg{color:var(--coral);transform:rotate(180deg)}.nav-dd-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:180px;padding:6px;background:var(--paper);border:1px solid var(--rule-strong);border-radius:10px;box-shadow:0 10px 32px -12px #2a121b38;opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .15s ease,transform .15s ease,visibility 0s linear .15s;display:flex;flex-direction:column;gap:2px;z-index:60}.nav-dd:hover .nav-dd-menu,.nav-dd:focus-within .nav-dd-menu{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}.nav-dd-menu:before{content:"";position:absolute;top:-10px;left:0;right:0;height:10px}.nav-dd-menu a{display:flex!important;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-radius:6px;font-size:13px;color:var(--maroon-ink);text-decoration:none}.nav-dd-menu a:hover,.nav-dd-menu a.on{color:var(--coral)}.nav-dd-menu .ver{font-family:var(--mono);font-size:13px;font-weight:500}.nav-dd-menu .tag{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;border-radius:999px;background:color-mix(in oklab,var(--coral) 14%,var(--cream));color:var(--coral);border:1px solid color-mix(in oklab,var(--coral) 28%,transparent)}.nav-dd-menu .tag.legacy{background:transparent;color:var(--muted);border-color:var(--rule-strong)}.nav-cta{margin-left:auto;display:flex;gap:10px;align-items:center}.stars{font-family:var(--mono);font-size:12px;padding:6px 10px;border:1px solid var(--rule-strong);border-radius:999px;display:inline-flex;gap:6px;align-items:center;min-width:74px;justify-content:center;text-decoration:none;color:var(--maroon);transition:border-color .2s ease,background .2s ease,color .2s ease}.stars:hover{border-color:#be513373;background:color-mix(in oklab,var(--peach) 14%,var(--cream));color:var(--coral)}.stars .count{width:4ch;min-width:4ch;display:inline-block;text-align:center;font-variant-numeric:tabular-nums}.layout{display:grid;grid-template-columns:var(--side) 1fr var(--toc);max-width:1480px;margin:0 auto}aside.side{position:sticky;top:57px;align-self:start;height:calc(100vh - 57px);overflow-y:auto;padding:28px 20px 40px 28px;border-right:1px solid var(--rule)}aside.toc{position:sticky;top:57px;align-self:start;height:calc(100vh - 57px);overflow-y:auto;padding:28px 28px 40px 20px;border-left:1px solid var(--rule)}main.content{padding:48px 56px 96px;max-width:100%;min-width:0}.side-group{margin-bottom:22px}.side-group>h5{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;padding:0 10px;display:flex;justify-content:space-between;align-items:center}.side-group>h5 .dot{width:5px;height:5px;border-radius:50%;background:var(--coral)}.side-group ul{list-style:none;margin:0;padding:0}.side-group li a{display:flex;align-items:center;gap:10px;padding:6px 10px;color:var(--maroon-ink);font-size:13.5px;border-radius:5px;text-decoration:none;line-height:1.3}.side-group li a:hover{color:var(--coral);text-decoration:none}.side-group li a.on{background:var(--maroon);color:var(--cream);font-weight:500}.side-group li a.on:before{content:"";width:3px;height:14px;background:var(--peach);border-radius:2px;margin-left:-7px;margin-right:7px}.side-group li a .num{font-family:var(--mono);font-size:10px;color:var(--muted);min-width:18px}.side-group li a.on .num{color:#fcf3d8a6}aside.toc h6{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--rule)}aside.toc ul{list-style:none;margin:0;padding:0}aside.toc li a{display:flex;align-items:baseline;gap:8px;padding:4px 10px;color:var(--muted);font-size:13px;text-decoration:none;border-left:2px solid transparent;line-height:1.4}aside.toc li a:hover{color:var(--coral);text-decoration:none}aside.toc li a.on{color:var(--coral);border-left-color:var(--coral)}aside.toc li a.on .n{color:var(--coral)}aside.toc li a .n{font-family:var(--mono);font-size:12px;color:var(--muted);min-width:12px}aside.toc li a .n:after{content:" ·";opacity:.65}aside.toc li.sub a{padding-left:22px;font-size:12.5px}aside.toc .meta{margin-top:28px;padding-top:20px;border-top:1px solid var(--rule);display:flex;flex-direction:column;gap:4px}aside.toc .meta a,aside.toc .meta .edited{font-size:12.5px;color:var(--maroon-ink);padding:6px 10px;display:flex;gap:10px;align-items:center;text-decoration:none;border:1px solid transparent;border-radius:6px;transition:border-color .2s ease,background .2s ease,color .2s ease}aside.toc .meta svg{flex:none}aside.toc .meta a:hover{color:var(--coral)}aside.toc .meta .edited{color:var(--muted);cursor:default}.breadcrumb{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:20px}.breadcrumb a{color:var(--muted);text-decoration:none}.breadcrumb a:hover{color:var(--maroon-ink)}.breadcrumb .sep{margin:0 8px;opacity:.5}.breadcrumb .now{color:var(--coral)}.prose h1{font-family:var(--serif);font-weight:400;font-size:clamp(40px,4.6vw,60px);line-height:1.02;letter-spacing:-.03em;margin:0 0 18px}.prose h1 em{font-style:italic;color:var(--coral)}.prose .lede{font-family:var(--sans);font-size:clamp(17px,1.4vw,20px);font-weight:400;line-height:1.5;letter-spacing:-.005em;margin:0 0 14px;color:var(--maroon-ink);max-width:62ch}.prose .intro-meta{display:flex;flex-wrap:wrap;gap:22px;margin:20px 0 8px;padding:14px 0 18px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);max-width:none}.prose .intro-meta .m{display:flex;flex-direction:column;gap:2px;margin:0}.prose .intro-meta .k{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.prose .intro-meta .v{font-size:13px;font-weight:500;margin:0;display:inline-flex;align-items:center;gap:6px}.prose .intro-meta .check{flex:none}.prose h2{font-family:var(--sans);font-weight:600;font-size:28px;line-height:1.1;letter-spacing:-.025em;margin:56px 0 12px;scroll-margin-top:80px}.prose h2 em{font-style:normal;color:var(--coral)}.prose h3{font-family:var(--sans);font-weight:600;font-size:18px;line-height:1.3;letter-spacing:-.01em;margin:28px 0 10px;scroll-margin-top:80px}.prose h4{font-family:var(--sans);font-weight:600;font-size:15px;line-height:1.3;letter-spacing:-.005em;margin:22px 0 8px;scroll-margin-top:80px}.prose p{margin:12px 0;max-width:68ch}.prose ul,.prose ol{max-width:68ch;padding-left:22px}.prose li{margin:6px 0}.prose :not(pre)>code{font-family:var(--mono);font-size:13px;background:#be51331f;color:var(--berry);padding:1px 6px;border-radius:3px}.prose pre{margin:20px 0;border-radius:8px;overflow:hidden;overflow-x:auto;border:1px solid rgba(42,18,27,.2);background:var(--maroon-ink)!important;padding:18px 22px;font-family:var(--mono);font-size:13px;line-height:1.7;color:var(--cream)}.prose pre code{background:none;color:inherit;padding:0;font-size:inherit}.prose .callout{display:flex;gap:16px;padding:18px 22px;border:1px solid var(--rule-strong);border-radius:8px;background:var(--cream);margin:28px 0;max-width:68ch}.prose .callout.note{background:var(--cream);border-color:var(--rule-strong)}.prose .callout.info{border-color:color-mix(in oklab,var(--coral) 45%,transparent);background:color-mix(in oklab,var(--peach) 16%,var(--cream))}.prose .callout.tip{border-color:color-mix(in oklab,var(--palm) 50%,var(--rule-strong));background:color-mix(in oklab,var(--palm) 7%,var(--cream))}.prose .callout.warn{border-color:var(--coral);background:color-mix(in oklab,var(--pink) 10%,var(--cream))}.prose .callout.danger{border-color:var(--coral);background:color-mix(in oklab,var(--pink) 20%,var(--cream))}.prose .callout .ico{width:28px;height:28px;flex:none;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:14px;font-weight:500;background:var(--coral);color:var(--cream);margin:0}.prose .callout.note .ico{background:var(--berry);color:var(--cream)}.prose .callout.info .ico{background:var(--coral);color:var(--cream)}.prose .callout.tip .ico{background:var(--palm);color:var(--maroon-ink)}.prose .callout.warn .ico{background:var(--pink);color:var(--maroon-ink)}.prose .callout.danger .ico{background:var(--coral);color:var(--cream)}.prose .callout pre{background:var(--callout-code-bg)!important;border-color:color-mix(in oklab,var(--callout-code-bg) 70%,transparent)}.prose .callout.note{--callout-code-bg: #2A121B}.prose .callout.info{--callout-code-bg: #401E2B}.prose .callout.tip{--callout-code-bg: #0E2E14}.prose .callout.warn{--callout-code-bg: #6A1E23}.prose .callout.danger{--callout-code-bg: #3B0F14}.prose .callout .body{flex:1;font-size:14.5px;margin:0;max-width:none}.prose .callout .body>b{font-family:var(--sans);font-weight:600;font-size:13px;letter-spacing:.01em;text-transform:uppercase;display:block;margin-bottom:4px}.prose .callout .body>:is(p,ul,ol):first-of-type{margin-top:0}.prose .callout .body>:last-child{margin-bottom:0}.prose blockquote{margin:20px 0;padding:14px 20px;border:1px solid var(--rule-strong);border-left:3px solid var(--coral);border-radius:6px;background:var(--cream);color:var(--maroon-ink)}.prose blockquote p{margin:6px 0}.prose blockquote strong{font-weight:600}.prose table{width:100%;border-collapse:collapse;margin:20px 0;font-size:14px}.prose th,.prose td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--rule);vertical-align:top}.prose th{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom-color:var(--rule-strong)}.prose img,.prose svg{max-width:100%}.prose hr{border:none;border-top:1px solid var(--rule);margin:40px 0}.pager{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:56px}.pager a{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:4px;padding:20px 22px;border:1px solid var(--rule-strong);border-radius:8px;text-decoration:none;color:var(--maroon-ink);transition:border-color .2s ease}.pager a>*{position:relative;z-index:1}.pager a:before{content:"";position:absolute;inset:0 0 0 auto;width:80px;background-image:radial-gradient(circle,rgba(190,81,51,.24) 1.2px,transparent 1.6px);background-size:11px 11px;opacity:0;transition:opacity .25s ease;pointer-events:none;-webkit-mask-image:linear-gradient(to right,transparent,#000 55%);mask-image:linear-gradient(to right,transparent,#000 55%)}.pager a.next:before{inset:0 auto 0 0;-webkit-mask-image:linear-gradient(to left,transparent,#000 55%);mask-image:linear-gradient(to left,transparent,#000 55%)}.pager a:hover{border-color:color-mix(in oklab,var(--coral) 45%,var(--rule-strong));text-decoration:none}.pager a:hover:before{opacity:1}.pager a.next{text-align:right}.pager a .dir{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.pager a .ttl{font-family:var(--sans);font-size:16px;font-weight:600;letter-spacing:-.015em;color:var(--maroon);margin-top:2px}.pager a .ttl:before{content:"← ";color:var(--coral)}.pager a.next .ttl:before{content:""}.pager a.next .ttl:after{content:" →";color:var(--coral)}.doc-foot{display:flex;justify-content:space-between;align-items:center;margin-top:40px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.doc-foot a{color:var(--muted);text-decoration:none;padding:4px 10px;border:1px solid var(--rule);border-radius:4px}.doc-foot a:hover{color:var(--coral);border-color:var(--coral);text-decoration:none}@media(max-width:1120px){.layout{grid-template-columns:var(--side) 1fr}aside.toc{display:none}}@media(max-width:820px){.layout{grid-template-columns:1fr}aside.side{display:none}main.content{padding:32px 24px 64px}.nav-links{display:none}}
