code[class*=language-],pre[class*=language-]{color:#1a797f;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;-webkit-hyphens:none;hyphens:none;background:0 0;line-height:1.5}pre[class*=language-]{margin:.5em 0;padding:1em;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:var(--bg-color)}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.3em;padding:.1em}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:var(--dark-color)}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#90f}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#7a255d}.token.property,.token.class-name,.token.constant,.token.symbol{color:#886a7e}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#bd4a6f}.token.operator,.token.entity,.token.url{color:var(--light-color)}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{opacity:0;transition:opacity .3s ease-in-out;position:absolute;top:.3em;right:.2em}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar>.toolbar .toolbar-item{display:inline-block}div.code-toolbar>.toolbar a{cursor:pointer}div.code-toolbar>.toolbar button{color:inherit;font:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;background:0 0;border:0;padding:0;line-height:normal;overflow:visible}div.code-toolbar>.toolbar a,div.code-toolbar>.toolbar button,div.code-toolbar>.toolbar span{color:#bbb;background:#e0e0e033;border-radius:.5em;padding:0 .5em;font-size:.8em;box-shadow:0 2px #0003}div.code-toolbar>.toolbar a:hover,div.code-toolbar>.toolbar a:focus,div.code-toolbar>.toolbar button:hover,div.code-toolbar>.toolbar button:focus,div.code-toolbar>.toolbar span:hover,div.code-toolbar>.toolbar span:focus{color:inherit;text-decoration:none}.frame{font-family:Helvetica,Arial,sans-serif;font-size:.8em}.axis-baseline,.tick,.axis-tick path{stroke:currentColor}.axis-label{fill:currentColor}.tooltip-content{background:var(--surface-1,white);border:1px solid var(--surface-3,#ddd);color:var(--text-primary,black);z-index:100;min-width:120px;padding:10px;position:relative;transform:translate(-50%)translateY(5px)}.uncertainty_cone{fill:#de4b8b;fill-opacity:.2;transform:none}.legend-title,.legend-group-label,.legend-item text{fill:currentColor}circle.frame-hover{stroke:currentColor;r:4}:root{--surface-0:#020913;--surface-1:#090e1a;--surface-2:#0c1424;--surface-3:#14253e;--semiotic-bg:#0f172a;--semiotic-text:#cbd5e1;--semiotic-text-secondary:#94a3b8;--semiotic-border:#334155;--semiotic-grid:#1e293b;--text-primary:#cbd5e1;--text-secondary:#94a3b8;--accent:#38bdf8;--tier-charts:#22c55e;--tier-frames:#a78bfa;--tier-utilities:#f59e0b;--viz-1:#6366f1;--viz-2:#22c55e;--viz-3:#f59e0b;--viz-4:#ef4444;--viz-5:#06b6d4;--viz-6:#ec4899;--viz-7:#8b5cf6;--viz-8:#14b8a6;--viz-9:#f97316;--viz-10:#3b82f6;--font-heading:"Inter", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--font-code:"JetBrains Mono", monospace;--sidebar-width:220px;--toc-width:160px;--content-max-width:1060px;--bg-color:var(--surface-2);--light-color:var(--text-secondary);--dark-color:var(--accent);--link-color:var(--accent);--scale-1:var(--viz-1);--scale-2:var(--viz-4);--scale-3:var(--viz-7);--scale-4:var(--viz-8);--scale-5:var(--viz-3);--scale-6:var(--viz-10);--scale-7:var(--viz-6);--scale-8:var(--viz-7);--scale-9:var(--viz-8);--scale-10:var(--viz-3);--sidebar:var(--sidebar-width)}[data-theme=light]{--surface-0:#fff;--surface-1:#f8f9fa;--surface-2:#f0f1f3;--surface-3:#e2e4e8;--text-primary:#1a1a2e;--text-secondary:#6b7280;--accent:#4f46e5;--semiotic-bg:#fff;--semiotic-text:#333;--semiotic-text-secondary:#666;--semiotic-border:#ccc;--semiotic-grid:#e0e0e0}*,:before,:after{box-sizing:border-box}body{background:var(--surface-0);color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-size:15px;line-height:1.7}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);color:var(--text-primary);line-height:1.3}h3{font-size:1em}ul code,ol code,p code{font-weight:600}code{font-family:var(--font-code);background:var(--surface-2);border-radius:4px;padding:2px 6px;font-size:.9em}pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}a{color:var(--accent);cursor:pointer;font-weight:600;transition:opacity .15s}a:hover{opacity:.85}.app-layout{grid-template-columns:var(--sidebar-width) 1fr var(--toc-width);min-height:100vh;display:grid}@media (width<=1200px){.app-layout{grid-template-columns:var(--sidebar-width) 1fr}.app-layout .toc-column{display:none}}@media (width<=768px){.app-layout{grid-template-columns:1fr}.app-layout .sidebar{display:none}.app-layout .sidebar.mobile-open{width:var(--sidebar-width);z-index:500;display:block;position:fixed;top:0;bottom:0;left:0}}header{z-index:300;background:var(--surface-1);border-bottom:1px solid var(--surface-3);align-items:center;width:100%;padding:16px 24px 16px 32px;display:flex;position:sticky;top:0}header .logo,header .logo img{max-width:200px}.logo img{width:200px}header h1{margin:0;font-size:20px;font-weight:600}header .space-between{flex-grow:1;justify-content:space-between;align-items:center}header .github-links p{align-self:center;margin:0 10px 0 0}header .github-links a{color:var(--text-secondary);font-size:12px;font-weight:500;text-decoration:none;transition:color .15s}header .github-links a:hover{color:var(--text-primary)}.sidebar{background:var(--surface-1);border-right:1px solid var(--surface-3);max-width:var(--sidebar-width);min-width:var(--sidebar-width);padding-right:0}.sidebar>div{box-sizing:border-box;max-height:calc(100vh - 65px);padding:24px 24px 24px 32px;position:sticky;top:65px;overflow:auto}.sidebar p{font-size:12px}.sidebar a{color:var(--text-secondary);font-weight:400;text-decoration:none;transition:color .15s}.sidebar a:hover{color:var(--text-primary)}.sidebar p:not(.sub-page) a{color:var(--text-primary);font-size:14px;font-weight:600}.sub-header{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.2rem;font-size:11px;font-weight:700}.sidebar .sub-page:not(.sub-header){margin:.2rem 0}.sub-page a{padding:1px 0;display:inline-block}.selected.black a,.black a.active{color:var(--accent);background:var(--surface-2);border-radius:4px;padding:1px 6px;font-weight:700}.black,.black a{color:var(--text-primary)}.container{max-width:var(--content-max-width);min-width:0;margin:0 auto;padding:32px 24px;position:relative}.container:has(.landing-page){max-width:none;padding:0}button{background:var(--surface-2);color:var(--text-primary);border:1px solid var(--surface-3);font-family:var(--font-body);cursor:pointer;text-align:center;letter-spacing:.01em;border-radius:8px;outline:none;padding:8px 14px;font-size:14px;transition:background .15s,border-color .15s;display:inline-block;position:relative}button:hover{background:var(--surface-3)}button:focus{outline:2px solid var(--accent);outline-offset:2px}.flex{display:flex}.relative{position:relative}.margin-bottom{margin-bottom:40px}.capitalize{text-transform:capitalize}.pointer,a{cursor:pointer}.bold{font-weight:900}.dim{opacity:.5;cursor:default}.light-color,.light-color a{color:var(--text-secondary)}.dark-color{color:var(--accent)}.tier-badge{letter-spacing:.02em;color:#fff;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:600;line-height:1.6;display:inline-block}.tier-badge.charts{background:var(--tier-charts)}.tier-badge.frames{background:var(--tier-frames)}.tier-badge.utilities{background:var(--tier-utilities)}a.heading-link{color:inherit;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KTMInWQAAAW5JREFUOBGNks1twkAQhf3HPR2QDuJ0ACVYwr6GDqAEUgGkgnA2B0qADiAdJB2Qs42d91k7aGWTKCvZs/P3Zt6zw0Bnv98/1HW9CMNwHsfx4/V6/WzbdpskyVuWZRdqfjshid1ud1Jx2i8S6Fnx6V8gkZpXNGvqR1VVzyoOsfjEBXJgwz64+ZHWfsFpmmZeFMWZO1ZUJv8BieBsTViOTfRBBHbskr1XpBW/iInKBOsEPbA6voHIPkGXmH8iOVsXWLvmJdxFrRMYAaHnasw6NwiiPM9XcLUGZRZkaTL1TRsBj8kxiId7N8UcGnRvSfA1sJyyLNPRaHSCrn0Z4rpPoUDxxabpB/om5mui7d6J6Wx5sa0DWnYABO2Izsbd17YZDdCELoN8TQYAQt5Q7K/Kl+CxIb4mAwAm2KfzQYwiIGiCRZMBAIl7IKYJzWJ00+SmNI39gwaic+Qn6uegOZvN0rsbWLFtolVfWZc4Ft80+QEmw//dt9Lb6gAAAABJRU5ErkJggg==);background-position-y:50%;background-repeat:no-repeat;background-size:1em;margin-left:-20px;padding-left:20px;text-decoration:none;display:block;overflow:visible}div.subpages>div:not(.sub-header){width:150px;margin:0 20px 20px 0;display:inline-block}div.subpages .sub-header{color:var(--text-primary);font-size:18px}div.subpages a{color:var(--text-secondary);font-size:14px;font-weight:400;text-decoration:none}div.subpages a:hover{color:var(--text-primary)}div.page-image{border:1px solid var(--surface-3);border-radius:6px;justify-content:center;width:150px;height:100px;display:flex;overflow:hidden}div.page-image img{height:100%}.frame-title{font-size:1.1em;font-weight:700}.st0{fill:#5b5b5b}.st1{fill:#7f7f7f}.st2{fill:#fff}.st3{fill:#6fa288}.st4{fill:#c7e0b0}.st5,.st8{fill:#e2b884}.st9{fill:none;stroke:#fff;stroke-width:2px}.st10{fill:#fff;stroke:#fff}.st11{fill:none;stroke:#fff;stroke-width:1.5px}.dot-com-bubble .annotation-subject path{fill:var(--viz-1);fill-opacity:.05;stroke:none}@media (width>=1201px){.page-toc{display:block!important}}.page-nav a:hover{border-color:var(--accent);background:var(--surface-2)}.page-breadcrumbs a:hover,.page-toc a:hover{color:var(--text-primary)}.page-content,.live-example,.playground-chart-container,.playground-controls,.code-block{min-width:0;max-width:100%}.page-content img,.page-content video,.examples-main img,.examples-main video{max-width:100%;height:auto}.code-block-scroll,.live-example-viz,.playground-chart-container{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;max-width:100%;overflow-x:auto!important}.live-example-viz,.playground-chart-container{touch-action:pan-x pan-y!important}.code-block-scroll{scrollbar-gutter:stable}.playground-chart-container{background:var(--surface-1);border:1px solid var(--surface-3);border-radius:10px;margin:20px 0 24px;padding:16px}.playground-dataset-picker,.playground-share-toolbar,.playground-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.playground-dataset-picker{margin:16px 0 12px}.playground-controls{background:var(--surface-1);border:1px solid var(--surface-3);border-radius:10px;margin:0 0 28px;padding:16px}.playground-group-header{color:var(--text-secondary);letter-spacing:.06em;text-transform:uppercase;margin:16px 0 8px;font-size:12px;font-weight:700}.playground-controls>div:first-child .playground-group-header{margin-top:0}.playground-control-row{min-width:0}.playground-control-label{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:700;display:block}.playground-range{grid-template-columns:minmax(0,1fr) 76px;align-items:center;gap:10px;display:grid}.playground-range input[type=range]{width:100%}.playground-select,.playground-text-input,.playground-number-input,.playground-toggle,.playground-reset-button,.playground-share-button{min-height:40px}.playground-select,.playground-text-input,.playground-number-input{background:var(--surface-2);width:100%;color:var(--text-primary);border:1px solid var(--surface-3);font:inherit;border-radius:8px;padding:8px 10px}.playground-toggle.active{border-color:var(--accent);color:var(--accent)}.playground-color-input{width:44px;height:40px}@media (width>=769px){.sidebar-toggle{display:none!important}}@media (width<=768px){body{font-size:14px;line-height:1.65;overflow-x:hidden}header{gap:10px;padding:10px 14px}header .logo,header .logo img,.logo img{width:142px;max-width:142px}header .github-links{display:none}.sidebar-toggle{min-width:44px;min-height:44px;display:inline-flex!important}.container{width:100%;padding:20px 14px 36px}.page-header{flex-wrap:wrap;align-items:flex-start!important;gap:8px!important;margin-bottom:20px!important}.page-header h1{font-size:clamp(1.55rem,8vw,2rem)!important;line-height:1.12!important}.page-body{display:block!important}.page-breadcrumbs{white-space:nowrap;padding-inline:14px;-webkit-overflow-scrolling:touch;margin-inline:-14px;padding-bottom:4px;overflow-x:auto;flex-wrap:nowrap!important}.page-content h2{font-size:1.35rem}.page-content h3{font-size:1.05rem}.page-nav{flex-direction:column!important;gap:10px!important}.page-nav a{width:100%;min-height:56px;max-width:100%!important}.live-example-viz,.playground-chart-container{margin-inline:-4px;padding:12px!important}.live-example-side-by-side{flex-direction:column!important}.live-example-side-left,.live-example-side-right{width:100%;flex:auto!important}.live-example-toolbar{gap:6px!important}.live-example-toolbar button,.code-block button,.playground-share-toolbar button,.playground-toolbar button{min-height:44px}.live-example-code pre,.code-block pre,.code-block code{font-size:12.5px!important;line-height:1.55!important}.code-block table{min-width:100%;width:max-content!important}.playground-controls{padding:12px!important}.playground-controls-grid{grid-template-columns:1fr!important;display:grid!important}.playground-range{grid-template-columns:minmax(0,1fr) 72px!important;display:grid!important}.playground-select,.playground-text-input,.playground-number-input,.playground-toggle,.playground-reset-button,.playground-share-button{min-height:44px}.playground-share-toolbar{flex-direction:column!important;align-items:stretch!important}.playground-share-hint{align-self:stretch!important}div.subpages{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))!important;gap:14px!important;display:grid!important}div.subpages>div:not(.sub-header){width:auto;margin:0}div.subpages .sub-header{grid-column:1/-1;margin-top:12px}div.page-image{aspect-ratio:3/2;width:100%;height:auto}.examples-top-bar{flex-wrap:wrap;gap:10px!important;padding:14px!important}.examples-top-bar-right{justify-content:space-between;width:100%;gap:10px!important;margin-left:0!important}.examples-footer-inner{flex-direction:column;padding:18px 14px!important}}.recipe-badge{letter-spacing:.02em;color:#fff;background:var(--accent);border-radius:999px;padding:2px 10px;font-size:11px;font-weight:600;line-height:1.6;display:inline-block}.recipe-deps{flex-wrap:wrap;gap:6px;display:flex}.recipe-dep-tag{font-size:12px;font-weight:500;font-family:var(--font-code);color:var(--text-secondary);background:var(--surface-2);border:1px solid var(--surface-3);border-radius:4px;padding:2px 8px;display:inline-block}.recipe-source{border-top:2px solid var(--accent);padding-top:24px}.recipe-kpi-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.recipe-kpi-card{background:var(--surface-1);border:1px solid var(--surface-3);border-radius:12px;padding:20px}.recipe-kpi-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:4px;font-size:11px;font-weight:600}.recipe-kpi-value{margin-bottom:8px;font-size:28px;font-weight:700;line-height:1.2}.recipe-kpi-row{align-items:center;gap:12px;display:flex}.recipe-kpi-change{font-size:13px;font-weight:600}.recipe-kpi-change.positive{color:#22c55e}.recipe-kpi-change.negative{color:#ef4444}.recipe-network-layout{gap:24px;display:flex}.recipe-network-sidebar{flex-shrink:0;width:240px}.recipe-search-input{background:var(--surface-2);border:1px solid var(--surface-3);width:100%;color:var(--text-primary);font-size:14px;font-family:var(--font-body);border-radius:6px;outline:none;margin-bottom:12px;padding:8px 12px;transition:border-color .15s}.recipe-search-input:focus{border-color:var(--accent)}@media (width<=768px){.recipe-network-layout{flex-direction:column}.recipe-network-sidebar{width:100%}}.recipe-customization-table{border-collapse:collapse;width:100%;margin:16px 0 24px;font-size:14px}.recipe-customization-table th{text-align:left;border-bottom:2px solid var(--surface-3);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;padding:8px 12px;font-size:12px;font-weight:600}.recipe-customization-table td{border-bottom:1px solid var(--surface-3);vertical-align:top;padding:8px 12px}.recipe-customization-table tr:last-child td{border-bottom:none}.playground-chart-container{background:var(--surface-1);border:1px solid var(--surface-3);border-radius:8px;margin-bottom:24px;padding:16px;overflow:hidden}.playground-controls{background:var(--surface-1);border:1px solid var(--surface-3);border-radius:8px;margin-bottom:24px;padding:20px}.playground-group-header{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);border-bottom:1px solid var(--surface-3);margin:16px 0 8px;padding-bottom:4px;font-size:11px;font-weight:600}.playground-group-header:first-child{margin-top:0}.playground-controls-grid{grid-template-columns:1fr 1fr;gap:10px 24px;display:grid}@media (width<=600px){.playground-controls-grid{grid-template-columns:1fr}}.playground-control-row{align-items:center;gap:10px;min-height:32px;display:flex}.playground-control-label{color:var(--text-secondary);flex-shrink:0;min-width:100px;font-size:13px;font-weight:500}.playground-control-input{flex:1;min-width:0}.playground-range{align-items:center;gap:8px;display:flex}.playground-range input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.playground-number-input{border:1px solid var(--surface-3);background:var(--surface-2);width:56px;color:var(--text-primary);font-family:var(--font-code);text-align:center;border-radius:4px;padding:3px 6px;font-size:12px}.playground-number-input:focus{border-color:var(--accent);outline:none}.playground-select{border:1px solid var(--surface-3);background:var(--surface-2);width:100%;color:var(--text-primary);cursor:pointer;border-radius:4px;padding:5px 8px;font-size:13px}.playground-select:focus{border-color:var(--accent);outline:none}.playground-text-input{border:1px solid var(--surface-3);background:var(--surface-2);width:100%;color:var(--text-primary);border-radius:4px;padding:5px 8px;font-size:13px}.playground-text-input:focus{border-color:var(--accent);outline:none}.playground-toggle{border:1px solid var(--surface-3);background:var(--surface-2);color:var(--text-secondary);cursor:pointer;border-radius:12px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex;position:relative}.playground-toggle:after{content:"";background:var(--text-secondary);border-radius:50%;width:14px;height:14px;transition:background .15s}.playground-toggle.active{background:var(--accent);border-color:var(--accent);color:#fff}.playground-toggle.active:after{background:#fff}.playground-color-wrapper{align-items:center;gap:8px;display:flex}.playground-color-input{border:1px solid var(--surface-3);cursor:pointer;background:0 0;border-radius:4px;width:32px;height:28px;padding:0}.playground-color-value{font-family:var(--font-code);color:var(--text-secondary);font-size:12px}.playground-dataset-picker{color:var(--text-primary);align-items:center;gap:10px;margin-bottom:16px;font-size:14px;display:flex}.playground-dataset-picker label{flex-shrink:0;font-weight:500}.playground-dataset-picker .playground-select{max-width:320px}.playground-toolbar{border-top:1px solid var(--surface-3);gap:8px;margin-top:16px;padding-top:12px;display:flex}.playground-reset-button{border:1px solid var(--surface-3);color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:500;font-family:var(--font-code);background:0 0;border-radius:4px;padding:4px 12px;transition:color .15s,border-color .15s}.playground-reset-button:hover{color:var(--text-primary);border-color:var(--text-secondary)}
