:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:var(--lightningcss-light,#fff)var(--lightningcss-dark,#191919);--sidebar:var(--lightningcss-light,#f7f7f5)var(--lightningcss-dark,#202020);--text:var(--lightningcss-light,#37352f)var(--lightningcss-dark,#ffffffdb);--muted:var(--lightningcss-light,#787774)var(--lightningcss-dark,#ffffff80);--faint:var(--lightningcss-light,#a5a29a)var(--lightningcss-dark,#ffffff52);--line:var(--lightningcss-light,#e9e9e7)var(--lightningcss-dark,#ffffff17);--hover:var(--lightningcss-light,#37352f12)var(--lightningcss-dark,#ffffff0e);--active:var(--lightningcss-light,#37352f1a)var(--lightningcss-dark,#ffffff17);--link:var(--lightningcss-light,#2383e2)var(--lightningcss-dark,#529cca);--callout:var(--lightningcss-light,#f1f1ef)var(--lightningcss-dark,#252525);--code-bg:#87837826;--code-text:var(--lightningcss-light,#eb5757)var(--lightningcss-dark,#ff7369);--pre-bg:var(--lightningcss-light,#f7f6f3)var(--lightningcss-dark,#202020);--pre-text:var(--text);--shadow:var(--lightningcss-light,#0f0f0f1a)var(--lightningcss-dark,#0000004d) 0 0 0 1px, var(--lightningcss-light,#0f0f0f1a)var(--lightningcss-dark,#0006) 0 2px 4px;--handle:var(--lightningcss-light,#2383e273)var(--lightningcss-dark,#529cca8c);--c-gray:var(--lightningcss-light,#e3e2e099)var(--lightningcss-dark,#373737);--t-gray:var(--lightningcss-light,#32302c)var(--lightningcss-dark,#ffffffdb);--c-brown:var(--lightningcss-light,#eee0da)var(--lightningcss-dark,#4a3228);--t-brown:var(--lightningcss-light,#442a1e)var(--lightningcss-dark,#e2c4b5);--c-orange:var(--lightningcss-light,#fadec9)var(--lightningcss-dark,#5c3b23);--t-orange:var(--lightningcss-light,#49290e)var(--lightningcss-dark,#f4c39d);--c-yellow:var(--lightningcss-light,#fdecc8)var(--lightningcss-dark,#564328);--t-yellow:var(--lightningcss-light,#402c1b)var(--lightningcss-dark,#f3d9a4);--c-green:var(--lightningcss-light,#dbeddb)var(--lightningcss-dark,#243d30);--t-green:var(--lightningcss-light,#1c3829)var(--lightningcss-dark,#b7dcc0);--c-blue:var(--lightningcss-light,#d3e5ef)var(--lightningcss-dark,#143a4e);--t-blue:var(--lightningcss-light,#183347)var(--lightningcss-dark,#a9d3ec);--c-purple:var(--lightningcss-light,#e8deee)var(--lightningcss-dark,#3c2d49);--t-purple:var(--lightningcss-light,#412454)var(--lightningcss-dark,#d5bfe8);--c-red:var(--lightningcss-light,#ffe2dd)var(--lightningcss-dark,#522e2a);--t-red:var(--lightningcss-light,#5d1715)var(--lightningcss-dark,#f5b8b0);--bg-blue:var(--lightningcss-light,#e7f3f8)var(--lightningcss-dark,#1f2d36);--bg-yellow:var(--lightningcss-light,#fbf3db)var(--lightningcss-dark,#39301c);--bg-green:var(--lightningcss-light,#edf3ec)var(--lightningcss-dark,#1f2e25);--bg-red:var(--lightningcss-light,#fdebec)var(--lightningcss-dark,#3a2523);--hl-keyword:var(--lightningcss-light,#d73a49)var(--lightningcss-dark,#ff7b72);--hl-string:var(--lightningcss-light,#22863a)var(--lightningcss-dark,#a5d6ff);--hl-title:var(--lightningcss-light,#6f42c1)var(--lightningcss-dark,#d2a8ff);--hl-number:var(--lightningcss-light,#005cc5)var(--lightningcss-dark,#79c0ff);--hl-attr:var(--lightningcss-light,#22863a)var(--lightningcss-dark,#7ee787);--hl-var:var(--lightningcss-light,#e36209)var(--lightningcss-dark,#ffa657);--font:ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";--mono:"SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace;--sidebar-w:268px}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;font-size:16px;line-height:1.5}a{color:inherit}button{font:inherit;color:inherit}.muted{color:var(--muted)}.block{display:block}.app{min-height:100vh;display:flex}.sidebar{height:100vh;width:var(--sidebar-w);background:var(--sidebar);border-right:1px solid var(--line);overscroll-behavior:contain;flex:none;display:none;position:sticky;top:0;overflow-y:auto}.sidebar.shown{display:block}.main{flex-direction:column;flex:1;min-width:0;display:flex}.app.mobile .sidebar{z-index:40;width:min(86vw,320px);box-shadow:var(--shadow);position:fixed;top:0;bottom:0;left:0}.backdrop{z-index:30;background:#0f0f0f73;position:fixed;inset:0}.topbar{z-index:20;background:var(--bg);align-items:center;gap:6px;height:45px;padding:0 12px;display:flex;position:sticky;top:0}.crumbs{flex-wrap:nowrap;align-items:center;min-width:0;font-size:14px;display:flex;overflow:hidden}.crumb{white-space:nowrap;align-items:center;min-width:0;display:inline-flex}.crumb a,.crumb [aria-current]{text-overflow:ellipsis;border-radius:4px;padding:2px 6px;text-decoration:none;overflow:hidden}.crumb a:hover{background:var(--hover)}.crumb .sep{color:var(--faint);margin:0 1px}.crumb:last-child{flex-shrink:1;min-width:0}.icon-btn{cursor:pointer;width:28px;height:28px;color:var(--muted);background:0 0;border:none;border-radius:4px;flex:none;place-items:center;font-size:16px;display:inline-grid}.icon-btn:hover{background:var(--hover);color:var(--text)}.icon-btn.small{width:22px;height:22px;font-size:12px}.sidebar-inner{padding:6px 6px 40px}.workspace{justify-content:space-between;align-items:center;padding:6px 4px 6px 8px;display:flex}.workspace-name{border-radius:4px;align-items:center;gap:8px;padding:4px 6px;font-size:14px;font-weight:600;text-decoration:none;display:flex}.workspace-name:hover{background:var(--hover)}.ws-icon{font-size:18px}.search{background:var(--hover);color:var(--muted);border-radius:6px;align-items:center;gap:6px;margin:4px 4px 10px;padding:4px 8px;font-size:13px;display:flex}.search input{min-width:0;color:var(--text);font:inherit;background:0 0;border:none;outline:none;flex:1;padding:3px 0;font-size:14px}.tree-label{color:var(--muted);padding:10px 8px 4px;font-size:12px;font-weight:600}.row-wrap{align-items:center;display:flex}.row{min-width:0;min-height:28px;color:var(--text);border-radius:4px;flex:1;align-items:center;gap:6px;padding:3px 8px;font-size:14px;text-decoration:none;display:flex}.row-wrap .row{padding-left:2px}.row:hover{background:var(--hover)}.row.active{background:var(--active);font-weight:600}.row-icon{text-align:center;flex:none;width:20px;font-size:15px}.row-text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.row.result .row-text{white-space:normal}.row-text small{color:var(--muted);font-size:12px;font-weight:400;display:block}.leaf{padding-left:24px}.children{margin-left:14px}.children .leaf .row-text{color:var(--muted)}.children .leaf.active .row-text{color:var(--text)}.caret-btn{cursor:pointer;width:22px;height:22px;color:var(--faint);background:0 0;border:none;border-radius:4px;flex:none;place-items:center;font-size:11px;transition:transform .15s;display:grid}.caret-btn:hover{background:var(--hover);color:var(--text)}.dot{background:var(--link);vertical-align:middle;border-radius:50%;flex:none;width:6px;height:6px;margin-left:6px;display:inline-block}.page{width:100%;max-width:900px;margin:0 auto;padding:24px 96px 120px}.page-header{margin:28px 0 8px}.page-icon{margin-bottom:10px;font-size:72px;line-height:1.1}h1{letter-spacing:-.01em;margin:0 0 8px;font-size:40px;font-weight:700;line-height:1.2}h2{margin:2em 0 .4em;font-size:1.5em;font-weight:600;line-height:1.3}h3{margin:1.2em 0 .3em;font-size:1.2em;font-weight:600}.lead{color:var(--muted);margin:4px 0 0;font-size:18px}p,li{overflow-wrap:anywhere}article a:not(.card):not(.db-row):not(.pager-link):not(.row){color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint);text-underline-offset:2px}article a:not(.card):not(.db-row):not(.pager-link):hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.props{border-bottom:1px solid var(--line);margin:16px 0 20px;padding:0 0 12px}.prop{grid-template-columns:160px 1fr;gap:8px;padding:5px 0;font-size:14px;display:grid}.prop dt{color:var(--muted)}.prop dd{margin:0}.callout{background:var(--callout);border-radius:4px;gap:10px;margin:12px 0;padding:14px 16px;display:flex}.callout-icon{font-size:20px;line-height:1.3}.callout.tone-blue{background:var(--bg-blue)}.callout.tone-yellow{background:var(--bg-yellow)}.callout.tone-green{background:var(--bg-green)}.callout.tone-red{background:var(--bg-red)}.tag{white-space:nowrap;border-radius:3px;align-items:center;margin-right:6px;padding:0 6px;font-size:12px;line-height:20px;display:inline-flex}.c-gray{background:var(--c-gray);color:var(--t-gray)}.c-brown{background:var(--c-brown);color:var(--t-brown)}.c-orange{background:var(--c-orange);color:var(--t-orange)}.c-yellow{background:var(--c-yellow);color:var(--t-yellow)}.c-green{background:var(--c-green);color:var(--t-green)}.c-blue{background:var(--c-blue);color:var(--t-blue)}.c-purple{background:var(--c-purple);color:var(--t-purple)}.c-red{background:var(--c-red);color:var(--t-red)}.tags{flex-wrap:wrap;gap:4px 0;display:flex}.tags a{text-decoration:none!important}.todo{padding:0;list-style:none}.todo li{padding:3px 0 3px 28px;position:relative}.todo li:before{content:"";border:1.5px solid var(--muted);border-radius:2px;width:14px;height:14px;position:absolute;top:7px;left:2px}.link-list{margin:8px 0;padding:0;list-style:none}.link-list li{border-bottom:1px solid var(--line);padding:6px 0}.missing{color:var(--code-text)}.gallery{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin:14px 0;display:grid}.gallery.two{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.card{box-shadow:var(--shadow);background:var(--bg);border-radius:6px;flex-direction:column;text-decoration:none;transition:background .15s;display:flex;overflow:hidden}.card:hover{background:var(--hover)}.card-cover{background:var(--bg-blue);place-items:center;height:110px;font-size:56px;display:grid}.card-cover[data-track=backend]{background:var(--bg-green)}.card-body{flex-direction:column;flex:1;gap:4px;padding:12px 14px 14px;display:flex}.card-body h3{margin:0;font-size:16px}.card-body p{color:var(--muted);flex:1;margin:0;font-size:14px}.card-body .muted{font-size:13px}.card-kicker{color:var(--muted);font-size:12px;font-weight:600}.quick-links{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.quick-links a{background:var(--hover);border-radius:4px;padding:4px 10px;font-size:14px;text-decoration:none!important}.quick-links a:hover{background:var(--active)}.db{border-top:1px solid var(--line);font-size:14px}.db-head,.db-row{border-bottom:1px solid var(--line);grid-template-columns:110px minmax(0,1.3fr) 130px minmax(0,1.6fr);gap:12px;padding:8px 4px;display:grid}.db-head.two,.db-row.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.db-head{color:var(--muted);font-size:13px}.db-row{color:var(--text);align-items:start;text-decoration:none}.db-row:not(.static):hover{background:var(--hover)}.db-day{font-weight:600}.db-day small{color:var(--muted);font-size:12px;font-weight:400;display:block}.db-title{font-weight:500}.db-hw{color:var(--muted)}.shape{border-left:2px solid var(--line);margin:10px 0 0 6px}.shape-row{grid-template-columns:82px 1fr;gap:10px;padding:8px 0 8px 16px;display:grid;position:relative}.shape-row:before{content:"";background:var(--link);border:2px solid var(--bg);border-radius:50%;width:10px;height:10px;position:absolute;top:14px;left:-6px}.shape-row.is-break{color:var(--muted)}.shape-row.is-break:before{background:var(--faint)}.shape-time{color:var(--muted);font-variant-numeric:tabular-nums;padding-top:1px;font-size:14px}.shape ul{margin:4px 0 0;padding-left:20px}.shape li{margin:2px 0}.shape.compact .shape-row{padding:5px 0 5px 16px}.shape.compact .shape-row:before{top:11px}.toggle-block{margin:28px 0 8px}.toggle-block>summary{cursor:pointer;border-radius:4px;align-items:center;gap:6px;margin-left:-4px;padding:2px 4px;font-size:1.5em;font-weight:600;list-style:none;display:flex}.toggle-block>summary::-webkit-details-marker{display:none}.toggle-block>summary:hover{background:var(--hover)}.toggle-block .caret{color:var(--muted);text-align:center;width:18px;font-size:.55em;transition:transform .15s;display:inline-block}.toggle-block[open]>summary .caret{transform:rotate(90deg)}.toggle-block.small{margin:8px 0}.toggle-block.small>summary{color:var(--muted);font-size:14px;font-weight:500}.toggle-block.notes>.notes-body,.toggle-block.notes>p{padding-left:26px}.notes-body h2{margin-top:1.6em;font-size:1.25em}.notes-body h3{font-size:1.08em}.notes-body code{font-family:var(--mono);background:var(--code-bg);color:var(--code-text);border-radius:3px;padding:.2em .4em;font-size:85%}.notes-body pre{background:var(--pre-bg);color:var(--pre-text);border-radius:4px;margin:10px 0;padding:34px 16px 16px;position:relative;overflow-x:auto}.notes-body pre code{color:inherit;background:0 0;padding:0;font-size:13.5px;line-height:1.6}.notes-body blockquote{background:var(--callout);border:0;border-radius:4px;margin:12px 0;padding:12px 16px}.notes-body blockquote p{margin:.3em 0}.notes-body table{border-collapse:collapse;width:100%;margin:10px 0;font-size:14px;display:block;overflow-x:auto}.notes-body th,.notes-body td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:6px 10px}.notes-body th{background:var(--callout);font-weight:600}.notes-body img{max-width:100%}.notes-body ul,.notes-body ol{padding-left:24px}.copy{background:var(--hover);color:var(--muted);cursor:pointer;border:none;border-radius:4px;padding:2px 8px;font-size:12px;position:absolute;top:6px;right:6px}.copy:hover{background:var(--active);color:var(--text)}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-meta{color:var(--hl-keyword)}.hljs-string,.hljs-regexp{color:var(--hl-string)}.hljs-title,.hljs-title.function_,.hljs-selector-class,.hljs-selector-id,.hljs-section{color:var(--hl-title)}.hljs-number,.hljs-literal{color:var(--hl-number)}.hljs-comment{color:#8b949e;font-style:italic}.hljs-attr,.hljs-attribute,.hljs-property,.hljs-tag,.hljs-name{color:var(--hl-attr)}.hljs-variable,.hljs-params{color:var(--hl-var)}.filter-input{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--text);font:inherit;border-radius:4px;margin:8px 0;padding:8px 10px}.segmented{background:var(--hover);border-radius:6px;flex-wrap:wrap;gap:4px;margin:10px 0;padding:3px;display:inline-flex}.segmented button{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:4px;padding:4px 12px;font-size:14px}.segmented button.on{background:var(--bg);color:var(--text);box-shadow:var(--shadow)}.pager{grid-template-columns:1fr 1fr;gap:12px;margin-top:56px;display:grid}.pager-link{box-shadow:var(--shadow);border-radius:6px;flex-direction:column;gap:2px;padding:12px 14px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.pager-link small{color:var(--muted);font-weight:400}.pager-link.next{text-align:right}.pager-link:hover{background:var(--hover)}:focus-visible{outline:2px solid var(--link);outline-offset:1px;border-radius:4px}@media (width<=1200px){.page{padding:24px 56px 100px}}@media (width<=900px){.page{padding:12px 16px 80px}.page-header{margin-top:16px}.page-icon{font-size:56px}h1{font-size:30px}h2{font-size:1.3em}.lead{font-size:16px}.prop{grid-template-columns:1fr;gap:0;padding:6px 0}.db-head{display:none}.db-row{grid-template-columns:1fr;gap:4px;padding:12px 4px}.db-row.two{grid-template-columns:1fr}.db-day{align-items:baseline;gap:8px;display:flex}.db-day small{display:inline}.shape-row{grid-template-columns:1fr;gap:2px}.toggle-block>summary{font-size:1.3em}.toggle-block.notes>.notes-body,.toggle-block.notes>p{padding-left:0}.pager{grid-template-columns:1fr}.pager-link.next{text-align:left}.row{min-height:34px}}@media print{.sidebar,.topbar,.pager,.backdrop{display:none!important}.page{max-width:none;padding:0}}.sidebar{overflow:visible}.sidebar-inner{overscroll-behavior:contain;height:100%;overflow-y:auto}.resize-handle{cursor:col-resize;z-index:5;touch-action:none;width:10px;height:100%;position:absolute;top:0;right:-5px}.resize-handle:after{content:"";background:0 0;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:4px}.resize-handle:hover:after,.resize-handle:focus-visible:after,body.resizing .resize-handle:after{background:var(--handle)}.resize-handle:focus-visible{outline:none}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing *{cursor:col-resize!important}.topbar-spacer{flex:1}.theme-switch{background:var(--hover);border-radius:6px;flex:none;gap:2px;padding:2px;display:inline-flex}.theme-switch button{cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:4px;width:28px;height:24px;font-size:13px;line-height:1}.theme-switch button:hover{opacity:1}.theme-switch button.on{background:var(--bg);box-shadow:var(--shadow);opacity:1}:root{--ease:cubic-bezier(.2, 0, 0, 1);--dur:.24s;--shadow-lg:0 0 0 1px var(--line), 0 12px 32px var(--lightningcss-light,#0f0f0f29)var(--lightningcss-dark,#0000008c)}.sidebar{z-index:40;height:auto;width:var(--sidebar-w);visibility:hidden;transition:transform var(--dur) var(--ease), top var(--dur) var(--ease), bottom var(--dur) var(--ease), border-radius var(--dur) var(--ease), box-shadow var(--dur) var(--ease), visibility 0s linear var(--dur);display:block;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.app.docked .sidebar,.app.peek .sidebar,.app.drawer-open .sidebar{visibility:visible;transition:transform var(--dur) var(--ease), top var(--dur) var(--ease), bottom var(--dur) var(--ease), border-radius var(--dur) var(--ease), box-shadow var(--dur) var(--ease), visibility 0s;transform:none}.app.peek .sidebar{box-shadow:var(--shadow-lg);border-right:none;border-radius:0 8px 8px 0;top:52px;bottom:12px}.app.mobile .sidebar{width:min(86vw,320px);box-shadow:none}.app.drawer-open .sidebar{box-shadow:var(--shadow-lg)}.sidebar-spacer{width:0;transition:width var(--dur) var(--ease);flex:none}.app.docked .sidebar-spacer{width:var(--sidebar-w)}.peek-zone{z-index:35;width:10px;position:fixed;top:45px;bottom:0;left:0}.backdrop{z-index:30;opacity:0;pointer-events:none;transition:opacity var(--dur) var(--ease);background:#0f0f0f73;display:block;position:fixed;inset:0}.app.drawer-open .backdrop{opacity:1;pointer-events:auto}.menu-btn{animation:fade-in var(--dur) var(--ease)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}body.resizing .sidebar,body.resizing .sidebar-spacer{transition:none}@media (prefers-reduced-motion:reduce){.sidebar,.sidebar-spacer,.backdrop,.caret-btn,.toggle-block .caret{transition:none!important}.menu-btn{animation:none}}.icon-btn svg,.caret-btn svg,.theme-switch svg{display:block}.search-icon{color:var(--faint);flex:none}.caret-btn{font-size:0}.caret-btn svg{transition:transform .15s var(--ease,ease)}.caret-btn.open{transform:none}.caret-btn.open svg{transform:rotate(90deg)}.theme-switch{background:var(--hover);border-radius:6px;gap:0;padding:2px}.theme-switch button{width:28px;height:24px;color:var(--muted);opacity:1;border-radius:4px;place-items:center;padding:0;transition:color .15s,background .15s;display:grid}.theme-switch button:hover{color:var(--text)}.theme-switch button.on{color:var(--text);background:var(--bg);box-shadow:0 0 0 1px var(--line), 0 1px 2px var(--lightningcss-light,#0f0f0f14)var(--lightningcss-dark,#0006)}
