*,:before,:after{box-sizing:border-box}html{font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";line-height:1.15;-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentcolor}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors:active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:0 auto auto 0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}@font-face{font-family:Charter;font-style:normal;font-weight:400;font-display:swap;src:local("Charter"),local("Bitstream Charter"),url("./media/charter_regular-NSNTDTFJ.woff2") format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Charter;font-style:normal;font-weight:400;font-display:swap;src:local("Charter"),local("Bitstream Charter"),url("./media/charter_regular-NSNTDTFJ.woff2") format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Charter;font-style:normal;font-weight:400;font-display:swap;src:local("Charter"),local("Bitstream Charter"),url("./media/charter_regular-NSNTDTFJ.woff2") format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Charter;font-style:normal;font-weight:400;font-display:swap;src:local("Charter"),local("Bitstream Charter"),url("./media/charter_regular-NSNTDTFJ.woff2") format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Charter;font-style:normal;font-weight:400;font-display:swap;src:local("Charter"),local("Bitstream Charter"),url("./media/charter_regular-NSNTDTFJ.woff2") format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Charter;font-style:normal;font-weight:400;font-display:swap;src:local("Charter"),local("Bitstream Charter"),url("./media/charter_regular-NSNTDTFJ.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Charter;font-style:normal;font-weight:700;font-display:swap;src:local("Charter Bold"),local("Bitstream Charter Bold"),url("./media/charter_bold-TRQYOVUT.woff2") format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Charter;font-style:normal;font-weight:700;font-display:swap;src:local("Charter Bold"),local("Bitstream Charter Bold"),url("./media/charter_bold-TRQYOVUT.woff2") format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Charter;font-style:normal;font-weight:700;font-display:swap;src:local("Charter Bold"),local("Bitstream Charter Bold"),url("./media/charter_bold-TRQYOVUT.woff2") format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Charter;font-style:normal;font-weight:700;font-display:swap;src:local("Charter Bold"),local("Bitstream Charter Bold"),url("./media/charter_bold-TRQYOVUT.woff2") format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Charter;font-style:normal;font-weight:700;font-display:swap;src:local("Charter Bold"),local("Bitstream Charter Bold"),url("./media/charter_bold-TRQYOVUT.woff2") format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Charter;font-style:normal;font-weight:700;font-display:swap;src:local("Charter Bold"),local("Bitstream Charter Bold"),url("./media/charter_bold-TRQYOVUT.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Charter;font-style:italic;font-weight:400;font-display:swap;src:local("Charter Italic"),local("Bitstream Charter Italic"),url("./media/charter_italic-2IPSVQQA.woff2") format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Charter;font-style:italic;font-weight:400;font-display:swap;src:local("Charter Italic"),local("Bitstream Charter Italic"),url("./media/charter_italic-2IPSVQQA.woff2") format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Charter;font-style:italic;font-weight:400;font-display:swap;src:local("Charter Italic"),local("Bitstream Charter Italic"),url("./media/charter_italic-2IPSVQQA.woff2") format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Charter;font-style:italic;font-weight:400;font-display:swap;src:local("Charter Italic"),local("Bitstream Charter Italic"),url("./media/charter_italic-2IPSVQQA.woff2") format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Charter;font-style:italic;font-weight:400;font-display:swap;src:local("Charter Italic"),local("Bitstream Charter Italic"),url("./media/charter_italic-2IPSVQQA.woff2") format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Charter;font-style:italic;font-weight:400;font-display:swap;src:local("Charter Italic"),local("Bitstream Charter Italic"),url("./media/charter_italic-2IPSVQQA.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Charter;font-style:italic;font-weight:700;font-display:swap;src:local("Charter Bold Italic"),local("Bitstream Charter Bold Italic"),url("./media/charter_bold_italic-Q5BRNGPI.woff2") format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Charter;font-style:italic;font-weight:700;font-display:swap;src:local("Charter Bold Italic"),local("Bitstream Charter Bold Italic"),url("./media/charter_bold_italic-Q5BRNGPI.woff2") format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Charter;font-style:italic;font-weight:700;font-display:swap;src:local("Charter Bold Italic"),local("Bitstream Charter Bold Italic"),url("./media/charter_bold_italic-Q5BRNGPI.woff2") format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Charter;font-style:italic;font-weight:700;font-display:swap;src:local("Charter Bold Italic"),local("Bitstream Charter Bold Italic"),url("./media/charter_bold_italic-Q5BRNGPI.woff2") format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Charter;font-style:italic;font-weight:700;font-display:swap;src:local("Charter Bold Italic"),local("Bitstream Charter Bold Italic"),url("./media/charter_bold_italic-Q5BRNGPI.woff2") format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Charter;font-style:italic;font-weight:700;font-display:swap;src:local("Charter Bold Italic"),local("Bitstream Charter Bold Italic"),url("./media/charter_bold_italic-Q5BRNGPI.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Phosphor;src:url("./media/phosphor-D6JDXSOQ.woff2") format("woff2");font-weight:400;font-style:normal;font-display:block}.ph{font-family:Phosphor!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;letter-spacing:0;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;font-feature-settings:"liga";-webkit-font-variant-ligatures:discretionary-ligatures;font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--icon-angular-logo: "\eb80";--icon-arrow-left: "\e058";--icon-arrow-line-up: "\e066";--icon-arrow-right: "\e06c";--icon-arrow-square-out: "\e5de";--icon-caret-down: "\e136";--icon-caret-right: "\e13a";--icon-caret-up: "\e13c";--icon-chalkboard-teacher: "\e600";--icon-cloud: "\e1aa";--icon-envelope: "\e214";--icon-file-text: "\e23a";--icon-folder: "\e24a";--icon-folder-open: "\e256";--icon-github-logo: "\e576";--icon-globe: "\e288";--icon-graduation-cap: "\e62c";--icon-identification-card: "\e2c8";--icon-link: "\e2e2";--icon-linkedin-logo: "\e2ee";--icon-list: "\e2f0";--icon-magnifying-glass: "\e30c";--icon-moon: "\e330";--icon-notebook: "\e34e";--icon-phone: "\e3b8";--icon-printer: "\e3dc";--icon-rss: "\e400";--icon-sun: "\e472";--icon-trophy: "\e67e";--icon-users-three: "\e68e";--icon-x: "\e4f6";--icon-x-logo: "\e4bc"}.ph.ph-angular-logo:before{content:var(--icon-angular-logo)}.ph.ph-arrow-left:before{content:var(--icon-arrow-left)}.ph.ph-arrow-line-up:before{content:var(--icon-arrow-line-up)}.ph.ph-arrow-right:before{content:var(--icon-arrow-right)}.ph.ph-arrow-square-out:before{content:var(--icon-arrow-square-out)}.ph.ph-caret-down:before{content:var(--icon-caret-down)}.ph.ph-caret-right:before{content:var(--icon-caret-right)}.ph.ph-caret-up:before{content:var(--icon-caret-up)}.ph.ph-chalkboard-teacher:before{content:var(--icon-chalkboard-teacher)}.ph.ph-cloud:before{content:var(--icon-cloud)}.ph.ph-envelope:before{content:var(--icon-envelope)}.ph.ph-file-text:before{content:var(--icon-file-text)}.ph.ph-folder:before{content:var(--icon-folder)}.ph.ph-folder-open:before{content:var(--icon-folder-open)}.ph.ph-github-logo:before{content:var(--icon-github-logo)}.ph.ph-globe:before{content:var(--icon-globe)}.ph.ph-graduation-cap:before{content:var(--icon-graduation-cap)}.ph.ph-identification-card:before{content:var(--icon-identification-card)}.ph.ph-link:before{content:var(--icon-link)}.ph.ph-linkedin-logo:before{content:var(--icon-linkedin-logo)}.ph.ph-list:before{content:var(--icon-list)}.ph.ph-magnifying-glass:before{content:var(--icon-magnifying-glass)}.ph.ph-moon:before{content:var(--icon-moon)}.ph.ph-notebook:before{content:var(--icon-notebook)}.ph.ph-phone:before{content:var(--icon-phone)}.ph.ph-printer:before{content:var(--icon-printer)}.ph.ph-rss:before{content:var(--icon-rss)}.ph.ph-sun:before{content:var(--icon-sun)}.ph.ph-trophy:before{content:var(--icon-trophy)}.ph.ph-users-three:before{content:var(--icon-users-three)}.ph.ph-x:before{content:var(--icon-x)}.ph.ph-x-logo:before{content:var(--icon-x-logo)}:root{color-scheme:light;--accent-rose: #875f5a;--accent-blush: #8a6069;--accent-pink: #806174;--accent-mauve: #765f70;--accent-red: #8a5656;--accent-maroon: #805562;--accent-clay: #835e52;--accent-ochre: #75613e;--accent-sage: #5d725f;--accent-teal: #526f6b;--accent-sky: #586f77;--accent-slate: #566f7a;--accent-blue: #536b80;--accent-lavender: #69627c;--text-color: #454a47;--text-secondary: #656b66;--syntax-muted: #686d68;--overlay-color: #858981;--overlay-strong: #737870;--surface-strong: #b4aea5;--surface: #c9c3ba;--surface-soft: #ddd8cf;--paper-bg: #f4f1eb;--background: #e7e2d9;--background-deep: #d9d3c9;--link-color: var(--accent-blue);--link-hover-color: var(--accent-mauve);--border-color: var(--surface-strong);--on-accent: var(--paper-bg);--shadow-color: color-mix(in srgb, var(--overlay-color) 20%, transparent);--shadow-color-strong: color-mix(in srgb, var(--overlay-strong) 32%, transparent);--backdrop-bg: color-mix(in srgb, var(--text-color) 42%, transparent);--backdrop-bg-strong: color-mix(in srgb, var(--text-color) 52%, transparent);--border-light: color-mix(in srgb, var(--border-color) 15%, transparent);--accent-bg: color-mix(in srgb, var(--link-color) 8%, transparent);--selection-bg: color-mix(in srgb, var(--accent-blue) 26%, transparent);--paper-shadow: 0 1px 3px color-mix(in srgb, var(--overlay-color) 13%, transparent), 0 12px 30px var(--shadow-color);--code-header-bg: color-mix(in srgb, var(--border-color) 6%, var(--paper-bg));--syntax-rose: var(--accent-rose);--syntax-blush: var(--accent-blush);--syntax-pink: var(--accent-pink);--syntax-mauve: var(--accent-mauve);--syntax-red: var(--accent-red);--syntax-maroon: var(--accent-maroon);--syntax-clay: var(--accent-clay);--syntax-ochre: var(--accent-ochre);--syntax-sage: var(--accent-sage);--syntax-teal: var(--accent-teal);--syntax-sky: var(--accent-sky);--syntax-slate: var(--accent-slate);--syntax-blue: var(--accent-blue);--syntax-lavender: var(--accent-lavender);--syntax-text: var(--text-color);--syntax-subtle: var(--text-secondary);--syntax-surface: var(--surface-strong);--syntax-background: var(--paper-bg);--font-body: "Roboto", sans-serif;--font-heading: "Space Grotesk", system-ui, -apple-system, sans-serif;--font-mono: "Google Sans Code", monospace}[data-theme=dark]{color-scheme:dark;--accent-rose: #c4a199;--accent-blush: #c49aa3;--accent-pink: #b99aaa;--accent-mauve: #b7a1af;--accent-red: #c18d8d;--accent-maroon: #b98d99;--accent-clay: #c49b8b;--accent-ochre: #c0aa7a;--accent-sage: #98ad98;--accent-teal: #91ada7;--accent-sky: #94abb1;--accent-slate: #92aab2;--accent-blue: #9aaebc;--accent-lavender: #aba5bc;--text-color: #d9d3c9;--text-secondary: #b4aea4;--syntax-muted: #a7a9a2;--overlay-color: #858981;--overlay-strong: #9b9d94;--surface-strong: #626760;--surface: #4c524d;--surface-soft: #3a403c;--paper-bg: #2c312e;--background: #202421;--background-deep: #191d1b;--link-color: var(--accent-blue);--link-hover-color: var(--accent-lavender);--border-color: var(--surface-strong);--on-accent: var(--background);--shadow-color: color-mix(in srgb, var(--background-deep) 52%, transparent);--shadow-color-strong: color-mix(in srgb, var(--background-deep) 70%, transparent);--backdrop-bg: color-mix(in srgb, var(--background-deep) 64%, transparent);--backdrop-bg-strong: color-mix(in srgb, var(--background-deep) 76%, transparent);--selection-bg: color-mix(in srgb, var(--accent-blue) 30%, transparent);--paper-shadow: 0 1px 4px color-mix(in srgb, var(--background-deep) 48%, transparent), 0 14px 34px var(--shadow-color-strong)}@media print{:root{color-scheme:light;--accent-rose: #875f5a;--accent-blush: #8a6069;--accent-pink: #806174;--accent-mauve: #765f70;--accent-red: #8a5656;--accent-maroon: #805562;--accent-clay: #835e52;--accent-ochre: #75613e;--accent-sage: #5d725f;--accent-teal: #526f6b;--accent-sky: #586f77;--accent-slate: #566f7a;--accent-blue: #536b80;--accent-lavender: #69627c;--text-color: #303532;--text-secondary: #555b56;--syntax-muted: #555b56;--overlay-color: #777b76;--overlay-strong: #626762;--surface-strong: #a9aaa6;--surface: #c5c6c2;--surface-soft: #e5e5e2;--paper-bg: #fff;--background: #fff;--background-deep: #fff;--link-color: var(--accent-blue);--link-hover-color: var(--accent-mauve);--border-color: var(--surface-strong);--on-accent: #fff;--shadow-color: transparent;--shadow-color-strong: transparent;--paper-shadow: none}}.vision-example-bird__sky{fill:color-mix(in srgb,var(--accent-sky) 12%,var(--paper-bg))}.vision-example-bird__foliage{fill:color-mix(in srgb,var(--accent-sage) 20%,var(--paper-bg))}.vision-example-bird__branch,.vision-example-bird__feet{fill:none;stroke:var(--accent-clay);stroke-width:5;stroke-linecap:round}.vision-example-bird__feet{stroke-width:2}.vision-example-bird__leaf{fill:var(--accent-sage)}.vision-example-bird__body{fill:var(--accent-sky)}.vision-example-bird__wing{fill:var(--accent-blue);stroke:var(--paper-bg);stroke-width:.7}.vision-example-bird__accent{fill:var(--accent-ochre)}.vision-example-bird__eye{fill:var(--text-color)}.vision-example-bird__glint{fill:var(--paper-bg)}::selection{color:var(--text-color);background:var(--selection-bg)}*{margin:0;padding:0}html{--toolbar-height: 56px;--toolbar-safe-area-top: env(safe-area-inset-top, 0px);--toolbar-clearance: calc(var(--toolbar-safe-area-top) + var(--toolbar-height) + 1rem);font-size:15px;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media(max-width:768px){html{--toolbar-height: 52px;font-size:14px}}body{font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--text-color);background:var(--background);transition:background .3s ease,color .3s ease;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--link-color);text-decoration:none;transition:color .2s ease-in-out,text-decoration-color .2s ease-in-out}a:hover{color:var(--link-hover-color);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px}.medium-zoom-overlay{z-index:2000}.medium-zoom-image--opened{z-index:2001}[data-theme=dark] .shiki,[data-theme=dark] .shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}@media print{@page{size:A4;margin:10mm}body{background:#fff!important;color:var(--text-color);font-size:10.5pt;line-height:1.5}.toolbar{display:none!important}.paper{max-width:100%;width:100%;margin:0;padding:0;background:#fff!important;box-shadow:none;border-radius:0}a{color:var(--link-color);text-decoration:underline}*{transition:none!important}h1,h2,h3,h4,h5,h6{break-after:avoid;page-break-after:avoid}p{orphans:3;widows:3}}
