:root{color-scheme:light;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f6f3ee;color:#1d2522}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-height:100vh}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}code,pre{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.docs-shell{display:grid;grid-template-columns:292px minmax(0,1fr);min-height:100vh}.docs-sidebar{position:sticky;top:0;height:100vh;padding:18px;border-right:1px solid #d8d1c4;background:#eee8dc;overflow-y:auto}.docs-brand{padding-bottom:18px;border-bottom:1px solid #d8d1c4}.docs-brand-link{display:flex;align-items:center;gap:12px}.docs-mark{display:grid;width:38px;height:38px;place-items:center;border-radius:8px;background:#173c33;color:#fffaf0;font-weight:800}.docs-brand strong,.docs-brand small,.docs-nav-link span,.docs-nav-link small{display:block}.docs-brand strong{font-size:1rem}.docs-brand small{margin-top:2px;color:#68746f;font-size:.78rem}.docs-nav{display:grid;gap:6px;margin-top:18px}.docs-concept-nav{display:grid;gap:6px;margin-top:22px;padding-top:16px;border-top:1px solid #d8d1c4}.docs-nav-heading{margin:0 0 2px;color:#53625d;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.docs-nav-heading--spaced{margin-top:14px}.docs-nav-link{display:grid;gap:3px;padding:10px 11px;border-radius:8px;color:#26322e}.docs-concept-nav-link{display:grid;gap:3px;padding:8px 10px;border-radius:8px;color:#26322e}.docs-nav-link:hover,.docs-nav-link.active,.docs-concept-nav-link:hover,.docs-concept-nav-link.active{background:#fff;box-shadow:inset 0 0 0 1px #d8d1c4}.docs-nav-link small,.docs-concept-nav-link small{color:#68746f;font-size:.78rem;line-height:1.35}.docs-main{min-width:0;padding:22px 34px 54px}.docs-topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1180px;margin:0 auto 30px;padding-bottom:16px;border-bottom:1px solid #d8d1c4}.docs-kicker,.docs-card-label,.docs-block-label{margin:0;color:#53625d;font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.docs-lang-switch,.docs-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.docs-lang,.docs-source-link,.docs-actions a{display:inline-flex;align-items:center;min-height:34px;padding:7px 10px;border:1px solid #c9c1b2;border-radius:8px;background:#fffaf0;color:#1d2522;font-weight:700;font-size:.9rem}.docs-lang.active,.docs-source-link:hover,.docs-actions a:hover{border-color:#173c33}.docs-intro,.docs-section,.docs-package-page,.docs-readme,.docs-empty{max-width:1180px;margin:0 auto}.docs-intro{display:grid;grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);gap:30px;align-items:start}.docs-intro-copy{display:grid;gap:14px;padding-top:10px}.docs-intro h1,.docs-package-header h1,.docs-empty h1{margin:0;max-width:16ch;font-size:3rem;line-height:1.03}.docs-intro p,.docs-section-heading p,.docs-teach-block p,.docs-note p,.docs-memory-check p,.docs-empty p{margin:0;color:#46534f;font-size:1rem;line-height:1.65}.docs-system-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.docs-map-node,.docs-package-card,.docs-concept-card,.docs-teach-block,.docs-note,.docs-memory-check,.docs-readme{border:1px solid #d8d1c4;border-radius:8px;background:#fffaf0}.docs-map-node{display:grid;gap:7px;min-height:112px;padding:14px;border-left-width:5px}.docs-map-node--contracts{border-left-color:#2f6f62}.docs-map-node--rendering{border-left-color:#416f9f}.docs-map-node--editor{border-left-color:#a86c2a}.docs-map-node--infrastructure{border-left-color:#6d6474}.docs-map-node--product{border-left-color:#9f3f49}.docs-map-node--portal{border-left-color:#8f7a21}.docs-map-node strong{font-size:1rem}.docs-map-node span{color:#53625d;line-height:1.4}.docs-section{margin-top:36px}.docs-section--inside{margin-top:2px}.docs-section-heading{display:grid;gap:8px;max-width:720px;margin-bottom:16px}.docs-section-heading h2,.docs-teach-block h2{margin:0;font-size:1.5rem;line-height:1.2}.docs-principles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.docs-principles p{margin:0;padding:14px;border-left:4px solid #2f6f62;background:#fffaf0;line-height:1.55}.docs-package-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.docs-package-card{display:grid;gap:9px;min-height:148px;padding:15px}.docs-concept-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.docs-concept-card{display:grid;gap:9px;min-height:176px;padding:15px;border-left:5px solid #2f6f62}.docs-package-card:hover,.docs-concept-card:hover{border-color:#173c33}.docs-package-card h3,.docs-concept-card h3{margin:0;font-size:1rem;line-height:1.3}.docs-package-card p:last-child,.docs-concept-card p:last-child{margin:0;color:#46534f;line-height:1.5}.docs-package-page{display:grid;gap:16px}.docs-package-header{display:flex;align-items:start;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid #d8d1c4}.docs-package-header h1{max-width:none;margin-top:8px;font-size:2.35rem}.docs-teach-block{display:grid;gap:10px;padding:18px}.docs-teach-block--lead p{font-size:1.1rem}.docs-steps{display:grid;gap:10px;margin:0;padding-left:22px;color:#34423d;line-height:1.6}.docs-steps li::marker{color:#2f6f62;font-weight:800}.docs-two-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.docs-note,.docs-memory-check{display:grid;gap:8px;padding:16px}.docs-memory-check{border-color:#a86c2a;background:#fff5e4}.docs-readme{display:flow-root;min-width:0;padding:22px;overflow:hidden}.docs-readme>.docs-block-label{margin-bottom:18px}.docs-readme h1,.docs-readme h2,.docs-readme h3,.docs-readme h4{margin:28px 0 10px;color:#1d2522;line-height:1.22}.docs-readme h1:first-of-type{margin-top:0}.docs-readme h1{font-size:2rem}.docs-readme h2{padding-top:16px;border-top:1px solid #e4dccf;font-size:1.45rem}.docs-readme h3{font-size:1.15rem}.docs-readme p,.docs-readme li,.docs-readme td,.docs-readme th{color:#34423d;line-height:1.65}.docs-readme p,.docs-readme ul,.docs-readme ol,.docs-readme table,.docs-readme pre,.docs-readme figure,.docs-readme blockquote{margin:0 0 16px}.docs-readme ul,.docs-readme ol{padding-left:24px}.docs-readme li+li{margin-top:6px}.docs-readme a{color:#195c9f;font-weight:700;text-decoration:underline;text-underline-offset:3px}.docs-readme :not(pre)>code{padding:.13em .34em;border-radius:5px;background:#ece5d8;color:#173c33;font-size:.92em}.docs-readme pre{overflow-x:auto;padding:16px;border-radius:8px;background:#171f1d;color:#f5f2ea;font-size:.88rem;line-height:1.65}.docs-readme pre code{display:grid;min-width:max-content;background:transparent}.docs-readme [data-line]{padding:0 2px}.docs-readme table{display:block;width:100%;overflow-x:auto;border-collapse:collapse}.docs-readme th,.docs-readme td{padding:9px 11px;border:1px solid #d8d1c4;text-align:left;vertical-align:top}.docs-readme th{background:#eee8dc;color:#1d2522}.docs-readme blockquote{padding:12px 14px;border-left:4px solid #416f9f;background:#f3efe7}.docs-readme-loading{margin:0;color:#53625d}.docs-source-list{display:grid;gap:8px;margin:0;padding-left:22px}.docs-next{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0 0;border-top:1px solid #d8d1c4}.docs-next span{color:#68746f;font-size:.92rem}.docs-next a{font-weight:800;color:#173c33}.docs-code-block{margin:0;padding:14px;border-radius:8px;background:#18221f;color:#f9f5ea;font-size:.88rem;line-height:1.55;overflow-x:auto;white-space:pre}.docs-empty{display:grid;gap:12px;padding:60px 0}@media(max-width:980px){.docs-shell{grid-template-columns:1fr}.docs-sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid #d8d1c4}.docs-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.docs-main{padding:18px}.docs-intro,.docs-package-header{grid-template-columns:1fr}.docs-intro{display:grid}.docs-system-map,.docs-principles,.docs-package-grid,.docs-concept-grid,.docs-two-column{grid-template-columns:1fr}}@media(max-width:560px){.docs-main{padding:14px}.docs-topbar,.docs-package-header,.docs-next{align-items:stretch;flex-direction:column}.docs-nav{grid-template-columns:1fr}.docs-intro h1,.docs-package-header h1,.docs-empty h1{font-size:2.1rem}}
