html{scroll-behavior:smooth}body{margin:0}.ns-root{--accent:#0d6efd;--ink:#1c1f24;--ink-faint:#a39c8f;--placeholder:#c9c2b4;--paper-bg:#faf8f5;--edit-btn:#bbb3a3;--edit-hover:#ece6d8;--chip-border:#e1dcd1;--chip-hover:#f6f3eb;width:100%;font-family:Fraunces,serif}html.dark .ns-root{--ink:#eef0f3;--ink-faint:#6b7280;--placeholder:#565d68;--paper-bg:#1a1d22;--edit-btn:#4b5563;--edit-hover:#374151;--chip-border:#374151;--chip-hover:#2a2d33}.ns-layout-lines .ns-letter{flex-direction:column;gap:14px;display:flex}.ns-layout-paragraph .ns-letter{display:block}.ns-welcome{margin-bottom:6px}.ns-welcome-text{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);font-family:Inter,sans-serif;font-size:13px}.ns-layout-lines .ns-line{flex-wrap:wrap;align-items:baseline;gap:0;min-height:46px;line-height:1.6;display:flex}.ns-layout-paragraph .ns-line{line-height:1.6;display:inline}.ns-layout-paragraph .ns-prose,.ns-layout-paragraph .ns-input-wrap,.ns-layout-paragraph .ns-filled-value{margin-right:.2em}.ns-prose{color:var(--ink,#1a1a1a);white-space:pre-wrap;font-family:Fraunces,serif;font-size:clamp(19px,2.6vw,25px)}.ns-cursor{color:var(--accent,#b8935f);margin-left:1px;font-family:Fraunces,serif;font-size:clamp(19px,2.6vw,25px);animation:.9s step-start infinite ns-blink;display:inline-block}@keyframes ns-blink{0%,to{opacity:1}50%{opacity:0}}.ns-input-wrap{align-items:baseline;gap:6px;display:inline-flex}.ns-input{color:var(--ink,#1a1a1a);border:none;border-bottom:2px solid var(--ink,#1a1a1a);background:0 0;outline:none;padding:0 2px 1px;font-family:Fraunces,serif;font-size:clamp(19px,2.6vw,25px);font-style:italic;transition:min-width .15s,border-color .2s}.ns-input::placeholder{color:var(--placeholder);font-style:italic}.ns-input--error{border-bottom-color:var(--error,#b3492f)}.ns-enter-btn{background:var(--ink,#1a1a1a);color:var(--paper-bg);cursor:pointer;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;margin-bottom:2px;font-size:13px;transition:transform .15s,background .15s;display:inline-flex}.ns-enter-btn:hover{background:var(--accent,#b8935f);transform:translateY(-1px)}.ns-filled-wrap{align-items:center;gap:5px;display:inline-flex}.ns-filled-value{color:var(--ink,#1a1a1a);font-family:Fraunces,serif;font-size:clamp(19px,2.6vw,25px);font-style:italic;font-weight:500}.ns-edit-btn{color:var(--edit-btn);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;padding:3px;transition:color .15s,background .15s;display:inline-flex}.ns-edit-btn:hover{color:var(--ink,#1a1a1a);background:var(--edit-hover)}.ns-chips-wrap{flex-wrap:wrap;gap:8px;display:inline-flex}.ns-chip{color:var(--ink,#1a1a1a);border:1px solid var(--chip-border);cursor:pointer;background:0 0;border-radius:100px;padding:4px 14px 6px;font-family:Fraunces,serif;font-size:clamp(17px,2vw,21px);font-style:italic;transition:all .2s}.ns-chip:hover{background:var(--chip-hover);border-color:var(--ink,#1a1a1a)}.ns-chip--active{background:var(--ink,#1a1a1a);color:var(--paper-bg);border-color:var(--ink,#1a1a1a)}.ns-error-text{color:var(--error,#b3492f);width:100%;margin-top:-8px;font-family:Inter,sans-serif;font-size:12.5px;font-style:italic}.ns-done{flex-direction:column;gap:16px;margin-top:18px;animation:.4s ns-fade-up;display:flex}@keyframes ns-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.ns-divider{background:#e5ddcd;height:1px}.ns-done-text{color:#5b5648;font-family:Fraunces,serif;font-size:17px;line-height:1.7}.ns-done-actions{align-items:center;gap:18px;display:flex}.ns-cta{background:var(--ink,#1a1a1a);color:#faf8f5;letter-spacing:.02em;cursor:pointer;border:none;border-radius:4px;padding:13px 26px;font-family:Inter,sans-serif;font-size:13.5px;font-weight:600;transition:background .2s,transform .15s}.ns-cta:hover{background:var(--accent,#b8935f);transform:translateY(-1px)}.ns-reset{color:#a39c8f;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;font-family:Inter,sans-serif;font-size:12.5px;text-decoration:underline}.ns-reset:hover{color:var(--ink,#1a1a1a)}@media (prefers-reduced-motion:reduce){.ns-cursor,.ns-done{animation:none}}:root{--azure:#0d6efd;--azure-deep:#0b5ed7;--azure-soft:#e8f1ff;--azure-line:#cfe2ff;--paper:#fff;--paper-sunken:#f8f9fb;--ink:#1c1f24;--ink-soft:#565d68;--ink-faint:#8b929c;--rule:#e6e8ec;--error:#d63939;--success:#198754;--code-bg:#1c2128;--code-fg:#e6edf3;--code-rule:#30363d;--serif:"Fraunces", Georgia, serif;--sans:"Inter", -apple-system, sans-serif;--mono:"JetBrains Mono", monospace;--sidebar-w:264px;--toc-w:220px;--topnav-h:60px}html.dark{--paper:#14161a;--paper-sunken:#1a1d22;--ink:#eef0f3;--ink-soft:#abb2bd;--ink-faint:#6b7280;--rule:#2a2d33;--azure-soft:#0d6efd1f;--azure-line:#0d6efd4d}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;transition:background .2s,color .2s}a{color:inherit}button{font-family:inherit}code{font-family:var(--mono)}::selection{background:var(--azure);color:#fff}:focus-visible{outline:2px solid var(--azure);outline-offset:2px}.icon-btn{width:36px;height:36px;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.icon-btn:hover{background:var(--paper-sunken);color:var(--ink)}.btn{cursor:pointer;border:none;border-radius:6px;align-items:center;gap:6px;padding:9px 18px;font-size:13.5px;font-weight:600;text-decoration:none;display:inline-flex}.btn--primary{background:var(--ink);color:var(--paper)}html.dark .btn--primary{background:var(--azure);color:#fff}.btn--primary:hover{background:var(--azure-deep);color:#fff}.topnav{z-index:60;height:var(--topnav-h);background:var(--paper);border-bottom:1px solid var(--rule);position:sticky;top:0}.topnav-inner{justify-content:space-between;align-items:center;height:100%;padding:0 20px;display:flex}.topnav-left{align-items:center;gap:6px;display:flex}.menu-btn{display:none}.brand{align-items:center;gap:9px;margin-left:4px;text-decoration:none;display:flex}.brand-mark{background:var(--ink);width:28px;height:28px;color:var(--paper);font-family:var(--serif);border-radius:6px;justify-content:center;align-items:center;font-size:16px;font-style:italic;display:flex}html.dark .brand-mark{background:var(--azure)}.brand-name{font-family:var(--sans);letter-spacing:.01em;color:var(--ink);font-size:15px;font-weight:800}.brand-thin{color:var(--ink-faint);font-weight:400}.topnav-right{align-items:center;gap:4px;display:flex}.search-trigger{border:1px solid var(--rule);gap:8px;width:auto;padding:0 10px 0 12px}.search-trigger-label{color:var(--ink-faint);font-size:13.5px}.search-kbd{font-family:var(--mono);border:1px solid var(--rule);color:var(--ink-faint);border-radius:4px;padding:1px 6px;font-size:11px}.topnav-cta{margin-left:8px}@media (width<=880px){.menu-btn{display:inline-flex}.search-trigger-label,.search-kbd,.topnav-cta{display:none}}.docs-shell{min-height:100vh}.docs-body{grid-template-columns:var(--sidebar-w) minmax(0, 1fr) var(--toc-w);max-width:1480px;margin:0 auto;display:grid}@media (width<=1180px){.docs-body{grid-template-columns:var(--sidebar-w) minmax(0, 1fr)}.toc{display:none}}@media (width<=880px){.docs-body{grid-template-columns:minmax(0,1fr)}}.sidebar{border-right:1px solid var(--rule);top:var(--topnav-h);height:calc(100vh - var(--topnav-h));padding:20px 14px 60px;position:sticky;overflow-y:auto}.sidebar-section{margin-bottom:6px}.sidebar-toplinks{flex-direction:column;gap:2px;display:flex}.sidebar-toplink{text-align:left;width:100%;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:9px 10px;font-size:14px;font-weight:600;display:flex}.sidebar-toplink--active{background:var(--azure-soft);color:var(--azure)}.sidebar-toplink:disabled{cursor:default}.sidebar-toplink:disabled:hover{background:0 0}.sidebar-divider{background:var(--rule);height:1px;margin:14px 4px}.sidebar-group{margin:18px 0 4px}.sidebar-group-label{letter-spacing:.08em;color:var(--ink-faint);margin:0 0 6px;padding:0 10px;font-size:10.5px;font-weight:700}.sidebar-link{text-align:left;width:100%;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-left:2px solid #0000;border-radius:6px;margin-bottom:1px;padding:7px 10px 7px 14px;font-size:13.6px;display:block}.sidebar-link:hover{background:var(--paper-sunken);color:var(--ink)}.sidebar-link--active{color:var(--azure);border-left-color:var(--azure);background:var(--azure-soft);font-weight:600}@media (width<=880px){.sidebar{left:0;top:var(--topnav-h);background:var(--paper);z-index:55;width:280px;transition:transform .2s;position:fixed;transform:translate(-100%);box-shadow:8px 0 24px #00000014}.sidebar--open{transform:translate(0)}.sidebar-backdrop{inset:0;top:var(--topnav-h);z-index:54;background:#0000004d;position:fixed}}.docs-main{border-right:1px solid var(--rule);min-width:0}@media (width<=1180px){.docs-main{border-right:none}}.docs-main-inner{max-width:760px;padding:44px 44px 100px}@media (width<=600px){.docs-main-inner{padding:28px 20px 80px}}.doc-page h1{font-family:var(--sans);color:var(--ink);margin:4px 0 14px;font-size:32px;font-weight:800}.doc-page h2{font-family:var(--sans);color:var(--ink);margin:42px 0 14px;scroll-margin-top:80px;font-size:21px;font-weight:700}.doc-eyebrow{letter-spacing:.1em;color:var(--azure);margin:0;font-size:11.5px;font-weight:700}.doc-breadcrumb{letter-spacing:.04em;color:var(--ink-faint);font-size:12px;font-weight:600}.doc-breadcrumb span{color:var(--rule);margin:0 4px}.doc-lead{color:var(--ink-soft);max-width:620px;margin:0 0 8px;font-size:16.5px;line-height:1.65}.doc-page p{color:var(--ink-soft);font-size:15px;line-height:1.75}.doc-page a{color:var(--azure);font-weight:500;text-decoration:none}.doc-page a:hover{text-decoration:underline}.doc-page code{color:#fff;background:0 0;border:none;border-radius:4px;padding:1px 6px;font-size:13px}html.dark .doc-page code{color:#fff}.doc-list,.doc-ordered{color:var(--ink-soft);padding-left:22px;font-size:14.5px;line-height:1.85}.doc-table{border-collapse:collapse;width:100%;margin:14px 0 30px;font-size:13.6px}.doc-table th{text-align:left;color:var(--ink-faint);letter-spacing:.04em;border-bottom:2px solid var(--rule);padding:8px 12px;font-size:11.5px;font-weight:600}.doc-table td{border-bottom:1px solid var(--rule);color:var(--ink-soft);padding:9px 12px}.doc-table tr:hover td{background:var(--paper-sunken)}.callout{border:1px solid;border-radius:8px;margin:20px 0;padding:14px 18px;font-size:13.8px;line-height:1.65}.callout--info{background:var(--azure-soft);border-color:var(--azure-line);color:var(--ink)}.callout--warning{color:#6b4400;background:#fff4e5;border-color:#ffd9a0}.callout--tip{color:#0a5c33;background:#eafaf1;border-color:#b8ebcd}html.dark .callout--info{color:var(--ink-soft)}kbd{font-family:var(--mono);background:var(--paper-sunken);border:1px solid var(--rule);border-radius:4px;padding:1px 6px;font-size:12px}.codeblock-inline{background:var(--code-bg);color:var(--code-fg);border-radius:6px;padding:10px 14px;font-size:12.8px;overflow-x:auto}.toc{top:var(--topnav-h);height:calc(100vh - var(--topnav-h));padding:44px 22px;position:sticky;overflow-y:auto}.toc-label{letter-spacing:.1em;color:var(--ink-faint);margin:0 0 12px;font-size:10.5px;font-weight:700}.toc-list{border-left:1.5px solid var(--rule);flex-direction:column;gap:1px;display:flex}.toc-link{color:var(--ink-faint);border-left:1.5px solid #0000;margin-left:-1.5px;padding:5px 0 5px 14px;font-size:13px;text-decoration:none}.toc-link:hover{color:var(--ink)}.toc-link--active{color:var(--azure);border-left-color:var(--azure);font-weight:600}.codeblock{background:var(--code-bg);border-radius:8px;margin:14px 0 26px;position:relative;overflow:hidden}.codeblock-lang{color:#7d8590;text-transform:uppercase;letter-spacing:.05em;font-size:11px;position:absolute;top:10px;left:16px}.codeblock pre{color:var(--code-fg);margin:0;padding:36px 18px 16px;font-size:13px;line-height:1.65;overflow-x:auto}.codeblock-copy{color:#9aa4b2;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:30px;height:30px;display:flex;position:absolute;top:8px;right:8px}.codeblock-copy:hover{color:#fff;background:#2a3038}.pc-block{margin:16px 0 30px}.pc-title{color:var(--ink-faint);margin:0 0 8px;font-size:11.5px}.pc-card{border:1px solid var(--rule);background:var(--paper);border-bottom:none;border-radius:10px 10px 0 0;padding:28px 26px}.pc-stage{min-height:70px}.pc-toolbar{border:1px solid var(--rule);background:var(--paper-sunken);border-top:none;border-radius:0 0 10px 10px;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.pc-tabs{gap:2px;display:flex}.pc-tab{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 14px;font-size:12.5px;font-weight:600}.pc-tab:hover{color:var(--ink)}.pc-tab--active{background:var(--paper);color:var(--azure);box-shadow:0 1px 3px #00000014}.pc-copy{border:1px solid var(--rule);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:6px;padding:5px 12px;font-size:12px}.pc-copy:hover{border-color:var(--azure);color:var(--azure)}.pc-code{background:var(--code-bg);color:var(--code-fg);border:1px solid var(--code-rule);border-top:none;border-radius:0 0 10px 10px;margin:0;padding:18px;font-size:12.8px;line-height:1.65;overflow-x:auto}.pc-stage .ns-prose,.pc-stage .ns-input,.pc-stage .ns-filled-value,.pc-stage .ns-cursor{font-size:clamp(17px,2.2vw,21px)}.pc-stage .ns-enter-btn:hover,.pc-stage .ns-chip--active,.pc-stage .ns-cta{background:var(--azure)}.pc-stage .ns-cta:hover{background:var(--azure-deep)}.pc-stage{--accent:#0d6efd}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important}}.framework-toggle{background:var(--paper-sunken);border:1px solid var(--rule);border-radius:6px;margin-right:12px;padding:2px;display:flex}.fw-btn{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 10px;font-size:13px;font-weight:500;transition:all .15s}.fw-btn:hover{color:var(--ink)}.fw-btn--active{background:var(--azure);box-shadow:0 1px 3px #0d6efd33;color:#fff!important}
