:root{--md-sys-color-primary-palette-key-color:#c34a8c;--md-sys-color-secondary-palette-key-color:#827378;--md-sys-color-tertiary-palette-key-color:#62b240;--md-sys-color-neutral-palette-key-color:#7a7678;--md-sys-color-neutral-variant-palette-key-color:#7a7678;--md-sys-color-background:#151314;--md-sys-color-on-background:#e7e1e3;--md-sys-color-surface:#151314;--md-sys-color-surface-dim:#151314;--md-sys-color-surface-bright:#3b383a;--md-sys-color-surface-container-lowest:#0f0e0f;--md-sys-color-surface-container-low:#1d1b1c;--md-sys-color-surface-container:#211f20;--md-sys-color-surface-container-high:#2c292b;--md-sys-color-surface-container-highest:#363435;--md-sys-color-on-surface:#e7e1e3;--md-sys-color-surface-variant:#494647;--md-sys-color-on-surface-variant:#cac5c7;--md-sys-color-inverse-surface:#e7e1e3;--md-sys-color-inverse-on-surface:#323031;--md-sys-color-outline:#949091;--md-sys-color-outline-variant:#494647;--md-sys-color-shadow:#000000;--md-sys-color-scrim:#000000;--md-sys-color-surface-tint:#ffafd3;--md-sys-color-primary:#ffafd3;--md-sys-color-on-primary:#620040;--md-sys-color-primary-container:#f472b6;--md-sys-color-on-primary-container:#6d0047;--md-sys-color-inverse-primary:#a43073;--md-sys-color-secondary:#d4c2c8;--md-sys-color-on-secondary:#392d32;--md-sys-color-secondary-container:#504348;--md-sys-color-on-secondary-container:#f1dee4;--md-sys-color-tertiary:#88db63;--md-sys-color-on-tertiary:#0f3900;--md-sys-color-tertiary-container:#62b240;--md-sys-color-on-tertiary-container:#123f00;--md-sys-color-error:#ffb4ab;--md-sys-color-on-error:#690005;--md-sys-color-error-container:#93000a;--md-sys-color-on-error-container:#ffdad6;--md-sys-color-primary-fixed:#ffd8e7;--md-sys-color-primary-fixed-dim:#ffafd3;--md-sys-color-on-primary-fixed:#3d0026;--md-sys-color-on-primary-fixed-variant:#85145a;--md-sys-color-secondary-fixed:#f1dee4;--md-sys-color-secondary-fixed-dim:#d4c2c8;--md-sys-color-on-secondary-fixed:#23191d;--md-sys-color-on-secondary-fixed-variant:#504348;--md-sys-color-tertiary-fixed:#a3f87c;--md-sys-color-tertiary-fixed-dim:#88db63;--md-sys-color-on-tertiary-fixed:#062100;--md-sys-color-on-tertiary-fixed-variant:#195200;--md-ref-typeface-plain:"Google Sans Flex","Helvetica Neue",Arial,sans-serif;--md-ref-typeface-brand:"Google Sans Flex","Helvetica Neue",Arial,sans-serif;--md-sys-typescale-display-large-font:var(--md-ref-typeface-plain);--md-sys-typescale-display-large-size:44px;--md-sys-typescale-display-large-line-height:52px;--md-sys-typescale-display-large-weight:400;--md-sys-typescale-display-large-tracking:-0.005em;--md-sys-typescale-display-medium-font:var(--md-ref-typeface-plain);--md-sys-typescale-display-medium-size:36px;--md-sys-typescale-display-medium-line-height:44px;--md-sys-typescale-display-medium-weight:400;--md-sys-typescale-display-medium-tracking:0em;--md-sys-typescale-display-small-font:var(--md-ref-typeface-plain);--md-sys-typescale-display-small-size:30px;--md-sys-typescale-display-small-line-height:38px;--md-sys-typescale-display-small-weight:400;--md-sys-typescale-display-small-tracking:0em;--md-sys-typescale-headline-large-font:var(--md-ref-typeface-plain);--md-sys-typescale-headline-large-size:26px;--md-sys-typescale-headline-large-line-height:34px;--md-sys-typescale-headline-large-weight:400;--md-sys-typescale-headline-large-tracking:0em;--md-sys-typescale-headline-medium-font:var(--md-ref-typeface-plain);--md-sys-typescale-headline-medium-size:23px;--md-sys-typescale-headline-medium-line-height:30px;--md-sys-typescale-headline-medium-weight:400;--md-sys-typescale-headline-medium-tracking:0em;--md-sys-typescale-headline-small-font:var(--md-ref-typeface-plain);--md-sys-typescale-headline-small-size:20px;--md-sys-typescale-headline-small-line-height:27px;--md-sys-typescale-headline-small-weight:400;--md-sys-typescale-headline-small-tracking:0em;--md-sys-typescale-title-large-font:var(--md-ref-typeface-plain);--md-sys-typescale-title-large-size:20px;--md-sys-typescale-title-large-line-height:27px;--md-sys-typescale-title-large-weight:400;--md-sys-typescale-title-large-tracking:0em;--md-sys-typescale-title-medium-font:var(--md-ref-typeface-plain);--md-sys-typescale-title-medium-size:16px;--md-sys-typescale-title-medium-line-height:24px;--md-sys-typescale-title-medium-weight:500;--md-sys-typescale-title-medium-tracking:0.009em;--md-sys-typescale-title-small-font:var(--md-ref-typeface-plain);--md-sys-typescale-title-small-size:14px;--md-sys-typescale-title-small-line-height:20px;--md-sys-typescale-title-small-weight:500;--md-sys-typescale-title-small-tracking:0.007em;--md-sys-typescale-body-large-font:var(--md-ref-typeface-plain);--md-sys-typescale-body-large-size:15px;--md-sys-typescale-body-large-line-height:23px;--md-sys-typescale-body-large-weight:400;--md-sys-typescale-body-large-tracking:0.031em;--md-sys-typescale-body-medium-font:var(--md-ref-typeface-plain);--md-sys-typescale-body-medium-size:14px;--md-sys-typescale-body-medium-line-height:20px;--md-sys-typescale-body-medium-weight:400;--md-sys-typescale-body-medium-tracking:0.017em;--md-sys-typescale-body-small-font:var(--md-ref-typeface-plain);--md-sys-typescale-body-small-size:12px;--md-sys-typescale-body-small-line-height:16px;--md-sys-typescale-body-small-weight:400;--md-sys-typescale-body-small-tracking:0.033em;--md-sys-typescale-label-large-font:var(--md-ref-typeface-plain);--md-sys-typescale-label-large-size:14px;--md-sys-typescale-label-large-line-height:20px;--md-sys-typescale-label-large-weight:500;--md-sys-typescale-label-large-tracking:0.007em;--md-sys-typescale-label-medium-font:var(--md-ref-typeface-plain);--md-sys-typescale-label-medium-size:12px;--md-sys-typescale-label-medium-line-height:16px;--md-sys-typescale-label-medium-weight:500;--md-sys-typescale-label-medium-tracking:0.041em;--md-sys-typescale-label-small-font:var(--md-ref-typeface-plain);--md-sys-typescale-label-small-size:11px;--md-sys-typescale-label-small-line-height:16px;--md-sys-typescale-label-small-weight:500;--md-sys-typescale-label-small-tracking:0.041em;--brand-gradient-from:#f9a8d4;--brand-gradient-to:#f472b6;--brand-mark-owner-from:#f1c40f;--brand-mark-owner-to:#f4d03d;--brand-mark-dev-from:#1abc9c;--brand-mark-dev-to:#13e1b8;--brand-mark-admin-from:#e74c3c;--brand-mark-admin-to:#f82611;--brand-mark-mod-from:#e67e22;--brand-mark-mod-to:#f98e30;--brand-mark-staff-from:#3498db;--brand-mark-staff-to:#2ba6f8;--brand-mark-partner-from:#9b59b6;--brand-mark-partner-to:#c357ef;--brand-mark-booster-from:#f47fff;--brand-mark-booster-to:#e539f5;--brand-gradient:linear-gradient(135deg,#f9a8d4,#f472b6);--brand-display-gradient:linear-gradient(180deg,#ffffff 15%,#f9a8d4 60%,#f472b6);--teho-shape-group-outer:28px;--teho-shape-group-inner:10px;--teho-shape-icon-container:14px;--teho-group-gap:4px;--teho-shape-control-rest:var(--md-sys-shape-corner-small);--teho-shape-control-hover:var(--md-sys-shape-corner-medium);--teho-shape-control-pressed:var(--md-sys-shape-corner-extra-small);--teho-border-subtle:color-mix(in srgb,var(--md-sys-color-on-surface) 8%,transparent);--teho-motion-spatial:220ms cubic-bezier(.2,0,0,1);--teho-motion-effect:160ms cubic-bezier(.2,0,0,1);--teho-press-scale:.985;--md-sys-shape-corner-none:0px;--md-sys-shape-corner-extra-small:4px;--md-sys-shape-corner-small:8px;--md-sys-shape-corner-medium:12px;--md-sys-shape-corner-large:16px;--md-sys-shape-corner-large-increased:20px;--md-sys-shape-corner-extra-large:28px;--md-sys-shape-corner-extra-large-increased:32px;--md-sys-shape-corner-extra-extra-large:48px;--md-sys-shape-corner-full:9999px;--md-spring-spatial-fast-damping:0.9;--md-spring-spatial-fast-stiffness:1400;--md-spring-spatial-default-damping:0.9;--md-spring-spatial-default-stiffness:700;--md-spring-spatial-slow-damping:0.9;--md-spring-spatial-slow-stiffness:300;--md-spring-effects-fast-damping:1;--md-spring-effects-fast-stiffness:3800;--md-spring-effects-default-damping:1;--md-spring-effects-default-stiffness:1600;--md-spring-effects-slow-damping:1;--md-spring-effects-slow-stiffness:800}:root[data-scheme=light]{--md-sys-color-primary-palette-key-color:#c34a8c;--md-sys-color-secondary-palette-key-color:#827378;--md-sys-color-tertiary-palette-key-color:#62b240;--md-sys-color-neutral-palette-key-color:#7a7678;--md-sys-color-neutral-variant-palette-key-color:#7a7678;--md-sys-color-background:#fef8f9;--md-sys-color-on-background:#1d1b1c;--md-sys-color-surface:#fef8f9;--md-sys-color-surface-dim:#ded9da;--md-sys-color-surface-bright:#fef8f9;--md-sys-color-surface-container-lowest:#ffffff;--md-sys-color-surface-container-low:#f8f2f4;--md-sys-color-surface-container:#f2ecee;--md-sys-color-surface-container-high:#ede7e8;--md-sys-color-surface-container-highest:#e7e1e3;--md-sys-color-on-surface:#1d1b1c;--md-sys-color-surface-variant:#e7e1e3;--md-sys-color-on-surface-variant:#494647;--md-sys-color-inverse-surface:#323031;--md-sys-color-inverse-on-surface:#f5eff1;--md-sys-color-outline:#7a7678;--md-sys-color-outline-variant:#cac5c7;--md-sys-color-shadow:#000000;--md-sys-color-scrim:#000000;--md-sys-color-surface-tint:#a43073;--md-sys-color-primary:#a43073;--md-sys-color-on-primary:#ffffff;--md-sys-color-primary-container:#f472b6;--md-sys-color-on-primary-container:#6d0047;--md-sys-color-inverse-primary:#ffafd3;--md-sys-color-secondary:#695b60;--md-sys-color-on-secondary:#ffffff;--md-sys-color-secondary-container:#f1dee4;--md-sys-color-on-secondary-container:#504348;--md-sys-color-tertiary:#246d00;--md-sys-color-on-tertiary:#ffffff;--md-sys-color-tertiary-container:#62b240;--md-sys-color-on-tertiary-container:#123f00;--md-sys-color-error:#ba1a1a;--md-sys-color-on-error:#ffffff;--md-sys-color-error-container:#ffdad6;--md-sys-color-on-error-container:#93000a;--md-sys-color-primary-fixed:#ffd8e7;--md-sys-color-primary-fixed-dim:#ffafd3;--md-sys-color-on-primary-fixed:#3d0026;--md-sys-color-on-primary-fixed-variant:#85145a;--md-sys-color-secondary-fixed:#f1dee4;--md-sys-color-secondary-fixed-dim:#d4c2c8;--md-sys-color-on-secondary-fixed:#23191d;--md-sys-color-on-secondary-fixed-variant:#504348;--md-sys-color-tertiary-fixed:#a3f87c;--md-sys-color-tertiary-fixed-dim:#88db63;--md-sys-color-on-tertiary-fixed:#062100;--md-sys-color-on-tertiary-fixed-variant:#195200}:root{color-scheme:dark;--page-width:1320px;--gutter:clamp(16px,3vw,40px);--topbar:58px;--sidebar:230px;--toc:180px;--mono:"JetBrains Mono","Cascadia Code","SFMono-Regular",Consolas,"Liberation Mono",monospace;--text-muted:var(--md-sys-color-on-surface-variant);--line:var(--teho-border-subtle);--code-background:var(--md-sys-color-surface-container-lowest);--code-foreground:#e9e3e6;--code-token-constant:#ffc24d;--code-token-string:#9fe2a8;--code-token-comment:#85808a;--code-token-keyword:#f9a8d4;--code-token-parameter:#e7e1e3;--code-token-function:#d9ccff;--code-token-string-expression:#9fe2a8;--code-token-punctuation:#a8a1a5;--code-token-link:#f472b6;--code-token-inserted:#9fe2a8;--code-token-deleted:#ffb4ab;--code-token-changed:#ffc24d}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--topbar) + 20px)}body,html{background:var(--md-sys-color-surface)}body{margin:0;min-width:320px;color:var(--md-sys-color-on-surface);font-family:var(--font-google-sans),var(--md-ref-typeface-plain);font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}body.menuOpen{overflow:hidden}button,input{font:inherit;color:inherit}a{color:inherit;text-decoration:none}a,button{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px;border-radius:6px}*{scrollbar-width:thin;scrollbar-color:var(--md-sys-color-outline-variant) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:99px;background:var(--md-sys-color-outline-variant);background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}.skipLink{position:absolute;left:-999px;top:8px;z-index:100;padding:8px 14px;border-radius:99px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.skipLink:focus{left:12px}.topbar{position:sticky;top:0;z-index:40;height:var(--topbar);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--md-sys-color-surface) 86%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.topbarInner{width:min(100%,var(--page-width));height:100%;margin:0 auto;padding:0 var(--gutter);display:flex;align-items:center;gap:10px}.brand,.footerBrand{display:inline-flex;align-items:center;gap:10px}.brand{gap:6px}.tehoMark{display:inline-block;flex:none;background:var(--md-sys-color-primary-container);mask:url(/teho-mark.png) center/contain no-repeat;-webkit-mask:url(/teho-mark.png) center/contain no-repeat}.brandName{font-size:18px;font-weight:600;letter-spacing:-.045em;line-height:1}.brandDivider{width:1px;height:20px;background:var(--md-sys-color-outline-variant)}.brandBy{color:var(--text-muted);font-size:14px;font-weight:500}.topnav{margin-left:auto;display:flex;gap:4px}.topnav,.topnav>a{align-items:center}.topnav>a{min-height:38px;padding:0 14px;display:inline-flex;border-radius:99px;color:var(--text-muted);font-size:14px;font-weight:600;transition:background .15s,color .15s}.topnav>a:hover{color:var(--md-sys-color-on-surface);background:color-mix(in srgb,var(--md-sys-color-on-surface) 8%,transparent)}.topnav>.socialLink{width:38px;height:38px;padding:8px;justify-content:center;border-radius:8px}.socialLink svg{display:block;width:21px;height:21px;fill:currentColor}.topnav .navPrimary{margin-left:6px;background:var(--md-sys-color-primary-container)}.topnav .navPrimary,.topnav .navPrimary:hover{color:var(--md-sys-color-on-primary-container)}.topnav .navPrimary:hover{background:color-mix(in srgb,var(--md-sys-color-primary-container) 88%,white)}.menuButton{display:none;width:40px;height:40px;margin-left:-8px;padding:8px;border:0;border-radius:99px;background:transparent;cursor:pointer}.menuButton svg{width:24px;height:24px;fill:currentColor}.menuButton:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 8%,transparent)}.docs{width:min(100%,var(--page-width));margin:0 auto;padding:0 var(--gutter);display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr) var(--toc);gap:clamp(24px,3vw,48px)}.sidebar{position:sticky;top:var(--topbar);height:calc(100vh - var(--topbar));overflow-y:auto;padding:24px 6px 48px 0}.filter{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;height:40px;margin-bottom:18px;padding:0 14px;border:1px solid var(--line);border-radius:99px;background:var(--md-sys-color-surface-container-low);box-shadow:0 -24px 0 var(--md-sys-color-surface)}.filter:focus-within{border-color:var(--md-sys-color-primary)}.filter svg{width:18px;height:18px;flex:none;fill:var(--text-muted)}.filter input{width:100%;border:0;outline:0;background:transparent;font-size:14px}.filter input::placeholder{color:var(--text-muted)}.navSection{margin-bottom:20px}.navTitle{margin:0 0 6px;padding:0 12px;color:var(--md-sys-color-on-surface);font-size:13px;font-weight:600;letter-spacing:0}.navSection ul{margin:0;padding:0;list-style:none}.navLink{min-height:34px;padding:5px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-radius:var(--md-sys-shape-corner-medium);color:var(--text-muted);font-size:14px;line-height:1.35;transition:background .14s,color .14s}.navLink:hover{color:var(--md-sys-color-on-surface);background:color-mix(in srgb,var(--md-sys-color-on-surface) 6%,transparent)}.navLink.active{color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary) 9%,transparent);font-weight:600}.navTag{padding:1px 7px;border-radius:99px;background:color-mix(in srgb,var(--md-sys-color-tertiary) 16%,transparent);color:var(--md-sys-color-tertiary);font-size:10.5px;font-style:normal;font-weight:600}.navEmpty{padding:0 12px;color:var(--text-muted);font-size:14px}.scrim{display:none}.docMain{min-width:0;padding:40px 0 72px}.introduction .docHeader{margin-bottom:24px;padding-bottom:0;border-bottom:0}.introduction .docHeader h1{font-size:32px;font-weight:600}.introduction h2{margin-top:32px;font-size:21px;font-weight:600}.introduction li{margin:10px 0}.prose{max-width:780px}.docHeader{margin-bottom:36px;padding-bottom:28px;border-bottom:1px solid var(--line)}.eyebrow{margin:0 0 10px;color:var(--md-sys-color-primary);font-size:13px;font-weight:600;letter-spacing:0}.docHeader h1{margin:0;font-size:clamp(30px,4vw,40px);line-height:1.15;font-weight:500;letter-spacing:-.025em}.lede{margin:14px 0 0;color:var(--text-muted);font-size:17.5px;line-height:1.55}.badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.capability{display:inline-flex;align-items:center;width:fit-content;padding:3px 10px;background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent);color:var(--md-sys-color-primary);font-family:var(--mono)}.capability,.tier{border-radius:99px;font-size:12.5px}.tier{padding:3px 11px;border:1px solid var(--line);color:var(--text-muted);font-weight:600}.tierB{color:#ffc24d;border-color:color-mix(in srgb,#ffc24d 30%,transparent)}.tierC{color:#ff9b8a;border-color:color-mix(in srgb,#ff9b8a 30%,transparent)}.tierD{color:#c9a6ff;border-color:color-mix(in srgb,#c9a6ff 30%,transparent)}.tierPrivate{color:var(--md-sys-color-tertiary);border-color:color-mix(in srgb,var(--md-sys-color-tertiary) 30%,transparent)}.prose li,.prose>p{color:color-mix(in srgb,var(--md-sys-color-on-surface) 88%,var(--text-muted))}.prose p{margin:0 0 16px}.prose h2{margin:52px 0 14px;font-size:25px;line-height:1.25;font-weight:500;letter-spacing:-.015em}.prose h3{margin:36px 0 10px;font-size:19px;line-height:1.3;font-weight:600;letter-spacing:-.01em}.prose h4{margin:26px 0 8px;font-size:16px;font-weight:600}.prose .docHeader+h2,.prose .docHeader+p+h2{margin-top:0}.anchorHeading{position:relative}.anchorLink{position:absolute;left:-1.1em;padding-right:.3em;color:var(--md-sys-color-outline);opacity:0;transition:opacity .12s}.anchorHeading:hover .anchorLink{opacity:1}.prose a:not(.card):not(.anchorLink){color:var(--md-sys-color-primary);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--md-sys-color-primary) 38%,transparent);text-underline-offset:3px}.prose a:not(.card):not(.anchorLink):hover{text-decoration-color:var(--md-sys-color-primary)}.prose ol,.prose ul{margin:0 0 18px;padding-left:22px}.prose li{margin:6px 0}.prose li::marker{color:var(--md-sys-color-outline)}.prose strong{color:var(--md-sys-color-on-surface);font-weight:600}.prose hr{margin:40px 0;border:0;border-top:1px solid var(--line)}.prose :not(pre)>code{padding:2px 6px;border-radius:6px;background:var(--md-sys-color-surface-container-high);color:#f2e6ec;font-family:var(--mono);font-size:.86em;overflow-wrap:anywhere}.prose .capability{color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent);padding:3px 10px;border-radius:99px}.prose blockquote{margin:0 0 18px;padding:2px 0 2px 16px;border-left:3px solid var(--md-sys-color-outline-variant);color:var(--text-muted)}.tableWrap{margin:0 0 22px;overflow-x:auto;border:1px solid var(--line);border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container-lowest)}.tableWrap table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.5}.tableWrap th{padding:11px 14px;text-align:left;color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-low);font-weight:600;white-space:nowrap}.tableWrap td{padding:10px 14px;vertical-align:top;border-top:1px solid var(--line);color:color-mix(in srgb,var(--md-sys-color-on-surface) 86%,var(--text-muted))}.tableWrap td:first-child code{white-space:nowrap}.code{margin:0 0 22px;overflow:hidden;border:1px solid var(--line);border-radius:var(--md-sys-shape-corner-large);background:var(--code-background)}.code figcaption{height:40px;padding:0 8px 0 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--md-sys-color-surface-container-low)}.codeLang{letter-spacing:.02em}.codeLang,.copyButton{color:var(--text-muted);font-size:12.5px;font-weight:600}.copyButton{height:28px;padding:0 10px;display:inline-flex;align-items:center;gap:6px;border:0;border-radius:99px;background:transparent;cursor:pointer;transition:background .14s,color .14s}.copyButton svg{width:15px;height:15px;fill:currentColor}.copyButton:hover{color:var(--md-sys-color-on-surface);background:color-mix(in srgb,var(--md-sys-color-on-surface) 8%,transparent)}.codeBody pre{margin:0;padding:16px 18px;overflow-x:auto;background:transparent!important;font-family:var(--mono);font-size:13.2px;line-height:1.65;tab-size:4}.codeBody code{font-family:inherit}.tabs{margin:0 0 22px}.tabList{display:flex;gap:4px;margin-bottom:8px;overflow-x:auto;padding-bottom:2px}.tab{flex:none;height:34px;padding:0 14px;border:1px solid var(--line);border-radius:99px;background:transparent;color:var(--text-muted);font-size:13.5px;font-weight:600;cursor:pointer;transition:background .14s,color .14s,border-color .14s}.tab:hover{color:var(--md-sys-color-on-surface)}.tab.active{color:var(--md-sys-color-on-secondary-container);background:var(--md-sys-color-secondary-container);border-color:transparent}.tabPanel>.code:last-child,.tabPanel>:last-child{margin-bottom:0}.callout{margin:0 0 22px;padding:14px 18px;border:1px solid var(--line);border-left:3px solid var(--md-sys-color-primary);border-radius:var(--md-sys-shape-corner-medium);background:color-mix(in srgb,var(--md-sys-color-primary) 6%,var(--md-sys-color-surface-container-lowest))}.callout.tip{border-left-color:#7cdb8a;background:color-mix(in srgb,#7cdb8a 6%,var(--md-sys-color-surface-container-lowest))}.callout.warning{border-left-color:#ffc24d;background:color-mix(in srgb,#ffc24d 6%,var(--md-sys-color-surface-container-lowest))}.callout.status{border-left-color:var(--md-sys-color-tertiary);background:color-mix(in srgb,var(--md-sys-color-tertiary) 6%,var(--md-sys-color-surface-container-lowest))}.calloutTitle{display:block;margin-bottom:4px;font-size:13.5px;font-weight:600}.callout.tip .calloutTitle{color:#9fe2a8}.callout.warning .calloutTitle{color:#ffd27a}.callout.status .calloutTitle{color:var(--md-sys-color-tertiary)}.callout:not(.tip):not(.warning):not(.status) .calloutTitle{color:var(--md-sys-color-primary)}.calloutBody{font-size:14.5px}.calloutBody>:last-child{margin-bottom:0}.calloutBody p{margin:0 0 8px}.calloutBody ul{margin-bottom:0}.facts{margin:0 0 24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--teho-group-gap)}.fact{padding:12px 16px;background:var(--md-sys-color-surface-container-low);border-radius:var(--teho-shape-group-inner)}.fact:first-child{border-radius:18px var(--teho-shape-group-inner) var(--teho-shape-group-inner) 18px}.fact:last-child{border-radius:var(--teho-shape-group-inner) 18px 18px var(--teho-shape-group-inner)}.fact dt{color:var(--text-muted);font-size:13px;font-weight:600;letter-spacing:0}.fact dd{margin:3px 0 0;font-size:14.5px}.cards{margin:0 0 24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));column-gap:28px}.card{position:relative;min-width:0;padding:16px 0;display:flex;flex-direction:column;gap:6px;border-bottom:1px solid var(--line)}.card:hover strong{color:var(--md-sys-color-primary)}.card strong{padding-right:24px;color:var(--md-sys-color-on-surface);font-size:15px;font-weight:600;transition:color .16s}.card span{color:var(--text-muted);font-size:14px;line-height:1.5}.card>svg{position:absolute;top:19px;right:0;width:16px;height:16px;fill:var(--md-sys-color-outline);transition:fill .16s,transform .16s}.card:hover>svg{fill:var(--md-sys-color-primary);transform:translateX(2px)}.prose .cards .capability{font-size:11.5px;padding:0;border-radius:0;background:transparent;color:var(--text-muted)}.steps{counter-reset:step;margin:0 0 24px}.steps>h3{counter-increment:step;position:relative;padding-left:44px;margin-top:30px}.steps>h3:before{content:counter(step);position:absolute;left:0;top:-2px;width:30px;height:30px;display:grid;place-items:center;border-radius:99px;background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);font-size:14px}.steps>h3 .anchorLink{display:none}.steps>:not(h3){margin-left:44px}.pager{max-width:780px;margin-top:40px;padding-top:18px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:20px}.pager>span{display:none}.pagerLink{position:relative;min-width:0;padding:4px 0 4px 20px;display:flex;flex-direction:column;gap:3px}.pagerLink:before{content:"";position:absolute;left:1px;top:50%;width:6px;height:6px;border-left:1.5px solid var(--text-muted);border-bottom:1.5px solid var(--text-muted);transform:translateY(-50%) rotate(45deg)}.pagerLink:hover strong{color:var(--md-sys-color-primary)}.pagerLink:hover:before{border-color:var(--md-sys-color-primary)}.pagerLink span{color:var(--text-muted);font-size:12.5px}.pagerLink strong{color:var(--md-sys-color-on-surface);font-size:15px;font-weight:500;transition:color .16s}.pagerLink.next{grid-column:2;padding:4px 20px 4px 0;text-align:right}.pagerLink.next:before{left:auto;right:1px;transform:translateY(-50%) rotate(225deg)}.toc{position:sticky;top:var(--topbar);height:fit-content;max-height:calc(100vh - var(--topbar));overflow-y:auto;padding:40px 0}.tocTitle{margin:0 0 10px;font-size:13px;font-weight:600;letter-spacing:0}.toc ul{margin:0;padding:0;list-style:none;border-left:1px solid var(--line)}.toc li a{display:block;margin-left:-1px;padding:4px 0 4px 14px;border-left:2px solid transparent;color:var(--text-muted);font-size:13.5px;line-height:1.4;transition:color .14s,border-color .14s}.toc li.tocSub a{padding-left:26px;font-size:13px}.toc li a:hover{color:var(--md-sys-color-on-surface)}.toc li a.active{color:var(--md-sys-color-primary);border-left-color:var(--md-sys-color-primary)}.home{width:min(100%,var(--page-width));margin:0 auto;padding:0 var(--gutter) 40px;overflow-x:clip}.hero{padding:clamp(48px,8vw,104px) 0 clamp(40px,6vw,72px);display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);align-items:center;gap:clamp(28px,5vw,72px)}.hero h1{margin:0;font-size:clamp(38px,5.6vw,64px);line-height:1.04;font-weight:500;letter-spacing:-.04em}.hero h1 span{background:var(--brand-display-gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.heroLede{max-width:560px;margin:22px 0 0;color:var(--text-muted);font-size:clamp(16px,1.6vw,18.5px);line-height:1.6}.heroActions{margin-top:30px;display:flex;flex-wrap:wrap;gap:10px}.button{min-height:48px;padding:0 24px;display:inline-flex;align-items:center;justify-content:center;border-radius:99px;font-size:15px;font-weight:600;transition:background .15s,transform .15s}.button:active{transform:scale(var(--teho-press-scale))}.button.primary{color:var(--md-sys-color-on-primary-container);background:var(--md-sys-color-primary-container)}.button.primary:hover{background:color-mix(in srgb,var(--md-sys-color-primary-container) 88%,white)}.button.tonal{color:var(--md-sys-color-on-secondary-container);background:var(--md-sys-color-secondary-container)}.button.tonal:hover{background:color-mix(in srgb,var(--md-sys-color-secondary-container) 88%,white)}.heroStats{margin:36px 0 0;display:flex;flex-wrap:wrap;gap:var(--teho-group-gap)}.heroStats div{padding:12px 18px;background:var(--md-sys-color-surface-container-low);border-radius:var(--teho-shape-group-inner)}.heroStats div:first-child{border-radius:20px var(--teho-shape-group-inner) var(--teho-shape-group-inner) 20px}.heroStats div:last-child{border-radius:var(--teho-shape-group-inner) 20px 20px var(--teho-shape-group-inner)}.heroStats dt{color:var(--text-muted);font-size:13px;font-weight:600;letter-spacing:0}.heroStats dd{margin:2px 0 0;font-size:19px;font-weight:600}.heroCode{position:relative;min-width:0}.heroCode:before{content:"";position:absolute;inset:-40px -20px;z-index:-1;background:radial-gradient(closest-side,color-mix(in srgb,#f472b6 20%,transparent),transparent);filter:blur(10px)}.heroCode .code{margin:0;box-shadow:0 28px 80px -24px rgba(0,0,0,.7)}.heroCode .codeBody pre{font-size:13.4px}.platformStrip{padding:18px 0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;border-block:1px solid var(--line)}.platformStrip span{padding:6px 14px;border-radius:99px;background:var(--md-sys-color-surface-container-low);color:var(--text-muted);font-size:13.5px;font-weight:600}.homeSection{padding-top:clamp(56px,7vw,96px)}.sectionHead{max-width:680px;margin-bottom:26px}.sectionHead h2{margin:0;font-size:clamp(26px,3.2vw,36px);line-height:1.15;font-weight:500;letter-spacing:-.025em}.sectionHead p{margin:10px 0 0;color:var(--text-muted);font-size:16.5px}.highlightGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--teho-group-gap)}.highlight{min-height:200px;padding:24px;display:flex;flex-direction:column;gap:10px;background:var(--md-sys-color-surface-container-low);border-radius:var(--teho-shape-group-inner);transition:background .16s}.highlight:first-child{border-radius:var(--teho-shape-group-outer) var(--teho-shape-group-inner) var(--teho-shape-group-inner) var(--teho-shape-group-outer)}.highlight:last-child{border-radius:var(--teho-shape-group-inner) var(--teho-shape-group-outer) var(--teho-shape-group-outer) var(--teho-shape-group-inner)}.highlight:hover{background:var(--md-sys-color-surface-container)}.highlight strong{font-size:18px;font-weight:600;letter-spacing:-.01em}.highlight span{color:var(--text-muted);font-size:14.5px;line-height:1.55}.moduleCards{grid-template-columns:repeat(auto-fill,minmax(min(250px,100%),1fr))}.pathGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.path{padding:26px;display:flex;flex-direction:column;gap:6px;border:1px solid var(--line);border-radius:var(--md-sys-shape-corner-extra-large);background:linear-gradient(160deg,color-mix(in srgb,#f472b6 11%,var(--md-sys-color-surface-container-low)),var(--md-sys-color-surface-container-low) 60%);transition:border-color .16s}.path:hover{border-color:color-mix(in srgb,var(--md-sys-color-primary) 40%,transparent)}.path .eyebrow{margin:0 0 4px}.path strong{font-size:20px;font-weight:600}.path span{color:var(--text-muted);font-size:14.5px}.footer{border-top:1px solid var(--line)}.footerLogo{display:block;flex:none;width:auto;height:18px;max-width:80px;object-fit:contain}.footerInner{width:min(100%,var(--page-width));margin:0 auto;padding:18px var(--gutter);display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;color:var(--text-muted);font-size:12.5px;line-height:1.5}.footerBrand{color:var(--md-sys-color-on-surface);font-weight:600}.footerRule{flex:1 1}.footerInner a:not(.footerBrand):hover{color:var(--md-sys-color-on-surface)}@media (max-width:1180px){.docs{grid-template-columns:var(--sidebar) minmax(0,1fr)}.toc{display:none}.highlightGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.highlight:nth-child(n){border-radius:var(--teho-shape-group-inner)}.highlight:first-child{border-top-left-radius:var(--teho-shape-group-outer)}.highlight:nth-child(2){border-top-right-radius:var(--teho-shape-group-outer)}.highlight:nth-child(3){border-bottom-left-radius:var(--teho-shape-group-outer)}.highlight:last-child{border-bottom-right-radius:var(--teho-shape-group-outer)}}@media (max-width:960px){.hero,.pathGrid{grid-template-columns:minmax(0,1fr)}}@media (max-width:860px){.docs{display:block}.menuButton{display:inline-grid;place-items:center}.topnav>a{min-height:36px;padding:0 8px;font-size:13px}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:60;width:min(320px,86vw);height:100%;padding:20px 14px 40px;background:var(--md-sys-color-surface-container-low);border-radius:0 var(--md-sys-shape-corner-extra-large) var(--md-sys-shape-corner-extra-large) 0;transform:translateX(-104%);transition:transform var(--teho-motion-spatial)}.sidebar.open{transform:none}.filter{box-shadow:0 -24px 0 var(--md-sys-color-surface-container-low);background:var(--md-sys-color-surface-container)}.scrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .2s}.scrim.visible{opacity:1;pointer-events:auto}.docMain{padding-top:28px}.anchorLink{display:none}}@media (max-width:560px){body{font-size:15px}.brandBy,.brandDivider{display:none}.topnav .navPrimary{padding:0 14px;font-size:13px}.highlightGrid{grid-template-columns:minmax(0,1fr)}.highlight:nth-child(n){min-height:0;border-radius:var(--teho-shape-group-inner)}.highlight:first-child{border-radius:var(--teho-shape-group-outer) var(--teho-shape-group-outer) var(--teho-shape-group-inner) var(--teho-shape-group-inner)}.highlight:last-child{border-radius:var(--teho-shape-group-inner) var(--teho-shape-group-inner) var(--teho-shape-group-outer) var(--teho-shape-group-outer)}.heroStats{display:grid;grid-template-columns:1fr 1fr 1.3fr}.heroStats div{padding:10px 12px}.heroStats dt{font-size:10.5px;letter-spacing:.03em}.heroStats dd{font-size:16px}.pager{grid-template-columns:minmax(0,1fr)}.pagerLink.next{grid-column:1}.steps>h3{padding-left:40px}.steps>:not(h3){margin-left:0}.codeBody pre{font-size:12.6px;padding:14px}.fact:nth-child(n){border-radius:var(--teho-shape-group-inner)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}.shot{margin:4px 0 28px}.shotFrame{overflow:hidden;border:1px solid var(--line);border-radius:var(--md-sys-shape-corner-large);background:var(--md-sys-color-surface-container-lowest);box-shadow:0 18px 50px -28px rgba(0,0,0,.8)}.shotFrame img{display:block;width:100%;height:auto;image-rendering:auto}.shot figcaption{margin-top:10px;color:var(--text-muted);font-size:13.5px;line-height:1.5;text-align:center}.shotGrid{margin:4px 0 28px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.shotGrid .shot{margin:0}@media (max-width:560px){.shotGrid{grid-template-columns:minmax(0,1fr)}}.readTime{margin-left:10px;padding-left:10px;border-left:1px solid var(--md-sys-color-outline-variant);color:var(--text-muted);font-weight:500;letter-spacing:0}.intro{margin-top:24px;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--teho-group-gap)}.intro>div{padding:16px 18px;background:var(--md-sys-color-surface-container-low);border-radius:var(--teho-shape-group-inner)}.intro>div:first-child{border-radius:20px var(--teho-shape-group-inner) var(--teho-shape-group-inner) 20px}.intro>div:last-child{border-radius:var(--teho-shape-group-inner) 20px 20px var(--teho-shape-group-inner)}.intro>div:only-child{border-radius:20px}.introLabel{margin:0 0 8px;color:var(--md-sys-color-primary);font-size:13px;font-weight:600;letter-spacing:0}.introUses ul{margin:0;padding:0;list-style:none}.introUses li{position:relative;margin:6px 0 0;padding-left:20px;color:var(--md-sys-color-on-surface);font-size:14.5px;line-height:1.45}.introUses li:before{content:"";position:absolute;left:2px;top:.5em;width:8px;height:8px;border-radius:3px;background:var(--md-sys-color-primary-container)}.introTry{display:flex;flex-direction:column;justify-content:space-between}.introTry p:not(.introLabel){margin:0 0 10px;color:var(--text-muted);font-size:13.5px}.tryLine{display:flex;align-items:center;gap:6px;padding:6px 6px 6px 12px;border:1px solid var(--line);border-radius:var(--md-sys-shape-corner-medium);background:var(--md-sys-color-surface-container-lowest)}.prose .tryLine code{flex:1 1;min-width:0;padding:0;background:none;color:var(--md-sys-color-on-surface);font-size:12.8px;overflow-wrap:anywhere}@media (max-width:720px){.intro{grid-template-columns:minmax(0,1fr)}.intro>div:first-child{border-radius:20px 20px var(--teho-shape-group-inner) var(--teho-shape-group-inner)}.intro>div:last-child{border-radius:var(--teho-shape-group-inner) var(--teho-shape-group-inner) 20px 20px}.intro>div:only-child{border-radius:20px}}.recipeGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.recipe{position:relative;padding:24px 24px 22px;display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:var(--md-sys-shape-corner-extra-large);background:var(--md-sys-color-surface-container-low);transition:border-color .16s,background .16s,transform .16s}.recipe:hover{border-color:color-mix(in srgb,var(--md-sys-color-primary) 40%,transparent);background:var(--md-sys-color-surface-container)}.recipe:active{transform:scale(var(--teho-press-scale))}.recipeNumber{color:var(--md-sys-color-primary);font-family:var(--mono);font-size:13px}.recipe strong{font-size:19px;font-weight:600;letter-spacing:-.01em}.recipe span:not(.recipeNumber){color:var(--text-muted);font-size:14.5px;line-height:1.5}.recipe em{margin-top:auto;padding-top:8px;color:var(--md-sys-color-primary);font-size:14px;font-style:normal;font-weight:600}@media (max-width:960px){.recipeGrid{grid-template-columns:minmax(0,1fr)}}@font-face{font-family:googleSans;src:url(/_next/static/media/5f7884caa5c77b3c-s.p.woff2) format("woff2");font-display:swap;font-weight:400 600;font-style:normal}@font-face{font-family:googleSans;src:url(/_next/static/media/501d42573397a437-s.p.woff2) format("woff2");font-display:swap;font-weight:400 600;font-style:normal}@font-face{font-family:googleSans Fallback;src:local("Arial");ascent-override:96.60%;descent-override:28.60%;line-gap-override:0.00%;size-adjust:100.00%}.__className_fc469a{font-family:googleSans,googleSans Fallback}.__variable_fc469a{--font-google-sans:"googleSans","googleSans Fallback"}