@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}:root{color-scheme:dark;--bg:#191a1c;--paper:#1e1f21;--accent:#7586dc;--accent-soft:#7585dc1f;--accent-hover:#7585dc14;--accent-fill:#5a6bc4;--ink:#fff;--ink-2:#ffffffa3;--ink-3:#ffffff6b;--line:#ffffff1f;--hover:#ffffff0f;--active:#ffffff14;--green:#57d45c;--amber:#e5b567;--t-comment:#6a9955;--t-key:#569cd6;--t-fn:#dcdcaa;--t-str:#ce9178;--t-num:#b5cea8;--t-id:#9cdcfe;--code-ink:#d4d4d4;--gutter:#ffffff80;--ghost:#b4b4b499;--raised:#222326;--widget:#252526;--dialog:#232427;--selection:#04395e;--error:#f14c4c;--t-type:#4ec9b0;--t-cte:#4fc1ff;--t-variable:orange;--symbol-fn:#b180d7;--mono:"Menlo", "Monaco", "Consolas", "Courier New", monospace;--stage-top:#23252b;--stage-mid:#0e0f11;--stage-bottom:#0a0b0d;--popup:#25262a;--subtle:#ffffff0a}:root[data-theme=light]{color-scheme:light;--symbol-fn:#652d90;--selection:#cce6ff}.theme-moon,[data-theme=light] .theme-sun{display:none}[data-theme=light] .theme-moon{display:block}.ed,.ex,.spec{color:var(--ink-2)}[data-theme=light] .ql-logo-dark,.ql-logo.ql-logo-light{display:none}[data-theme=light] .ql-logo-light{display:block}[data-theme=light] .stage.floating .ql{box-shadow:0 30px 90px -25px #20233040}*{box-sizing:border-box}html,body{overscroll-behavior:none;height:100%;margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--stage-bottom);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,sans-serif;font-size:14px}.bx{font:inherit;color:inherit;text-align:inherit;cursor:pointer;background:0 0;border:none;margin:0;padding:0}[hidden]{display:none!important}kbd{font-family:var(--mono)}.stage{background:radial-gradient(1200px 700px at 50% -10%, var(--stage-top) 0%, var(--stage-mid) 60%, var(--stage-bottom) 100%);justify-content:center;align-items:center;min-height:100dvh;padding:0;display:flex}.stage.floating{padding:26px 32px 24px}.ql{background:var(--bg);width:100%;height:100dvh;min-height:0;color:var(--ink);border:1px solid var(--line);border-radius:0;flex-direction:column;transition:border-radius .3s;display:flex;overflow:hidden}.stage.floating .ql{border-radius:12px;max-width:1440px;height:min(100vh - 50px,1200px);box-shadow:0 50px 130px -20px #000000bf,0 0 0 1px #0006}.ql-h{flex-shrink:0;justify-content:space-between;align-items:center;height:44px;padding:0 8px 0 14px;display:flex}.ql-h-left{align-items:center;gap:16px;display:flex}.ql-tl{gap:8px;display:flex}.ql-tl>*{border:none;border-radius:50%;width:12px;height:12px;padding:0;display:block}.ql-tl>:hover{filter:brightness(1.15)}.ql-tl .r{background:#ff5f57}.ql-tl .y{background:#febc2e}.ql-tl .g{background:#28c840}.ql-logo{height:24px;display:block}.ql-h-docs{color:var(--ink-2);align-items:center;gap:8px;margin-left:-6px;font-size:13px;font-weight:500;text-decoration:none;display:inline-flex}.ql-h-docs:hover{color:var(--ink)}.ql-h-docs:before{content:"";background:var(--line);width:1px;height:18px}.ql-h-actions{align-items:center;display:flex}.ql-hi{width:37px;height:37px;color:var(--accent);border-radius:6px;place-items:center;display:grid}.ql-hi:hover{background:var(--accent-hover)}.ql-hdiv{background:var(--line);width:1px;height:22px;margin:0 6px}.ql-h-link{height:32px;color:var(--ink-2);border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-size:13.5px;font-weight:500;text-decoration:none;display:inline-flex}.ql-h-link:hover{color:var(--ink);background:0 0}.ql-h-link svg{width:13px;height:13px}.ql-h-link.primary{white-space:nowrap;color:#fff;background:var(--accent-fill);margin-left:8px;padding:0 14px}.ql-h-link.primary:hover{filter:brightness(.9);color:#fff}.ql-body{flex:1;gap:8px;min-height:0;padding:0 8px;display:flex}.ql-sb{width:var(--ql-sb-w,264px);flex-direction:column;flex-shrink:0;min-height:0;display:flex}.ql-sb-top{align-items:center;gap:4px;padding:2px 0 8px;display:flex}.ql-search{background:var(--subtle);height:40px;color:var(--ink-2);cursor:text;border-radius:8px;flex:1;align-items:center;gap:9px;padding:0 12px;font-size:14px;display:flex}.ql-search svg{color:var(--accent);flex-shrink:0}.ql-search kbd{color:var(--ink-2);background:var(--active);border-radius:4px;margin-left:auto;padding:2px 6px;font-size:10px;font-weight:700}.ql-sb-scroll{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:transparent transparent;flex:1;min-height:0;overflow:hidden auto}.ql-sb:hover .ql-sb-scroll{scrollbar-color:#7585dc33 transparent}.ql-sb-sec{color:var(--ink-2);align-items:center;padding:6px 8px;font-size:14px;font-weight:500;display:flex}.ql-sb-sec.mt{margin-top:10px}.ql-newq{width:100%;height:40px;color:var(--ink);border-radius:8px;align-items:center;gap:12px;padding:0 12px;font-size:14px;display:flex}.ql-newq:hover{background:var(--accent-hover)}.ql-newq svg{color:var(--accent);flex-shrink:0}.ql-newq span{color:var(--ink-2)}.ql-tree{flex-direction:column;display:flex}.ql-tnode{height:36px;color:var(--ink);white-space:nowrap;border-radius:8px;align-items:center;gap:6px;width:100%;padding:0 8px;font-size:14px;display:flex}.ql-tnode:hover{background:var(--accent-hover)}.ql-tnode.expandable{cursor:pointer}.ql-tnode.current{background:var(--accent-soft)}.ql-tnode.current .ql-tlabel{font-weight:500}.ql-tnode.d1{padding-left:24px}.ql-tchev{width:16px;color:var(--accent);flex-shrink:0;display:flex}.ql-tchev svg{transition:transform .15s}.ql-tico{color:var(--accent);flex-shrink:0}.ql-tnode.leaf .ql-tico{color:var(--ink-3)}.ql-tnode.leaf.current .ql-tico{color:var(--accent)}.ql-tlabel{text-overflow:ellipsis;overflow:hidden}.ql-tnode.new .ql-tlabel:after{content:"NEW";letter-spacing:.08em;color:var(--green);margin-left:8px;font-size:9px;font-weight:700}.ql-sb-foot{border-top:1px solid var(--line);flex-shrink:0;margin-top:8px;padding:14px 8px 4px}.ql-foot-title{margin-bottom:5px;font-size:14px;font-weight:600;display:block}.ql-foot-body{color:var(--ink-2);font-size:12.5px;line-height:1.5;display:block}.ql-foot-body a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.ql-main{background:var(--paper);border-radius:8px;flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.ql-crumb{border-bottom:1px solid var(--line);height:38px;color:var(--ink-2);flex-shrink:0;align-items:center;gap:4px;padding:0 14px 0 18px;font-size:12.5px;display:flex}.ql-crumb>*{white-space:nowrap}.ql-crumb b{color:var(--ink);text-overflow:ellipsis;min-width:0;font-weight:500;overflow:hidden}.ql-crumb .sep{color:var(--ink-3);opacity:.6;padding:0 2px}.ql-crumb .spacer{flex:1}.ql-crumb-btn{height:26px;color:var(--ink-2);border-radius:6px;align-items:center;gap:6px;padding:0 9px;font-size:12px;font-weight:500;display:inline-flex}.ql-crumb-btn:hover{background:var(--accent-hover);color:var(--ink)}.ql-crumb-btn svg{width:13px;height:13px}.ql-panels{flex:1;min-height:0;display:flex;overflow:hidden}.ql-panel{flex:1;min-width:0;display:flex;overflow:hidden}.ql-read{overscroll-behavior:contain;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:transparent transparent;flex:1;min-width:0;overflow-y:auto}.ql-main:hover .ql-read{scrollbar-color:#7585dc33 transparent}.ql-status{height:30px;color:var(--ink-2);border-top:1px solid var(--line);background:#ffffff04;flex-shrink:0;justify-content:space-between;align-items:center;gap:14px;padding:0 10px 0 8px;font-size:11px;display:flex}.ql-status-l,.ql-status-r{white-space:nowrap;align-items:center;display:inline-flex}.ql-status-item{height:22px;color:var(--ink-2);font-variant-numeric:tabular-nums;border-radius:5px;align-items:center;padding:0 8px;text-decoration:none;display:inline-flex}.ql-status-item:hover{background:var(--accent-hover);color:var(--ink)}.ql-status-div{background:var(--line);width:1px;height:12px;margin:0 6px}.ql-status-dot{background:var(--green);border-radius:50%;width:7px;height:7px;margin-right:7px;box-shadow:0 0 6px #57d45c99}.ql-cmd{z-index:100;background:#00000073;place-items:start center;padding-top:14vh;display:grid;position:fixed;inset:0}.ql-cmd-box{background:var(--popup);border:1px solid var(--line);border-radius:12px;width:620px;max-width:92vw;overflow:hidden;box-shadow:0 30px 80px -10px #000000b3}.ql-cmd-in{border-bottom:1px solid var(--line);align-items:center;gap:10px;height:52px;padding:0 16px;display:flex}.ql-cmd-in input{color:var(--ink);font:inherit;background:0 0;border:none;outline:none;flex:1;font-size:15px}.ql-cmd-in svg{color:var(--accent)}.ql-cmd-sec{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);padding:10px 14px 4px;font-size:11px;font-weight:600}.ql-cmd-it{color:var(--ink);cursor:pointer;align-items:center;gap:10px;padding:8px 14px;font-size:13.5px;display:flex}.ql-cmd-it:hover,.ql-cmd-it.sel{background:var(--accent-hover)}.ql-cmd-it svg{color:var(--accent);flex-shrink:0}.ql-cmd-it small{color:var(--ink-2);margin-left:auto;font-size:11.5px}.ql-cmd-foot{border-top:1px solid var(--line);color:var(--ink-2);gap:14px;padding:8px 14px;font-size:11px;display:flex}.ql-cmd-foot kbd{background:var(--active);border-radius:3px;margin-right:4px;padding:1px 5px}html.is-max .stage.floating{padding:0}html.is-max .stage.floating .ql{max-width:none;height:100dvh;box-shadow:none;border-radius:0}a.ql-tnode,a.ql-newq,a.ql-cmd-it,a.ql-crumb-btn{color:inherit;text-decoration:none}.ql-tsec>summary{width:100%;list-style:none}.ql-tsec>summary::-webkit-details-marker{display:none}.ql-tsec:not([open])>summary .ql-tchev svg{transform:rotate(-90deg)}.ql-crumb .crumb-link{color:inherit;text-decoration:none}.ql-crumb .crumb-link:hover{color:var(--ink)}.ql-tl a.r{display:block}@media (width<=860px){.stage.floating{padding:0}.stage.floating .ql{border-radius:0;max-width:none;height:100dvh}.ql-h-link:not(.primary),.ql-crumb .crumb-section,.ql-crumb-btn .lbl{display:none}.ql-crumb{padding-right:8px}.doc{padding:24px 18px 64px}}.ql-cookie{z-index:90;box-sizing:border-box;background:var(--paper);border:1px solid var(--line);max-width:520px;color:var(--ink);border-radius:10px;align-items:center;gap:12px;padding:10px 10px 10px 16px;font-size:13px;line-height:1.4;animation:.3s ease-out ql-cookie-in;display:flex;position:fixed;bottom:47px;right:16px;box-shadow:0 8px 24px -6px #00000080}@keyframes ql-cookie-in{0%{opacity:0;transform:translateY(16px)}}@media (prefers-reduced-motion:reduce){.ql-cookie{animation:none}}.ql-cookie[hidden]{display:none}.ql-cookie-actions{flex-shrink:0;gap:8px;display:flex}.ql-cookie .btn.sm{box-sizing:border-box;cursor:pointer;height:32px;font-size:13px}.ql-cookie .btn.sm:not(.primary){color:var(--ink);background:0 0}@media (width>=861px){.ql-cookie{bottom:max(71px,50vh - 553px)}html.is-max .ql-cookie{bottom:47px}}@media (width<=599px){.ql-cookie{flex-direction:column;align-items:stretch;max-width:none;padding:12px 16px;left:16px}.ql-cookie-actions{justify-content:flex-end}}.ql-cookie p{flex:1;margin:0}.ql-cookie a{color:var(--ink);text-underline-offset:2px;text-decoration:underline}.ql-cmd-hit{flex-direction:column;gap:2px;min-width:0;display:flex}.ql-cmd-hit .ex{color:var(--ink-2);white-space:normal;margin:0;font-size:12px;line-height:1.4}.ql-cmd-hit .ex mark{color:var(--ink);background:#7585dc4d;border-radius:2px}.ql-cmd-it{text-decoration:none}.skip{z-index:200;background:var(--accent-fill);color:#fff;border-radius:6px;padding:8px 12px;font-size:13px;position:absolute;top:8px;left:-9999px}.skip:focus{left:12px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion:reduce){.ed .cursor{animation:none}.ql,.ql-tchev svg{transition:none}}.ql-burger{width:36px;height:36px;color:var(--accent);border-radius:6px;place-items:center;margin-right:6px;display:none}.ql-burger:hover{background:var(--accent-hover)}@media (width<=860px){.ql-tl{display:none}.ql{position:relative}.ql-sb{z-index:80;background:var(--bg);padding:8px;display:none;position:absolute;inset:44px 0 30px}.ql.sb-open .ql-sb{display:flex}}.ql{min-width:0;max-width:100%}.ql-rz{cursor:col-resize;touch-action:none;flex:0 0 7px;align-self:stretch;position:relative}.ql-rz:after{content:"";background:0 0;transition:background .12s;position:absolute;inset:0 3px}.ql-rz:hover:after,.ql-rz.dragging:after{background:var(--accent)}.ql-rz:focus-visible{outline:none}.ql-rz:focus-visible:after{background:var(--accent)}body.ql-resizing{cursor:col-resize;user-select:none}@media (width>=861px){html.sb-hide .ql-sb,html.sb-hide .ql-rz-sb{display:none}}html.toc-hide .ql-toc,html.toc-hide .ql-rz-toc{display:none}html.toc-hide .ql-toc-toggle{color:var(--ink-3)}.ql-burger{display:grid}.stage{overflow-x:hidden}@media (width<=860px){.ql-h-actions .ql-hdiv{display:none}}.ql-tgroup{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);margin:14px 0 4px;padding:0 14px;font-size:11px;font-weight:600}@media (width<=480px){.ql-h{padding-left:6px}.ql-h-left{gap:6px}.ql-h-docs{display:none}.ql-logo{width:108px;height:auto}.ql-h-link.primary{margin-left:2px;padding:0 8px}}@media (width<=380px){.ql-logo{width:80px}.ql-burger{margin-right:0}}.doc{max-width:760px;color:var(--ink-2);margin:0 auto;padding:40px 40px 96px;font-size:15.5px;line-height:1.68}.doc-kick{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);align-items:center;gap:8px;margin-bottom:14px;font-size:12px;font-weight:600;display:inline-flex}.doc-kick .dot{background:var(--accent);opacity:.6;border-radius:50%;width:5px;height:5px}.doc h1{letter-spacing:-.025em;color:var(--ink);margin:0 0 14px;font-size:34px;font-weight:700;line-height:1.15}.doc .lede{color:var(--ink-2);margin:0 0 28px;font-size:17px;line-height:1.6}.doc h2{letter-spacing:-.015em;color:var(--ink);margin:44px 0 12px;padding-top:8px;scroll-margin-top:16px;font-size:22px;font-weight:600}.doc h3{color:var(--ink);margin:30px 0 8px;scroll-margin-top:16px;font-size:16.5px;font-weight:600}.doc h3 .num{background:var(--accent-soft);width:22px;height:22px;color:var(--accent);vertical-align:2px;border-radius:6px;place-items:center;margin-right:9px;font-size:12px;font-weight:700;display:inline-grid}.doc p{margin:0 0 14px}.doc strong{color:var(--ink);font-weight:600}.doc a{color:var(--accent);text-decoration:none}.doc p a,.doc li a,.doc td a{text-underline-offset:2px;text-decoration:underline}.doc ul{margin:0 0 16px;padding-left:22px}.doc li{margin-bottom:5px}.doc li::marker{color:var(--ink-3)}.doc code{font-family:var(--mono);color:var(--t-id);background:var(--hover);border-radius:4px;padding:1px 5px;font-size:.88em}.doc :not(pre)>code{overflow-wrap:break-word}.doc kbd.key{color:var(--ink);background:var(--active);border:1px solid var(--line);vertical-align:1px;border-bottom-width:2px;border-radius:5px;padding:1px 7px;font-family:Inter,sans-serif;font-size:11.5px;font-weight:600;line-height:1.5;display:inline-block}.ed{background:var(--editor-bg);border:1px solid var(--line);border-radius:8px;margin:16px 0 22px;position:relative;overflow:hidden}.ed-h{border-bottom:1px solid var(--line);height:32px;color:var(--ink-2);align-items:center;gap:8px;padding:0 8px 0 14px;font-size:11.5px;display:flex}.ed-h .spacer{flex:1}.ed-h .ql-crumb-btn{height:24px}.ed-h .ex-rejects{color:var(--error);font-weight:600}.vh{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ed-body:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.ed-body{font-family:var(--mono);padding:12px 0;font-size:14px;line-height:20px;display:flex;overflow-x:auto}.ed-gutter{text-align:right;color:var(--gutter);user-select:none;flex-direction:column;flex-shrink:0;padding:0 16px 0 14px;display:flex}.ed .cursor{background:var(--ink);vertical-align:-3px;width:1.5px;height:18px;margin-right:-1.5px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.ed-foot{border-top:1px solid var(--line);color:var(--ink-2);background:var(--hover);flex-wrap:wrap;align-items:center;gap:4px 10px;padding:8px 14px;font-size:12px;display:flex}.ed-foot .ok{color:var(--green);font-weight:700}.ed-foot .est{font-family:var(--mono);color:var(--ink-2);white-space:nowrap}.ed-key{background:var(--accent-soft);height:26px;color:var(--accent);border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.ed-key kbd{border:1px solid #7585dc66;border-radius:4px;padding:0 6px;font-family:Inter,sans-serif;font-size:11px;line-height:1.6}.ed-key:hover{background:#7585dc33}.doc .table-wrap{margin:10px 0 24px;overflow-x:auto}.doc table{border-collapse:collapse;width:100%;margin:0;font-size:13.5px}.doc th{text-align:left;color:var(--ink);background:var(--hover);border-bottom:1px solid var(--line);padding:9px 12px;font-size:12.5px;font-weight:600}.doc td{color:var(--ink-2);border-bottom:1px solid var(--line);vertical-align:top;padding:9px 12px}.doc td:first-child{color:var(--ink);font-weight:500}.banner{background:var(--accent-soft);color:var(--ink-2);border:1px solid #7585dc4d;border-radius:8px;gap:12px;margin:18px 0 22px;padding:12px 14px;font-size:14px;display:flex}.banner svg{color:var(--accent);flex-shrink:0;margin-top:2px}.banner b{color:var(--ink);font-weight:600}.banner.tip{background:#57d45c14;border-color:#57d45c47}.banner.tip svg{color:var(--green)}.conds{flex-direction:column;gap:4px;margin:6px 0 18px;padding:0;list-style:none;display:flex}.conds li{background:var(--hover);border-radius:6px;align-items:flex-start;gap:10px;padding:7px 10px;font-size:14px;display:flex}.conds li:before{content:"✓";color:var(--green);flex-shrink:0;font-weight:700}.shot{border:1px solid var(--line);background:var(--editor-bg);border-radius:10px;margin:8px 0 26px;overflow:hidden}.shot img{width:100%;display:block}.shot figcaption{color:var(--ink-2);border-top:1px solid var(--line);padding:8px 12px;font-size:12px}.doc-nav{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:10px;margin-top:56px;padding-top:22px;display:grid}.doc-nav a{border:1px solid var(--line);color:var(--ink);border-radius:8px;flex-direction:column;gap:3px;padding:12px 14px;text-decoration:none;display:flex}.doc-nav a:hover{background:var(--accent-hover);text-decoration:none}.doc-nav a.next{text-align:right}.doc-nav small{color:var(--ink-2);font-size:11.5px}.doc-nav span{font-size:14px;font-weight:500}.ql-toc{width:var(--ql-toc-w,224px);border-left:1px solid var(--line);overscroll-behavior:contain;flex-shrink:0;padding:22px 8px 22px 16px;font-size:12.5px;overflow-y:auto}.ql-toc-t{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0 0 10px 8px;font-size:11px;font-weight:600}.ql-toc a{color:var(--ink-2);border-left:2px solid #0000;border-radius:6px;margin-left:-2px;padding:5px 8px;line-height:1.4;text-decoration:none;display:block}.ql-toc a.d1{padding-left:20px}.ql-toc a:hover{color:var(--ink);background:var(--accent-hover)}.ql-toc a.on{color:var(--ink);border-left-color:var(--accent);background:var(--accent-hover)}.ql-toc-meta{border-top:1px solid var(--line);color:var(--ink-2);margin:22px 0 0 8px;padding-top:14px;font-size:11.5px;line-height:1.7}.ql-toc-meta a{color:var(--accent);border:0;margin:0;padding:0;display:inline}@media (width<=1180px){.ql-toc,.ql-rz-toc,.ql-toc-toggle{display:none}}@media (width<=860px){.ql-sb,.ql-rz-sb{display:none}}.doc pre.astro-code{border:1px solid var(--line);font-family:var(--mono);counter-reset:ln;border-radius:8px;margin:16px 0 22px;padding:12px 16px 12px 0;font-size:13px;line-height:20px;overflow-x:auto;background:var(--editor-bg)!important}.doc pre.astro-code code{display:block}.doc pre.astro-code .line{width:100%;display:inline-block}.doc pre.astro-code .line:before{counter-increment:ln;content:counter(ln);text-align:right;width:44px;color:var(--gutter);user-select:none;padding-right:16px;display:inline-block}.doc pre.astro-code .line:last-child:empty{display:none}.doc pre.astro-code[data-language=text]{padding-left:16px}.doc pre.astro-code[data-language=text] code{white-space:pre-wrap;overflow-wrap:anywhere}.doc pre.astro-code[data-language=text] .line:before{content:none}.ed pre{color:var(--code-ink);white-space:pre;margin:0}.ed .ghost{color:var(--ghost);font-style:italic}.banner.caution{background:#e5b56717;border-color:#e5b56752}.banner.caution svg{color:var(--amber)}.doc .ed+p,.doc pre.astro-code+p{margin-top:-4px}.doc td .key+.key{margin-left:3px}.doc .lede .key{font-size:12px}@media (width<=860px){.ed pre,.doc pre.astro-code code{white-space:pre-wrap;overflow-wrap:anywhere}.ed-gutter{display:none}.ed pre{padding-left:14px}}@media (width<=480px){.doc{padding:20px 16px 48px;font-size:15px}.doc h1{font-size:26px}.doc .lede{font-size:16px}.doc h2{font-size:20px}}.ex{margin:16px 0 26px}.ex .ed{border-bottom-right-radius:0;border-bottom-left-radius:0;margin:0}.ex-result{border:1px solid var(--line);background:var(--editor-bg);border-top:0;border-radius:0 0 8px 8px;overflow:hidden}.ex-bar{border-bottom:1px solid var(--line);min-height:36px;color:var(--ink-2);background:var(--hover);align-items:center;gap:8px;padding:0 8px 0 14px;font-size:11.5px;display:flex}.ex-bar .spacer{flex:1}.ex-btn{background:var(--accent-soft);height:26px;color:var(--accent);cursor:pointer;border:0;border-radius:6px;padding:0 10px;font:600 12px Inter,sans-serif}.ex-btn:hover{background:#7585dc33}.ex-btn:disabled{opacity:.6;cursor:progress}.ex-btn.ex-reset{color:var(--ink-2);background:0 0}.ex-live{display:none}.ex.is-ran .ex-live{display:block}.ex.is-ran .ex-static{display:none}.ex.is-ran .ex-label{visibility:hidden}.doc .ex-msg{color:var(--ink-2);margin:0;padding:12px 14px;font-size:13px}.ex-msg.ex-err{font-family:var(--mono);color:var(--error);white-space:pre-wrap;font-size:12.5px}.ex-note{border-top:1px solid var(--line);color:var(--ink-2);margin:0;padding:8px 14px;font-size:11.5px}.ex-table{max-height:360px;font-size:12.5px;overflow-x:auto}.doc .ex-table table{border-collapse:collapse;width:auto;min-width:100%;margin:0;font-size:12.5px}.doc .ex-table th{text-align:left;height:32px;color:var(--ink);background:var(--raised);border:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;padding:0 12px;font-weight:600;position:sticky;top:0}.doc .ex-table td{height:30px;font-family:var(--mono);color:var(--ink);border:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;padding:0 12px;font-size:12.5px}.doc .ex-table td.null{color:var(--ink-2);font-style:italic}.doc .ex-table td.idx,.doc .ex-table th.idx{text-align:right;width:36px;color:var(--ink-2);background:var(--raised)}.ex-count{color:var(--ink-2);padding:6px 14px;font-size:11.5px}.doc .sources{border-top:1px solid var(--line);color:var(--ink-2);margin-top:40px;padding-top:8px;font-size:13px}.doc .sources h2{font-size:15px}[data-theme=light] .doc :is(pre.astro-code,.ed pre) [style*=--shiki-light],[data-theme=light] .doc pre.astro-code{color:var(--shiki-light,var(--code-ink))!important}.doc pre code{color:inherit;background:0 0;padding:0}.spec{background:var(--bg);border:1px solid var(--line);border-radius:8px;margin:16px 0 22px;overflow:hidden}.spec>figcaption,.spec-cap{color:var(--ink-2);border-top:1px solid var(--line);background:var(--hover);padding:8px 14px;font-size:12px}.spec-pad{padding:14px}.spec.inline{vertical-align:top;margin-right:14px;display:inline-block}.spec-lbl{border-bottom:1px solid var(--line);height:32px;color:var(--ink-2);align-items:center;gap:8px;padding:0 14px;font-size:11.5px;display:flex}.spec-lbl .spacer{flex:1}.sq-err{text-decoration:underline wavy var(--error);text-decoration-skip-ink:none;text-underline-offset:3px}.sq-warn{text-decoration-skip-ink:none;text-underline-offset:3px;text-decoration:underline wavy #cca700}.sq-info{text-decoration-skip-ink:none;text-underline-offset:3px;text-decoration:underline wavy #3794ff}.sq-hl{background:#7585dc38;border-radius:2px;box-shadow:0 0 0 1px #7585dc59}.sq-sel{background:#7585dc4d}.ed-body{position:relative}.ed-over{padding:2px 16px 12px 60px}.ed-over>*{margin-left:min(calc(var(--col,0) * 8.4px), calc(100% - 430px))}@font-face{font-family:codicon;font-display:block;src:url(/assets/codicon.DF1abBS2.ttf)format("truetype")}.cmp{background:var(--widget);border:1px solid var(--line);width:430px;max-width:100%;font-family:var(--mono);color:var(--code-ink);border-radius:3px;font-size:14px;overflow:hidden;box-shadow:0 8px 24px #00000080}.cmp-it{white-space:nowrap;align-items:center;height:24px;padding:0 10px 0 4px;display:flex}.cmp-it.sel{background:var(--selection)}.cmp-it .ico{text-align:center;-webkit-font-smoothing:antialiased;flex-shrink:0;width:16px;margin:0 4px 0 2px;font-family:codicon;font-size:16px;font-weight:400;line-height:16px}.cmp-it .ico.fn{color:var(--symbol-fn)}.cmp-it .ico.col,.cmp-it .ico.struct{color:var(--t-id)}.cmp-it .ico.tbl{color:var(--t-variable)}.cmp-it .lbl{text-overflow:ellipsis;overflow:hidden}.cmp-it .lbl b{color:var(--t-key);font-weight:700}.cmp-it .det{opacity:.7;text-overflow:ellipsis;margin-left:auto;padding-left:1.1em;font-size:85%;overflow:hidden}.cmp-doc{border-top:1px solid var(--line);color:var(--ink-2);padding:8px 10px;font-family:Inter,sans-serif;font-size:12px;line-height:1.5}.cmp-doc b{color:var(--ink)}.hov{background:var(--widget);border:1px solid var(--line);min-width:220px;max-width:420px;color:var(--ink-2);border-radius:4px;font-family:Inter,sans-serif;font-size:12.5px;display:inline-block;box-shadow:0 8px 24px #00000080}.hov-t{color:var(--ink);font-weight:600;font-family:var(--mono);padding:8px 12px 4px;font-size:12.5px}.hov-t .ty{color:var(--t-type);margin-left:8px;font-weight:400}.hov table{border-collapse:collapse;margin:4px 8px 8px;font-size:12px}.hov th,.hov td{text-align:left;color:var(--ink-2);background:0 0;border:0;padding:2px 6px;font-size:12px;font-weight:400}.hov th{color:var(--ink);font-weight:600}.hov td code{font-family:var(--mono);color:var(--t-id);background:0 0;padding:0}.hov-b{padding:0 12px 10px;line-height:1.5}.hov-b code{font-family:var(--mono);color:var(--t-id)}.hov-sig{font-family:var(--mono);color:var(--code-ink);border-bottom:1px solid var(--line);padding:8px 12px;font-size:12.5px}.hov-sig b{color:var(--ink);background:#7585dc59;border-radius:2px;padding:0 2px;font-weight:400}.menu{background:var(--popup);border:1px solid var(--line);border-radius:9px;flex-direction:column;min-width:200px;max-width:360px;padding:5px;font-family:Inter,sans-serif;font-size:13px;display:inline-flex;box-shadow:0 16px 40px -8px #0009}.menu-t{color:var(--ink-2);padding:6px 10px 4px;font-size:11.5px}.menu-it{color:var(--ink);white-space:nowrap;border-radius:6px;align-items:center;gap:9px;padding:7px 10px;display:flex}.menu-it.sel{background:var(--accent-fill);color:#fff}.menu-it svg,.menu-it .mi{width:16px;height:16px;color:var(--accent);flex-shrink:0}.menu-it.sel svg,.menu-it.sel .mi{color:#fff}.menu-it .hint{color:var(--ink-2);font-size:11px;font-family:var(--mono);margin-left:auto;padding-left:18px}.menu-it.sel .hint{color:#fff}.menu-it .sub{color:var(--ink-2);margin-left:auto;padding-left:12px}.menu-sep{background:var(--line);height:1px;margin:4px 6px}.menu-it.dim{color:var(--ink-3)}.dlg{background:var(--dialog);border:1px solid var(--line);border-radius:12px;width:560px;max-width:100%;margin:0 auto;font-family:Inter,sans-serif;box-shadow:0 30px 80px -10px #000000b3}.dlg-h{color:var(--ink);justify-content:space-between;align-items:center;padding:16px 18px 6px;font-size:16px;font-weight:600;display:flex}.dlg-h .x{color:var(--ink-2);font-size:18px;line-height:1}.dlg-b{color:var(--ink-2);padding:8px 18px 12px;font-size:13.5px;line-height:1.6}.dlg-b p{margin:0 0 10px}.dlg-b p:last-child{margin-bottom:0}.dlg-b b,.dlg-b strong{color:var(--ink);font-weight:600}.dlg-f{flex-wrap:wrap;align-items:center;gap:10px;padding:10px 18px 18px;display:flex}.dlg-f .spacer{flex:1}.btn{border:1px solid var(--line);height:36px;color:var(--ink);background:var(--hover);white-space:nowrap;border-radius:6px;align-items:center;gap:7px;padding:0 16px;font-family:Inter,sans-serif;font-size:13.5px;font-weight:600;display:inline-flex}.btn.primary{background:var(--accent-fill);border-color:var(--accent-fill);color:#fff}.btn.primary:hover{filter:brightness(.9)}.btn.outline{color:var(--accent-text);background:0 0;border-color:#7585dc80}.btn.sm{height:30px;padding:0 12px;font-size:12.5px}.btn.disabled{opacity:.45}.fld{background:var(--hover);border-bottom:1px solid var(--line);border-radius:6px;align-items:center;gap:8px;padding:8px 12px;display:flex;position:relative}.fld .lab{color:var(--ink-2);font-size:10.5px;position:absolute;top:5px;left:12px}.fld .val{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;flex:1;padding-top:12px;font-family:Inter,sans-serif;font-size:14px;overflow:hidden}.fld .unit{color:var(--ink-2);padding-top:10px;font-size:13px}.fld .tag{color:var(--accent);white-space:nowrap;border:1px solid #7585dc80;border-radius:999px;margin-top:8px;padding:2px 9px;font-size:11.5px}.fld.sel .val:after{content:"▾";color:var(--ink-2);position:absolute;right:12px}.fld.dis{opacity:.5}.fld-help{color:var(--ink-2);background:var(--hover);border-radius:0 0 6px 6px;margin-bottom:8px;padding:6px 12px 8px;font-size:12px}.fld-help.warn{color:var(--amber)}.note{color:var(--ink-2);background:#7585dc1f;border-radius:6px;margin:10px 0;padding:10px 14px;font-size:13px}.note.ok{background:#57d45c1a;gap:10px;display:flex}.note.ok svg{color:var(--green);flex-shrink:0;margin-top:2px}.meter{color:var(--ink-2);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;margin:6px 0 2px;font-size:12px;display:flex}.meter-bar{background:var(--line);border-radius:2px;height:4px;margin-bottom:14px;overflow:hidden}.meter-bar i{background:var(--green);height:100%;width:var(--w,0%);display:block}.pop{background:var(--dialog);border:1px solid var(--line);border-radius:12px;width:260px;padding:10px 12px 12px;font-family:Inter,sans-serif;display:inline-block;box-shadow:0 16px 40px -8px #0009}.pop .fld{margin-bottom:8px}.pop .fld-help{margin:-8px 0 8px}.pop hr{border:0;border-top:1px solid var(--line);margin:10px 0}.set{padding:6px 18px 12px;font-family:Inter,sans-serif}.set-h{justify-content:space-between;align-items:flex-start;padding:14px 0 6px;display:flex}.set-h b{color:var(--ink);font-size:15px;font-weight:600;display:block}.set-h span{color:var(--ink-2);margin-top:2px;font-size:12.5px;display:block}.set-h .chev{color:var(--ink-2);font-size:13px}.set-g{color:var(--ink);margin:16px 0 4px;font-size:13.5px;font-weight:600}.set-sub{color:var(--ink);margin:12px 0 2px;font-size:13.5px}.set-sub+.set-hint{margin-top:0}.set-hint{color:var(--ink-2);margin:0 0 10px;font-size:12.5px}.set-row{align-items:flex-start;gap:12px;padding:9px 0;display:flex}.set-row .ctl{flex-shrink:0;margin-top:2px}.set-row .txt{color:var(--ink);font-size:13.5px}.set-row .txt small{color:var(--ink-2);margin-top:2px;font-size:12.5px;line-height:1.45;display:block}.tog{background:var(--line);border-radius:7px;width:34px;height:14px;display:inline-block;position:relative}.tog:after{content:"";background:#bbb;border-radius:50%;width:20px;height:20px;position:absolute;top:-3px;left:-2px;box-shadow:0 1px 3px #00000080}.tog.on{background:#7585dc80}.tog.on:after{background:var(--accent);left:16px}.rad{border:2px solid var(--line);border-radius:50%;width:18px;height:18px;display:inline-block;position:relative}.rad.on{border-color:var(--accent)}.rad.on:after{content:"";background:var(--accent);border-radius:50%;position:absolute;inset:3px}.chk{border:2px solid var(--line);color:#fff;border-radius:3px;place-items:center;width:18px;height:18px;font-size:12px;display:inline-grid}.chk.on{background:var(--accent-fill);border-color:var(--accent-fill)}.set .fld{margin:6px 0 0}.set .fld+.fld-help{margin-bottom:6px}.set-foot{color:var(--ink-2);border-top:1px solid var(--line);margin-top:12px;padding:10px 0 4px;font-size:12px;font-style:italic}.set-nav{border-bottom:1px solid var(--line);display:flex}.set-nav aside{border-right:1px solid var(--line);flex-shrink:0;width:170px;padding:8px 0}.set-nav aside a{color:var(--ink-2);padding:9px 18px;font-size:13.5px;text-decoration:none;display:block}.set-nav aside a.on{color:var(--ink);background:var(--active)}.set-nav .set{flex:1;min-width:0}.grid{font-family:Inter,sans-serif;font-size:12.5px;overflow-x:auto}.grid table{border-collapse:collapse;width:100%;margin:0}.grid th{text-align:left;height:34px;color:var(--ink);background:var(--raised);border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;padding:0 12px;font-size:12.5px;font-weight:600;position:sticky;top:0}.grid th .flt{float:right;color:var(--ink-2);margin-left:10px;font-weight:400}.grid td{height:32px;color:var(--ink);border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;padding:0 12px}.grid td.n,.grid th.n{text-align:right;font-variant-numeric:tabular-nums}.grid td.null{color:var(--ink-2);font-style:italic}.grid td.idx{text-align:right;width:36px;color:var(--ink-2);background:var(--raised)}.grid td.diff-a{background:#f14c4c2e}.grid td.diff-b{background:#57d45c29}.grid tr.diff-del td:not(.idx){background:#f14c4c29}.grid tr.diff-add td:not(.idx){background:#57d45c24}.grid tr.diff-chg td:not(.idx){background:#f1c44c1f}.grid td.diff-chg{background:#f1c44c42!important}.grid tr.diff-del td.idx{color:var(--error)}.grid tr.diff-add td.idx{color:var(--green)}.grid tr.diff-chg td.idx{color:var(--amber)}.grid td s{color:var(--error)}.grid td b{color:var(--green);font-weight:500}.grid-foot{border-top:1px solid var(--line);background:var(--raised);height:32px;color:var(--ink-2);align-items:center;gap:4px;padding:0 4px;font-size:12px;display:flex}.grid-foot .gf-btn{width:28px;height:28px;color:var(--accent);border-radius:4px;flex-shrink:0;place-items:center;display:inline-grid}.grid-foot .gf-pager{align-items:center;display:inline-flex}.grid-foot .gf-page{min-width:24px;height:24px;color:var(--ink-2);place-items:center;display:inline-grid}.grid-foot .gf-page.on{color:var(--ink);font-weight:700}.grid-foot .gf-page.arrow{opacity:.7}.grid-foot .gf-size{height:28px;color:var(--ink-2);border-radius:4px;align-items:center;gap:2px;padding:0 8px;display:inline-flex}.grid-foot .gf-count{white-space:nowrap;padding-left:4px}.grid-foot .spacer{flex:1}.sbar{background:var(--raised);border-top:1px solid var(--line);height:38px;color:var(--ink-2);align-items:center;gap:10px;padding:0 0 0 12px;font-family:Inter,sans-serif;font-size:12.5px;display:flex}.sbar .cfg{color:var(--ink-2)}.sbar .st{align-items:center;gap:6px;font-weight:600;display:inline-flex}.sbar .st.ok{color:var(--green)}.sbar .st.err{color:var(--error)}.sbar .st.warn{color:var(--amber)}.sbar .msg{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.sbar .div{background:var(--line);width:1px;height:14px}.sbar .act{color:var(--accent);white-space:nowrap;font-weight:600}.sbar .run{background:var(--accent-fill);color:#fff;white-space:nowrap;align-items:center;gap:6px;height:38px;margin-left:auto;padding:0 14px;font-weight:600;display:inline-flex}.sbar .run.dis{background:#7585dc66}.sbar .run.dev{background:var(--green);color:#111}@media (width<=600px){.sbar{flex-wrap:wrap;row-gap:6px;height:auto;padding:8px 12px 0;line-height:1.4}.sbar .div{display:none}.sbar .msg{white-space:normal;flex:0 auto}.sbar .run{flex:1 0 100%;justify-content:center;height:34px;margin:0 -12px}}.tree{width:280px;max-width:100%;padding:8px 6px;font-family:Inter,sans-serif;font-size:14px}.tree .tn{height:36px;color:var(--ink);white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:0 8px;display:flex;position:relative}.tree .tn.sel{background:var(--active)}.tree .tn.hl{background:var(--accent-soft)}.tree .tn .chev{width:16px;color:var(--accent);text-align:center;flex-shrink:0;font-size:10px}.tree .tn .ico{color:var(--accent);flex-shrink:0;display:flex}.tree .tn .ico svg{width:17px;height:17px}.tree .tn .lbl{text-overflow:ellipsis;overflow:hidden}.tree .tn .badge{color:var(--ink-2);background:var(--active);font-size:10px;font-weight:700;font-family:var(--mono);border-radius:4px;margin-left:auto;padding:2px 6px}.tree .tn .dots{color:var(--accent);background:var(--accent-soft);border-radius:6px;place-items:center;width:24px;height:24px;margin-left:auto;display:grid}.tree .tn .tip{background:var(--accent-fill);color:#fff;border-radius:4px;padding:3px 8px;font-size:10.5px;font-weight:600;position:absolute;top:6px;right:36px}.tree .sec{color:var(--ink-2);align-items:center;gap:8px;padding:8px 8px 4px;font-size:14px;font-weight:500;display:flex}.tree .sec:after{content:"";background:var(--line);flex:1;height:1px}.det{font-family:Inter,sans-serif}.det-tabs{border-bottom:1px solid var(--line);gap:4px;padding:0 12px;display:flex}.det-tabs span{letter-spacing:.04em;color:var(--ink-2);border-bottom:2px solid #0000;padding:12px 14px;font-size:13px;font-weight:600}.det-tabs span.on{color:var(--ink);border-bottom-color:var(--accent)}.det h4{color:var(--ink);margin:16px 18px 6px;font-size:15px;font-weight:600}.det-row{grid-template-columns:200px 1fr;gap:6px;padding:7px 18px;font-size:13.5px;display:grid}.det-row span:first-child{color:var(--ink-2)}.det-row span:last-child{color:var(--ink)}.det-row code{font-family:var(--mono);color:var(--t-id);font-size:12.5px}.det-row .lbls{gap:12px;font-size:12.5px;display:flex}.det-row .lbls i{color:var(--ink-2);font-style:normal}.det-row .lbls i b{color:var(--ink);font-weight:400}.det-pad{height:10px}.pnl{background:var(--paper);font-family:Inter,sans-serif}.pnl-h{border-bottom:1px solid var(--line);letter-spacing:.06em;height:48px;color:var(--ink);justify-content:space-between;align-items:center;padding:0 16px;font-size:14px;font-weight:600;display:flex}.pnl-h .x{color:var(--ink-2);font-size:18px}.pnl-b{color:var(--ink-2);padding:14px 16px;font-size:13px}.pnl-b .fld{margin-bottom:10px}.pnl-row{color:var(--ink-2);justify-content:space-between;align-items:center;padding:6px 0;font-size:13px;display:flex}.seg{border:1px solid var(--line);border-radius:6px;font-size:12px;display:inline-flex;overflow:hidden}.seg span{color:var(--ink-2);padding:4px 10px}.seg span.on{background:var(--active);color:var(--ink)}.card{border:1px solid var(--line);border-radius:8px;margin:12px 0;padding:14px 16px}.card h5{color:var(--ink);margin:0 0 2px;font-size:15px;font-weight:600}.card .sub{color:var(--ink-2);margin-bottom:10px;font-size:12px}.card .kv{padding:4px 0;font-size:13px}.card .kv b{color:var(--ink);font-weight:600}.card .kv .num{font-family:var(--mono);color:var(--green)}.card .box{border:1.5px solid var(--green);border-radius:6px;margin:8px 0 12px;padding:10px 12px}.card .cte{border-left:3px solid var(--green);margin:8px 0;padding:4px 0 4px 12px;font-size:13px}.card .cte b{color:var(--ink);margin-bottom:2px;font-weight:600;display:block}.card .cte .pill{border:1px solid var(--line);color:var(--ink-2);border-radius:999px;margin-left:6px;padding:1px 8px;font-size:10.5px;display:inline-block}.card .cte .pill.hot{color:var(--amber);border-color:#e5b56799}.chat{flex-direction:column;gap:10px;padding:14px 16px;font-family:Inter,sans-serif;display:flex}.msg{max-width:88%;color:var(--ink);border-radius:10px;padding:9px 12px;font-size:13.5px;line-height:1.55}.msg.user{background:var(--accent-soft);border:1px solid #7585dc59;align-self:flex-end}.msg.ai{background:var(--hover);border:1px solid var(--line);align-self:flex-start}.msg .tool{color:var(--ink-2);font-size:12px;font-family:var(--mono);align-items:center;gap:6px;margin:2px 0;display:inline-flex}.msg .tool:before{content:"";background:var(--green);border-radius:50%;width:6px;height:6px}.chat-in{border:1px solid var(--line);color:var(--ink-2);border-radius:10px;align-items:center;gap:8px;margin-top:6px;padding:8px 12px;font-size:13.5px;display:flex}.chat-in .mode{color:var(--accent-text);border:1px solid #7585dc80;border-radius:999px;margin-left:auto;padding:2px 8px;font-size:11px}@media (width<=860px){.dlg-f .btn{flex:auto;justify-content:center}.dlg-f .spacer{display:none}.ed-over{padding-left:14px}.ed-over>*{max-width:100%;margin-left:0!important}.cmp,.hov,.menu,.pop{width:auto;max-width:100%}}
