<!DOCTYPE html><!-- We set all theme classes to allow critters to inline the theme styles and prevent flickering --><html lang="en" class="docs-dark-mode docs-light-mode" data-beasties-container><head>
    <script>
      // This logic must execute early, so that we set the necessary
      // CSS classes to the document node and avoid unstyled content
      // from appearing on the page.
      const THEME_PREFERENCE_LOCAL_STORAGE_KEY = 'themePreference';
      const DARK_MODE_CLASS_NAME = 'docs-dark-mode';
      const LIGHT_MODE_CLASS_NAME = 'docs-light-mode';
      const PREFERS_COLOR_SCHEME_DARK = '(prefers-color-scheme: dark)';

      const theme = localStorage.getItem(THEME_PREFERENCE_LOCAL_STORAGE_KEY) ?? 'auto';
      const prefersDark = window.matchMedia && window.matchMedia(PREFERS_COLOR_SCHEME_DARK).matches;
      const documentClassList = this.document.documentElement.classList;

      // clearing classes before setting them.
      this.document.documentElement.className = '';
      if (theme === 'dark' || (theme === 'auto' && prefersDark)) {
        documentClassList.add(DARK_MODE_CLASS_NAME);
      } else {
        documentClassList.add(LIGHT_MODE_CLASS_NAME);
      }

      if (location.search.includes('uwu')) {
        documentClassList.add('uwu');
      }
    </script>
    <style>
      .uwu-logo {
        display: none;
      }
      html.uwu .angular-logo {
        display: none;
      }
      html.uwu .uwu-logo {
        display: block !important;
      }
    </style>

    <meta charset="utf-8">
    <title>Home • Angular</title>
    <base href="/">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Primary Meta Tags -->
    <meta name="description" content="The web development framework for building modern apps.">
    <meta name="author" content="Angular Team">
    <meta name="keywords" content="Angular framework, TypeScript, web development, hydration, Signals, standalone components, accessibility, performance">

    <!-- Favicons -->
    <link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="48x48" href="/assets/icons/favicon-48x48.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png">
    <link rel="manifest" href="/assets/icons/site.webmanifest">
    <link rel="mask-icon" href="/assets/icons/safari-pinned-tab.svg" color="#e90464">
    <link rel="shortcut icon" href="/assets/icons/favicon.ico">
    <link rel="canonical" href="https://angular.dev/">

    <meta name="apple-mobile-web-app-title" content="Angular">
    <meta name="application-name" content="Angular">
    <meta name="msapplication-TileColor" content="#e90464">
    <meta name="msapplication-config" content="/assets/icons/browserconfig.xml">
    <meta name="theme-color" content="#ffffff">

    <!-- Open Graph / Facebook -->
    <meta property="og:type" content="website">
    <meta property="og:url" content="https://angular.dev/">
    <meta property="og:title" content="Home • Angular">
    <meta property="og:description" content="The web development framework for building modern apps.">
    <meta property="og:image" content="https://angular.dev/assets/images/ng-image.jpg">

    <!-- Twitter -->
    <meta name="twitter:site" content="@Angular">
    <meta name="twitter:creator" content="@Angular">
    <meta property="twitter:card" content="summary_large_image">
    <meta property="twitter:url" content="https://angular.dev/">
    <meta property="twitter:title" content="Home • Angular">
    <meta property="twitter:description" content="The web development framework for building modern apps.">
    <meta property="twitter:image" content="https://angular.dev/assets/images/ng-image.jpg">

    <!-- Fonts -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter+Tight:wght@500;600&amp;family=Inter:wght@400;500;600&amp;family=DM+Mono:ital@0;1&amp;display=swap" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" rel="stylesheet">
  <style>html{--mat-snack-bar-container-shape: .25rem;--mat-snack-bar-container-color: var(--page-background);--mat-snack-bar-supporting-text-color: var(--primary-contrast)}html{--mat-chip-outline-color: var(--quinary-contrast);--mat-chip-disabled-outline-color: var(--quinary-contrast);--mat-chip-flat-selected-outline-width: 1px;--mat-chip-label-text-color: var(--tertiary-contrast);--mat-chip-label-text-size: 14px;--mat-chip-label-text-line-height: 20px;--mat-chip-with-icon-icon-color: var(--french-violet);--mat-chip-with-icon-selected-icon-color: var(--french-violet);--mat-chip-selected-label-text-color: var(--french-violet);--mat-chip-focus-outline-color: var(--french-violet)}:root{--mat-button-toggle-text-color: var(--primary-contrast);--mat-button-toggle-background-color: var(--octonary-contrast);--mat-button-toggle-selected-state-text-color: var(--secondary-contrast);--mat-button-toggle-selected-state-background-color: var(--senary-contrast)}.docs-light-mode{background-color:#fff;color-scheme:light;--bright-blue: oklch(51.01% .274 263.83);--indigo-blue: oklch(51.64% .229 281.65);--electric-violet: oklch(53.18% .28 296.97);--electric-violet-header: oklch(53.18% .28 296.97);--french-violet: oklch(47.66% .246 305.88);--vivid-pink: oklch(69.02% .277 332.77);--always-pink: oklch(69.02% .277 332.77);--hot-pink: oklch(59.91% .239 8.14);--hot-pink-header: oklch(59.91% .239 8.14);--hot-red: oklch(61.42% .238 15.34);--orange-red: oklch(63.32% .24 31.68);--super-green: oklch(79.12% .257 155.13);--deprecated-light: oklch(95% .02 304.04);--deprecated-docs-bg: var(--deprecated-light);--subtle-purple: color-mix(in srgb, var(--bright-blue) 5%, white 10%);--subtle-blue: color-mix(in srgb, var(--bright-blue) 5%, white 95%);--light-blue: color-mix(in srgb, var(--bright-blue), white 50%);--light-violet: color-mix(in srgb, var(--electric-violet), white 65%);--light-orange: color-mix(in srgb, var(--orange-red), white 50%);--light-pink: color-mix(in srgb, var(--vivid-pink) 10%, white 80%);--symbolic-purple: oklch(42.86% .29 266.4);--symbolic-gray: oklch(66.98% 0 0);--symbolic-blue: oklch(42.45% .223 263.38);--symbolic-pink: oklch(63.67% .254 13.47);--symbolic-orange: oklch(64.73% .23769984683784018 33.18328352127882);--symbolic-yellow: oklch(78.09% .163 65.69);--symbolic-green: oklch(48% .16 145);--symbolic-cyan: oklch(67.05% .1205924489987394 181.34025902203868);--symbolic-magenta: oklch(51.74% .25453048882711515 315.26261625862725);--symbolic-teal: oklch(57.59% .083 230.58);--symbolic-brown: oklch(49.06% .128 46.41);--symbolic-lime: oklch(70.33% .2078857836035299 135.66843631046476);--red-to-pink-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 11.42%, var(--hot-red) 34.83%, var(--vivid-pink) 60.69% );--red-to-pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--orange-red) 0%, var(--vivid-pink) 50%, var(--electric-violet) 100% );--pink-to-highlight-to-purple-to-blue-horizontal-gradient: linear-gradient( 140deg, var(--vivid-pink) 0%, var(--vivid-pink) 15%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 50%) 25%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 10%) 35%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 42%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 44%, color-mix(in srgb, var(--vivid-pink), var(--page-background) 70%) 47%, var(--electric-violet) 48%, var(--bright-blue) 60% );--purple-to-blue-horizontal-gradient: linear-gradient( 90deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--purple-to-blue-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--red-to-orange-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 0%, var(--orange-red) 100% );--red-to-orange-vertical-gradient: linear-gradient( 0deg, var(--hot-pink) 0%, var(--orange-red) 100% );--pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--vivid-pink) 0%, var(--electric-violet) 100% );--pink-to-purple-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--vivid-pink) 100% );--pink-to-white-horizontal-gradient: linear-gradient( 90deg, var(--vivid-pink) 0%, oklch(91.75% .004 301.42deg) 60% );--light-pink-to-light-purple-horizontal-gradient: linear-gradient( 90deg, var(--light-pink) 0%, var(--light-purple) 100% );--light-vivid-pink-to-light-electric-violet-horizontal-gradient: linear-gradient( 90deg, color-mix(in srgb, var(--vivid-pink), white 90%), color-mix(in srgb, var(--electric-violet), white 90%) );--purple-to-light-purple-vertical-gradient: linear-gradient( 0deg, var(--french-violet) 0%, var(--light-violet) 100% );--green-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--symbolic-cyan) 0%, var(--super-green) 100% );--blue-to-teal-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--light-blue) 100% );--blue-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--symbolic-cyan) 100% );--black-to-gray-vertical-gradient: linear-gradient( 0deg, var(--primary-contrast) 0%, oklch(70.9% .015 304.04deg) 100% );--red-to-pink-vertical-gradient: linear-gradient(0deg, var(--hot-red) 0%, var(--vivid-pink) 100%);--orange-to-pink-vertical-gradient: linear-gradient( 0deg, var(--vivid-pink) 0%, var(--light-orange) 100% );--white-to-light-blue-diagonal-gradient: linear-gradient( 132.83deg, hsl(from color-mix(in srgb, var(--bright-blue), white 60%) h s l / 0) 45.38%, hsl(from color-mix(in srgb, var(--bright-blue), white 60%) h s l / .3) 159.03% );--white-to-light-pink-diagonal-gradient: linear-gradient( 135deg, white 30%, var(--light-pink) 100% );--page-bg-radial-gradient: radial-gradient(circle, white 0%, white 100%);--soft-pink-radial-gradient: radial-gradient( circle at center bottom, var(--light-pink) 0%, white 80% );--hot-pink-to-electric-violet-radial-gradient: radial-gradient( circle at 60% bottom, var(--hot-pink-header) 20%, var(--electric-violet-header) 100% );--full-contrast: black;--primary-contrast: oklch(19.37% .006 300.98deg);--secondary-contrast: oklch(25.16% .008 308.11deg);--tertiary-contrast: oklch(36.98% .014 302.71deg);--quaternary-contrast: oklch(54.84% .023 304.99deg);--quinary-contrast: oklch(84.01% .009 308.34deg);--senary-contrast: oklch(91.75% .004 301.42deg);--septenary-contrast: oklch(97.12% .002 325.59deg);--octonary-contrast: oklch(98.81% 0 0deg);--page-background: white;--gray-unfilled: oklch(70.9% .015 304.04deg);--webgl-page-background: var(var(--page-background)); --webgl-gray-unfilled: oklch(70.9% .015 304.04deg)}.docs-dark-mode{background-color:#0f0f11;color-scheme:dark;--bright-blue: oklch(51.01% .274 263.83);--indigo-blue: oklch(51.64% .229 281.65);--electric-violet: oklch(53.18% .28 296.97);--electric-violet-header: oklch(53.18% .28 296.97);--french-violet: oklch(47.66% .246 305.88);--vivid-pink: oklch(69.02% .277 332.77);--always-pink: oklch(69.02% .277 332.77);--hot-pink: oklch(59.91% .239 8.14);--hot-pink-header: oklch(59.91% .239 8.14);--hot-red: oklch(61.42% .238 15.34);--orange-red: oklch(63.32% .24 31.68);--super-green: oklch(79.12% .257 155.13);--deprecated-light: oklch(95% .02 304.04);--deprecated-docs-bg: var(--deprecated-light);--subtle-purple: color-mix(in srgb, var(--bright-blue) 5%, white 10%);--subtle-blue: color-mix(in srgb, var(--bright-blue) 5%, white 95%);--light-blue: color-mix(in srgb, var(--bright-blue), white 50%);--light-violet: color-mix(in srgb, var(--electric-violet), white 65%);--light-orange: color-mix(in srgb, var(--orange-red), white 50%);--light-pink: color-mix(in srgb, var(--vivid-pink) 10%, white 80%);--symbolic-purple: oklch(42.86% .29 266.4);--symbolic-gray: oklch(66.98% 0 0);--symbolic-blue: oklch(42.45% .223 263.38);--symbolic-pink: oklch(63.67% .254 13.47);--symbolic-orange: oklch(64.73% .23769984683784018 33.18328352127882);--symbolic-yellow: oklch(78.09% .163 65.69);--symbolic-green: oklch(48% .16 145);--symbolic-cyan: oklch(67.05% .1205924489987394 181.34025902203868);--symbolic-magenta: oklch(51.74% .25453048882711515 315.26261625862725);--symbolic-teal: oklch(57.59% .083 230.58);--symbolic-brown: oklch(49.06% .128 46.41);--symbolic-lime: oklch(70.33% .2078857836035299 135.66843631046476);--red-to-pink-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 11.42%, var(--hot-red) 34.83%, var(--vivid-pink) 60.69% );--red-to-pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--orange-red) 0%, var(--vivid-pink) 50%, var(--electric-violet) 100% );--pink-to-highlight-to-purple-to-blue-horizontal-gradient: linear-gradient( 140deg, var(--vivid-pink) 0%, var(--vivid-pink) 15%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 50%) 25%, color-mix(in srgb, var(--vivid-pink), var(--electric-violet) 10%) 35%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 42%, color-mix(in srgb, var(--vivid-pink), var(--orange-red) 50%) 44%, color-mix(in srgb, var(--vivid-pink), var(--page-background) 70%) 47%, var(--electric-violet) 48%, var(--bright-blue) 60% );--purple-to-blue-horizontal-gradient: linear-gradient( 90deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--purple-to-blue-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--bright-blue) 100% );--red-to-orange-horizontal-gradient: linear-gradient( 90deg, var(--hot-pink) 0%, var(--orange-red) 100% );--red-to-orange-vertical-gradient: linear-gradient( 0deg, var(--hot-pink) 0%, var(--orange-red) 100% );--pink-to-purple-horizontal-gradient: linear-gradient( 90deg, var(--vivid-pink) 0%, var(--electric-violet) 100% );--pink-to-purple-vertical-gradient: linear-gradient( 0deg, var(--electric-violet) 0%, var(--vivid-pink) 100% );--pink-to-white-horizontal-gradient: linear-gradient( 90deg, var(--vivid-pink) 0%, oklch(91.75% .004 301.42deg) 60% );--light-pink-to-light-purple-horizontal-gradient: linear-gradient( 90deg, var(--light-pink) 0%, var(--light-purple) 100% );--light-vivid-pink-to-light-electric-violet-horizontal-gradient: linear-gradient( 90deg, color-mix(in srgb, var(--vivid-pink), white 90%), color-mix(in srgb, var(--electric-violet), white 90%) );--purple-to-light-purple-vertical-gradient: linear-gradient( 0deg, var(--french-violet) 0%, var(--light-violet) 100% );--green-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--symbolic-cyan) 0%, var(--super-green) 100% );--blue-to-teal-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--light-blue) 100% );--blue-to-cyan-vertical-gradient: linear-gradient( 0deg, var(--bright-blue) 0%, var(--symbolic-cyan) 100% );--black-to-gray-vertical-gradient: linear-gradient( 0deg, var(--primary-contrast) 0%, oklch(70.9% .015 304.04deg) 100% );--red-to-pink-vertical-gradient: linear-gradient(0deg, var(--hot-red) 0%, var(--vivid-pink) 100%);--orange-to-pink-vertical-gradient: linear-gradient( 0deg, var(--vivid-pink) 0%, var(--light-orange) 100% );--white-to-light-blue-diagonal-gradient: linear-gradient( 132.83deg, hsl(from color-mix(in srgb, var(--bright-blue), white 60%) h s l / 0) 45.38%, hsl(from color-mix(in srgb, var(--bright-blue), white 60%) h s l / .3) 159.03% );--white-to-light-pink-diagonal-gradient: linear-gradient( 135deg, white 30%, var(--light-pink) 100% );--page-bg-radial-gradient: radial-gradient(circle, white 0%, white 100%);--soft-pink-radial-gradient: radial-gradient( circle at center bottom, var(--light-pink) 0%, white 80% );--full-contrast: black;--primary-contrast: oklch(19.37% .006 300.98deg);--secondary-contrast: oklch(25.16% .008 308.11deg);--tertiary-contrast: oklch(36.98% .014 302.71deg);--quaternary-contrast: oklch(54.84% .023 304.99deg);--quinary-contrast: oklch(84.01% .009 308.34deg);--senary-contrast: oklch(91.75% .004 301.42deg);--septenary-contrast: oklch(97.12% .002 325.59deg);--octonary-contrast: oklch(98.81% 0 0deg);--page-background: white;--gray-unfilled: oklch(70.9% .015 304.04deg);--webgl-page-background: var(var(--page-background)); --webgl-gray-unfilled: oklch(70.9% .015 304.04deg);--full-contrast: white;--primary-contrast: oklch(98.81% 0 0deg);--secondary-contrast: oklch(84.01% .009 308.34deg);--tertiary-contrast: oklch(84.01% .009 308.34deg);--quaternary-contrast: oklch(70.9% .015 304.04deg);--quinary-contrast: oklch(54.84% .023 304.99deg);--senary-contrast: oklch(36.98% .014 302.71deg);--septenary-contrast: oklch(25.16% .008 308.11deg);--octonary-contrast: oklch(19.37% .006 300.98deg);--page-background: oklch(16.93% .004 285.95deg);--bright-blue: color-mix(in srgb, oklch(51.01% .274 263.83), var(--full-contrast) 60%);--indigo-blue: color-mix(in srgb, oklch(51.64% .229 281.65), var(--full-contrast) 70%);--electric-violet: color-mix(in srgb, oklch(53.18% .28 296.97), var(--full-contrast) 70%);--electric-violet-header: color-mix(in srgb, oklch(53.18% .28 296.97), var(--full-contrast) 15%);--french-violet: color-mix(in srgb, oklch(47.66% .246 305.88), var(--full-contrast) 70%);--vivid-pink: color-mix(in srgb, oklch(69.02% .277 332.77), var(--full-contrast) 70%);--hot-pink: color-mix(in srgb, oklch(59.91% .239 8.14), var(--full-contrast) 70%);--hot-pink-header: color-mix(in srgb, oklch(59.91% .239 8.14), var(--full-contrast) 15%);--hot-red: color-mix(in srgb, oklch(61.42% .238 15.34), var(--full-contrast) 70%);--orange-red: color-mix(in srgb, oklch(63.32% .24 31.68), var(--full-contrast) 60%);--super-green: color-mix(in srgb, oklch(79.12% .257 155.13), var(--full-contrast) 70%);--light-vivid-pink-to-light-electric-violet-horizontal-gradient: linear-gradient(hsl(from oklch(16.93% .004 285.95deg) h s l / .9), hsl(from oklch(16.93% .004 285.95deg) h s l / .9)), linear-gradient( hsl(from var(--full-contrast) h s l / .2), hsl(from var(--full-contrast) h s l / .2) ), var(--pink-to-purple-horizontal-gradient);--white-to-light-pink-diagonal-gradient: color-mix( in srgb, var(--french-violet), var(--full-contrast) 60% );--deprecated-dark: oklch(30% .02 304.04);--deprecated-docs-bg: var(--deprecated-dark);--light-pink: color-mix(in srgb, var(--vivid-pink) 5%, var(--page-background) 75%);--subtle-blue: color-mix(in srgb, var(--bright-blue) 5%, var(--page-background) 90%);--symbolic-purple: color-mix(in srgb, oklch(42.86% .29 266.4), var(--full-contrast) 65%);--symbolic-gray: color-mix(in srgb, oklch(66.98% 0 0), var(--full-contrast) 65%);--symbolic-blue: color-mix(in srgb, oklch(42.45% .223 263.38), var(--full-contrast) 65%);--symbolic-pink: color-mix(in srgb, oklch(63.67% .254 13.47), var(--full-contrast) 65%);--symbolic-orange: color-mix( in srgb, oklch(64.73% .23769984683784018 33.18328352127882), var(--full-contrast) 65% );--symbolic-yellow: color-mix(in srgb, oklch(78.09% .163 65.69), var(--full-contrast) 65%);--symbolic-green: color-mix(in srgb, oklch(48% .16 145), var(--full-contrast) 65%);--symbolic-cyan: color-mix( in srgb, oklch(67.05% .1205924489987394 181.34025902203868), var(--full-contrast) 65% );--symbolic-magenta: color-mix( in srgb, oklch(51.74% .25453048882711515 315.26261625862725), var(--full-contrast) 65% );--symbolic-teal: color-mix(in srgb, oklch(57.59% .083 230.58), var(--full-contrast) 65%);--symbolic-brown: color-mix(in srgb, oklch(49.06% .128 46.41), var(--full-contrast) 65%);--symbolic-lime: color-mix( in srgb, oklch(70.33% .2078857836035299 135.66843631046476), var(--full-contrast) 65% );--page-bg-radial-gradient: radial-gradient(circle, black 0%, black 100%);--soft-pink-radial-gradient: var(--hot-pink-to-electric-violet-radial-gradient);--hot-pink-to-electric-violet-radial-gradient: radial-gradient( circle at 60% bottom, var(--hot-pink-header) 20%, var(--electric-violet-header) 100% );--gray-unfilled: oklch(36.98% .014 302.71deg);--webgl-page-background: oklch(16.93% .004 285.95deg);--webgl-gray-unfilled: oklch(36.98% .014 302.71deg)}:root{--z-index-mini-menu: 200;--z-index-top-level-banner: 150;--z-index-nav: 100;--z-index-cookie-consent: 200;--z-index-nav-tutorial: 75;--z-index-content: 50;--z-index-icon: 10}:root{--fallback-font-stack: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--page-width: 80ch;--layout-padding: 3.12rem;--primary-nav-width: 6.875rem;--secondary-nav-width: 16.25rem;--fixed-content-height: calc(100vh - var(--layout-padding) * 2)}@media(max-width:900px){:root{--layout-padding: 2rem}}@media(max-width:700px){:root{--layout-padding: 1rem}}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:var(--inter-font);font-size:16px;background-color:var(--page-background);color:var(--primary-contrast);transition:color .3s ease,background-color .3s ease;scroll-behavior:smooth}@media(prefers-reduced-motion){html{scroll-behavior:auto}}body{margin:0;overflow-y:auto;overflow-x:hidden}html,body{height:100vh;min-height:100vh}@supports (height: 100svh){html,body{height:100svh}}button{cursor:pointer}.docs-form-element{display:flex;align-items:center;gap:.5rem;border:1px solid var(--senary-contrast);border-radius:.25rem;padding:.5rem;background-color:var(--page-background);transition:color .3s ease,background-color .3s ease,border-color .3s ease}.docs-form-element docs-icon{color:var(--quinary-contrast);transition:color .3s ease}.docs-form-element input{width:16rem;-webkit-appearance:none;display:flex;flex:1;font-size:.875rem;border:none;outline:none;height:100%;background-color:var(--page-background);color:var(--tertiary-contrast);transition:color .3s ease,background-color .3s ease}.docs-form-element:focus-within{border:1px solid var(--french-violet)}.docs-form-element:focus-within docs-icon{color:var(--tertiary-contrast)}:root{--code-font: "DM Mono", monospace;--inter-font: "Inter", var(--fallback-font-stack);--inter-tight-font: "Inter Tight", var(--fallback-font-stack);--icons: "Material Symbols Outlined";--selection-background: var(--vivid-pink);--selection-color: var(--vivid-pink)}h1,h2,h3{font-family:var(--inter-tight-font);font-weight:500}p{font-size:.875rem;line-height:1.4rem;font-weight:400;letter-spacing:-.00875rem}ul{font-size:.875rem;line-height:1.4rem;font-weight:400;letter-spacing:-.01rem}a{text-decoration:none;font-weight:500;transition:color .3s ease}p>a,div>a:not(.docs-card),li:not(.docs-faceted-list *) a{color:var(--bright-blue)}p>a:hover,div>a:not(.docs-card):hover,li:not(.docs-faceted-list *) a:hover{color:var(--vivid-pink)}p>a:active,div>a:not(.docs-card):active,li:not(.docs-faceted-list *) a:active{color:var(--hot-red)}p>a{margin-block:0;text-decoration:underline}.docs-scroll-hide::-webkit-scrollbar-track{background:#0000}.docs-scroll-hide::-webkit-scrollbar{width:0}.docs-scroll-track-transparent-large::-webkit-scrollbar-track{background:#0000;cursor:pointer}.docs-scroll-track-transparent-large::-webkit-scrollbar{width:8px;height:8px}.docs-scroll-track-transparent-large::-webkit-scrollbar-thumb{background-color:var(--quinary-contrast);border-radius:10px;transition:background-color .3s ease}.docs-scroll-track-transparent-large::-webkit-scrollbar-thumb:hover{background-color:var(--quaternary-contrast)}button{font-family:var(--inter-font);background:transparent;-webkit-appearance:none;border:0;font-weight:600}button::-moz-focus-inner{border:0;padding:0}button:disabled{cursor:not-allowed}@property --angle{syntax: "<angle>"; initial-value: 90deg; inherits: false;}@keyframes spin-gradient{0%{--angle: 90deg}to{--angle: 450deg}}.docs-primary-btn{cursor:pointer;border:none;outline:none;position:relative;border-radius:.25rem;padding:.75rem 1.5rem;width:max-content;color:transparent;-webkit-user-select:none;user-select:none;--angle: 90deg;background:linear-gradient(var(--angle),var(--orange-red) 0%,var(--vivid-pink) 50%,var(--electric-violet) 100%)}.docs-primary-btn:before{content:attr(text);position:absolute;inset:1px;background:var(--page-bg-radial-gradient);border-radius:.2rem;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease,background .3s ease;color:var(--primary-contrast)}.docs-primary-btn:after{content:attr(text);position:absolute;inset:1px;background:var(--page-background);border-radius:.2rem;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease,background .3s ease;color:var(--primary-contrast)}.docs-primary-btn:hover{animation:spin-gradient 4s linear infinite forwards}.docs-primary-btn:hover:before{background-color:var(--page-background);background:var(--soft-pink-radial-gradient);opacity:.9}.docs-primary-btn:hover:after{opacity:0}.docs-primary-btn:active:before{opacity:.8}.docs-primary-btn:disabled{background:var(--quinary-contrast);color:var(--quinary-contrast)}.docs-primary-btn:disabled:before{background-color:var(--page-background);background:var(--page-bg-radial-gradient);opacity:1}kbd:not(:has(kbd)){position:relative;color:var(---tertiary-contrast);border:1px solid var(--quinary-contrast);box-shadow:0 1px #0003,0 0 0 2px var(--octonary-contrast) inset;text-shadow:0 1px 0 var(--octonary-contrast);border-radius:3px;display:inline-block;font-family:sans-serif;line-height:1.5;margin:0 .1em;padding:1px .4em;min-width:14px;min-height:20px;vertical-align:middle;text-align:center}@media(prefers-reduced-motion:no-preference){*:hover>kbd:not(:has(kbd)){box-shadow:0 .5px #0003,0 0 0 2px var(--octonary-contrast) inset;top:1px}}:root{--screen-xs: 700px;--screen-sm: 775px;--screen-md: 900px;--screen-lg: 1200px;--screen-xl: 1430px;--screen-xxl: 1800px}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}html{--mat-tab-container-height: 48px;--mat-tab-divider-color: transparent;--mat-tab-divider-height: 0;--mat-tab-active-indicator-height: 2px;--mat-tab-active-indicator-shape: 0}html{--mat-button-toggle-focus-state-layer-opacity: .12;--mat-button-toggle-hover-state-layer-opacity: .04;--mat-button-toggle-legacy-focus-state-layer-opacity: 1;--mat-button-toggle-legacy-height: 36px;--mat-button-toggle-legacy-shape: 2px;--mat-button-toggle-shape: 4px}html{--mat-button-toggle-background-color: white;--mat-button-toggle-disabled-selected-state-background-color: color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-disabled-selected-state-text-color: color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-toggle-disabled-state-background-color: white;--mat-button-toggle-disabled-state-text-color: color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-toggle-divider-color: rgba(0, 0, 0, .12);--mat-button-toggle-legacy-disabled-selected-state-background-color: color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-legacy-disabled-state-background-color: white;--mat-button-toggle-legacy-disabled-state-text-color: color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-toggle-legacy-selected-state-background-color: color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-legacy-selected-state-text-color: rgba(0, 0, 0, .87);--mat-button-toggle-legacy-state-layer-color: color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-legacy-text-color: rgba(0, 0, 0, .87);--mat-button-toggle-selected-state-background-color: color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-button-toggle-state-layer-color: rgba(0, 0, 0, .87);--mat-button-toggle-text-color: rgba(0, 0, 0, .87)}html{--mat-button-toggle-height: 48px}html{--mat-button-toggle-label-text-font: Roboto, sans-serif;--mat-button-toggle-label-text-line-height: 24px;--mat-button-toggle-label-text-size: 16px;--mat-button-toggle-label-text-tracking: .03125em;--mat-button-toggle-label-text-weight: 400;--mat-button-toggle-legacy-label-text-font: Roboto, sans-serif;--mat-button-toggle-legacy-label-text-line-height: 24px;--mat-button-toggle-legacy-label-text-size: 16px;--mat-button-toggle-legacy-label-text-tracking: .03125em;--mat-button-toggle-legacy-label-text-weight: 400}html{--mat-tooltip-container-shape: 4px;--mat-tooltip-supporting-text-line-height: 16px}html{--mat-tooltip-container-color: #424242;--mat-tooltip-supporting-text-color: white}html{--mat-tooltip-supporting-text-font: Roboto, sans-serif;--mat-tooltip-supporting-text-size: 12px;--mat-tooltip-supporting-text-weight: 400;--mat-tooltip-supporting-text-tracking: .0333333333em}a:not(.docs-anchor)>code:not(pre *){position:relative;padding:0 .3rem;white-space:nowrap;background:var(--purple-to-blue-horizontal-gradient);background-clip:text;-webkit-background-clip:text;color:transparent;max-width:max-content}a:not(.docs-anchor)>code:not(pre *):before{content:"";position:absolute;inset:0;width:100%;height:100%;background:var(--subtle-purple);border-radius:.25rem;transition:background .3s ease;z-index:-1}a:not(.docs-anchor)>code:not(pre *):hover{background:var(--vivid-pink);background-clip:text;-webkit-background-clip:text;color:transparent;max-width:max-content}
</style><link rel="stylesheet" href="styles-3DWJOZHW.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-3DWJOZHW.css"></noscript><style ng-app-id="ng">[_nghost-ng-c1178817259]{margin-inline:auto;display:flex;flex-direction:row;align-items:flex-start;min-height:100vh}@media(min-width:700.01px)and (max-width:900px){[_nghost-ng-c1178817259]:has(adev-secondary-navigation)   docs-top-level-banner[_ngcontent-ng-c1178817259]{top:8.125rem}}@media(max-width:700px){[_nghost-ng-c1178817259]:has(.adev-nav-primary--open)   docs-top-level-banner[_ngcontent-ng-c1178817259]{transform:translateY(-3.75rem);transition:transform .3s ease-in}}@media(max-width:900px){[_nghost-ng-c1178817259]{flex-direction:column}}[_nghost-ng-c1178817259]:has(.docs-nav-secondary--open)   .docs-app-main-content[_ngcontent-ng-c1178817259]:after, [_nghost-ng-c1178817259]:has(.adev-nav-primary--open)   .docs-app-main-content[_ngcontent-ng-c1178817259]:after{visibility:visible;opacity:1}@media(max-width:700px){[_nghost-ng-c1178817259]:has(.adev-nav-primary--open){overflow:clip}}[_nghost-ng-c1178817259]:has(.adev-home)   .adev-nav[_ngcontent-ng-c1178817259]{width:0;height:0}@media(max-width:900px){[_nghost-ng-c1178817259]:has(.adev-home)   .adev-nav[_ngcontent-ng-c1178817259]{width:100%}}@media(min-width:900.01px){[_nghost-ng-c1178817259]:has(.adev-home)   footer[_ngcontent-ng-c1178817259]{margin-left:var(--primary-nav-width)}}.adev-skip[_ngcontent-ng-c1178817259]{position:absolute;top:.5rem;left:.5rem;z-index:1000;background:var(--primary-contrast);color:var(--page-background);border:1px solid var(--vivid-pink);border-radius:.25rem;padding:.5rem;font-size:.875rem;transform:translateY(-150%);transition:transform .3s ease-out}.adev-skip[_ngcontent-ng-c1178817259]:focus-visible{transform:translateY(0)}.docs-app-main-content[_ngcontent-ng-c1178817259]{display:flex;flex-direction:column;min-height:100vh;width:100%}.docs-app-main-content[_ngcontent-ng-c1178817259]   [_ngcontent-ng-c1178817259]:after{content:"";position:fixed;top:0;left:0;width:100vw;height:100vh;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:color-mix(in srgb,var(--page-background) 5%,transparent);z-index:50;visibility:hidden;opacity:0;transition:opacity .3s ease}@media(min-width:700.01px)and (max-width:900px){.docs-app-main-content[_ngcontent-ng-c1178817259]{width:100%}}footer[_ngcontent-ng-c1178817259]{margin-top:auto}</style><style ng-app-id="ng">[_nghost-ng-c3968259679]{display:flex;position:sticky;top:0;z-index:var(--z-index-nav)}[_nghost-ng-c3968259679]   .adev-mobile-nav-button[_ngcontent-ng-c3968259679]{display:flex;align-items:center;gap:.75rem}@media(min-width:700.01px)and (max-width:900px){[_nghost-ng-c3968259679]:has(.adev-nav-primary--open){z-index:50}}@media(max-width:900px){[_nghost-ng-c3968259679]{width:100%}[_nghost-ng-c3968259679]   .wrapper[_ngcontent-ng-c3968259679]{width:100%}}.adev-mobile-nav-bar[_ngcontent-ng-c3968259679]{display:none;gap:.75rem;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);position:relative;width:100%;padding-block:.75rem;padding-inline:var(--layout-padding);border-block-end:1px solid var(--septenary-contrast);box-sizing:border-box;transform:translateY(0);transition:transform .3s ease-out .6s}@media(max-width:700px){.adev-mobile-nav-bar[_ngcontent-ng-c3968259679]{display:flex}}.adev-mobile-nav-bar[_ngcontent-ng-c3968259679]:has(+.adev-nav-primary--open){transform:translateY(-100%);transition:transform .3s ease-in}.adev-mobile-nav-bar[_ngcontent-ng-c3968259679]   docs-icon[_ngcontent-ng-c3968259679]{color:var(--primary-contrast)}.adev-nav-primary[_ngcontent-ng-c3968259679]{display:flex;flex-direction:column;justify-content:space-between;max-height:100vh;overflow:auto;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);z-index:250;position:relative;transition:background-color .3s ease,border-color .3s ease;height:100dvh;padding-block-end:2rem;box-sizing:border-box;border-block-end:1px solid var(--septenary-contrast)}@media(min-width:900.01px){.adev-nav-primary[_ngcontent-ng-c3968259679]{border-inline-end:1px solid var(--septenary-contrast)}}@media(max-width:700px){.adev-nav-primary[_ngcontent-ng-c3968259679]{border-inline-end:1px solid var(--septenary-contrast)}}@media(min-width:700.01px)and (max-width:900px){.adev-nav-primary[_ngcontent-ng-c3968259679]{flex-direction:row;width:100%;padding-inline:calc(var(--layout-padding) - 1.25rem);height:auto;scrollbar-width:none;padding-block:0}}.adev-nav-primary.adev-nav-primary--next[_ngcontent-ng-c3968259679], .adev-nav-primary.adev-nav-primary--rc[_ngcontent-ng-c3968259679]{background:linear-gradient(140deg,color-mix(in srgb,var(--orange-red),transparent 60%),color-mix(in srgb,var(--vivid-pink),transparent 40%) 15%,color-mix(in srgb,var(--electric-violet),transparent 70%) 25%,color-mix(in srgb,var(--bright-blue),transparent 60%) 90%)}.adev-nav-primary.adev-nav-primary--next[_ngcontent-ng-c3968259679]:before, .adev-nav-primary.adev-nav-primary--rc[_ngcontent-ng-c3968259679]:before{content:"";position:absolute;opacity:.8;width:100%;height:100%;background-color:var(--octonary-contrast);z-index:-1}.adev-nav-primary.adev-nav-primary--next[_ngcontent-ng-c3968259679]   .adev-version-button[_ngcontent-ng-c3968259679], .adev-nav-primary.adev-nav-primary--rc[_ngcontent-ng-c3968259679]   .adev-version-button[_ngcontent-ng-c3968259679]{border:1px solid var(--quinary-contrast)}.adev-nav-primary.adev-nav-primary--deprecated[_ngcontent-ng-c3968259679]{background-color:var(--deprecated-docs-bg)}.adev-nav-primary[_ngcontent-ng-c3968259679] > div[_ngcontent-ng-c3968259679]{display:flex;flex-direction:column;align-items:center;justify-content:center}@media(max-width:700px){.adev-nav-primary[_ngcontent-ng-c3968259679]{position:absolute;top:0;background-color:var(--page-background);box-shadow:2px 0 0 0 var(--page-background);transform:translate(-100%);transition:transform .3s ease-in .38s}.adev-nav-primary.adev-nav-primary--open[_ngcontent-ng-c3968259679]{transform:translate(0);transition:transform .3s ease-out .1s}}@media(max-width:700px)and (prefers-reduced-motion:reduce-motion){.adev-nav-primary[_ngcontent-ng-c3968259679]{transition:none}}.adev-nav__top[_ngcontent-ng-c3968259679]{padding:0;margin:0;list-style:none;display:flex;flex-direction:column;padding-block-start:1rem}@media(min-width:700.01px)and (max-width:900px){.adev-nav__top[_ngcontent-ng-c3968259679]{flex-direction:row;padding-block-start:0}}.adev-nav__top[_ngcontent-ng-c3968259679]   .adev-version-button[_ngcontent-ng-c3968259679]{border:1px solid var(--senary-contrast);border-radius:.25rem;width:fit-content;margin:0 auto;display:flex;justify-content:space-between;gap:.25rem;color:var(--quaternary-contrast);fill:var(--quaternary-contrast);transition:color .3s ease;font-size:.8rem;font-weight:500}.adev-nav__top[_ngcontent-ng-c3968259679]   .adev-version-button[_ngcontent-ng-c3968259679]:hover{color:var(--primary-contrast)}.adev-nav__top[_ngcontent-ng-c3968259679]   .adev-version-button[_ngcontent-ng-c3968259679]   docs-icon[_ngcontent-ng-c3968259679]{font-size:inherit;line-height:inherit;transition:transform .2s ease}@media(max-width:700px){.adev-nav__top[_ngcontent-ng-c3968259679]   .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c3968259679]:after{transform:rotate(-90deg)}}@media(min-width:900.01px){.adev-nav__top[_ngcontent-ng-c3968259679]   .adev-version-button.adev-mini-menu-open[_ngcontent-ng-c3968259679]:after{transform:rotate(-90deg)}}@media(min-width:700.01px)and (max-width:900px){.adev-nav__top[_ngcontent-ng-c3968259679] > li[_ngcontent-ng-c3968259679]:first-of-type{padding-inline-start:1.25rem}.adev-nav__top[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]{padding-inline:.875rem}}.adev-nav__bottom[_ngcontent-ng-c3968259679]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1rem}@media(min-width:700.01px)and (max-width:900px){.adev-nav__bottom[_ngcontent-ng-c3968259679]{flex-direction:row!important;align-items:center;margin-inline-end:1.25rem;margin-top:.25rem;gap:.75rem}}.adev-nav__bottom[_ngcontent-ng-c3968259679]   .adev-nav-item--active[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]   docs-icon[_ngcontent-ng-c3968259679]{color:var(--primary-contrast)}.adev-nav__bottom[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]{border:none;background-color:transparent;cursor:pointer;width:100%;padding-inline:1rem}@media(min-width:700.01px)and (max-width:900px){.adev-nav__bottom[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]{padding-inline:.5rem}}.adev-nav__bottom[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]   docs-icon[_ngcontent-ng-c3968259679]{color:var(--quaternary-contrast);font-size:1.5rem}@media(max-width:900px){.adev-nav__bottom[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]   docs-icon[_ngcontent-ng-c3968259679]{font-size:1.25rem}}.adev-nav__bottom[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]:hover   docs-icon[_ngcontent-ng-c3968259679]{color:var(--primary-contrast)}.adev-nav-item--logo[_ngcontent-ng-c3968259679]   a[_ngcontent-ng-c3968259679]{height:34px}@media(min-width:700.01px)and (max-width:900px){.adev-nav-item--logo[_ngcontent-ng-c3968259679]{gap:.75rem}}.adev-close-nav[_ngcontent-ng-c3968259679]{display:none;color:var(--primary-contrast)}@media(max-width:700px){.adev-close-nav[_ngcontent-ng-c3968259679]{display:block;position:relative;top:1rem}}.adev-search-desktop[_ngcontent-ng-c3968259679]{height:1.375rem;text-transform:capitalize}@media(max-width:900px){.adev-search-desktop[_ngcontent-ng-c3968259679]{display:none}}.adev-sub-navigation-hidden[_ngcontent-ng-c3968259679]{display:none}.adev-secondary-tablet-bar[_ngcontent-ng-c3968259679]{font-size:.875rem;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb,var(--page-background) 70%,transparent);border-block-end:1px solid var(--septenary-contrast);padding-block:1rem;padding-inline:var(--layout-padding);transition:background-color .3s ease,border-color .3s ease}.adev-secondary-tablet-bar[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]{display:flex;gap:.5rem;align-items:center;color:var(--primary-contrast);padding:0;font-weight:500}@media(min-width:900.01px){.adev-secondary-tablet-bar[_ngcontent-ng-c3968259679]{display:none}}@media(max-width:700px){.adev-secondary-tablet-bar[_ngcontent-ng-c3968259679]{display:none}}</style><style ng-app-id="ng">.adev-mini-menu[_ngcontent-ng-c3968259679]{padding:0;color:var(--primary-contrast);background-color:var(--page-background);border:1px solid var(--senary-contrast);border-radius:.25rem;z-index:var(--z-index-mini-menu);box-shadow:10px 4px 40px #00000013;animation:_ngcontent-ng-c3968259679_menuFadeIn .2s ease-out forwards;transform-origin:left center}@media(prefers-reduced-motion:reduce){.adev-mini-menu[_ngcontent-ng-c3968259679]{animation:none}}@media(min-width:700.01px)and (max-width:900px){.adev-mini-menu[_ngcontent-ng-c3968259679]{top:75px;left:5px}}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]{list-style:none}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]{padding:1rem;min-width:75px;min-height:75px;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]   docs-icon[_ngcontent-ng-c3968259679]{font-size:1.5rem;color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]:hover   span[_ngcontent-ng-c3968259679], .adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   button[_ngcontent-ng-c3968259679]:hover   docs-icon[_ngcontent-ng-c3968259679]{color:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   a[_ngcontent-ng-c3968259679]{display:flex;justify-content:center;align-items:center;padding:1rem;min-width:50px}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   a[_ngcontent-ng-c3968259679]   svg[_ngcontent-ng-c3968259679]{fill:var(--quaternary-contrast);transition:fill .3s ease}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   a[_ngcontent-ng-c3968259679]:hover{background-color:var(--senary-contrast)}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   a[_ngcontent-ng-c3968259679]:hover   svg[_ngcontent-ng-c3968259679]{fill:var(--primary-contrast)}.adev-mini-menu[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   span[_ngcontent-ng-c3968259679]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-mini-menu-open[_ngcontent-ng-c3968259679]{display:block}.adev-version-picker[_ngcontent-ng-c3968259679]{overflow-y:auto;max-height:90vh;top:30px;left:10px;position:absolute;bottom:auto}.adev-version-picker[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]{padding-inline:0}.adev-version-picker[_ngcontent-ng-c3968259679]   li[_ngcontent-ng-c3968259679]   a[_ngcontent-ng-c3968259679]{line-height:1em}@media(min-width:700.01px)and (max-width:900px){.adev-version-picker[_ngcontent-ng-c3968259679]{top:30px;left:auto;bottom:auto}}.adev-theme-icon[_ngcontent-ng-c3968259679]{transition:transform .3s ease}.adev-theme-icon[_ngcontent-ng-c3968259679]:hover{transform:rotate(20deg) scale(1.1)}@media(prefers-reduced-motion:reduce){.adev-theme-icon[_ngcontent-ng-c3968259679]{transition:none}.adev-theme-icon[_ngcontent-ng-c3968259679]:hover{transform:none}}@keyframes _ngcontent-ng-c3968259679_menuFadeIn{0%{opacity:0;transform:translate(-10px) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}</style><style ng-app-id="ng">.adev-nav-item[_ngcontent-ng-c3968259679]{color:var(--quaternary-contrast);position:relative;width:6.875rem}@media(max-width:700px){.adev-nav-item[_ngcontent-ng-c3968259679]{width:5.05rem}}@media(min-width:700.01px)and (max-width:900px){.adev-nav-item[_ngcontent-ng-c3968259679]{display:flex;align-items:center;justify-content:center;width:auto}}.adev-nav-item[_ngcontent-ng-c3968259679]:before{content:"";position:absolute;bottom:0;top:0;left:0;width:2px;background-color:var(--primary-contrast);opacity:0;transform:scale(.9);transform-origin:center;transition:opacity .3s ease,transform .3s ease}@media(min-width:700.01px)and (max-width:900px){.adev-nav-item[_ngcontent-ng-c3968259679]:before{width:auto;top:auto;right:0;height:2px}}@media(min-width:700.01px)and (max-width:900px){.adev-nav-item[_ngcontent-ng-c3968259679]:not(.adev-nav-item--logo)   a[_ngcontent-ng-c3968259679], .adev-nav-item[_ngcontent-ng-c3968259679]:not(.adev-nav-item--logo)   .adev-nav-button[_ngcontent-ng-c3968259679]{gap:.25rem}}.adev-nav-item[_ngcontent-ng-c3968259679]   .adev-nav-button[_ngcontent-ng-c3968259679]{width:100%;font-weight:500}.adev-nav-item[_ngcontent-ng-c3968259679]   a[_ngcontent-ng-c3968259679], .adev-nav-item[_ngcontent-ng-c3968259679]   .adev-nav-button[_ngcontent-ng-c3968259679]{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding-block:1.25rem;text-decoration:none;fill:var(--quaternary-contrast);color:inherit;cursor:pointer;transition:fill .3s ease}@media(min-width:700.01px)and (max-width:900px){.adev-nav-item[_ngcontent-ng-c3968259679]   a[_ngcontent-ng-c3968259679], .adev-nav-item[_ngcontent-ng-c3968259679]   .adev-nav-button[_ngcontent-ng-c3968259679]{flex-direction:row}}.adev-nav-item__label[_ngcontent-ng-c3968259679]{margin:0;font-size:.813;color:inherit}.adev-nav-item__label[_ngcontent-ng-c3968259679]   abbr[_ngcontent-ng-c3968259679]{font-size:.688}.adev-nav-item[_ngcontent-ng-c3968259679]   i[_ngcontent-ng-c3968259679]{color:var(--quaternary-contrast);transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c3968259679]   span[_ngcontent-ng-c3968259679], .adev-nav-item[_ngcontent-ng-c3968259679]   abbr[_ngcontent-ng-c3968259679]{transition:color .3s ease}.adev-nav-item[_ngcontent-ng-c3968259679]:hover   a[_ngcontent-ng-c3968259679], .adev-nav-item[_ngcontent-ng-c3968259679]:hover   .adev-nav-button[_ngcontent-ng-c3968259679]{fill:var(--primary-contrast)}.adev-nav-item[_ngcontent-ng-c3968259679]:hover   span[_ngcontent-ng-c3968259679], .adev-nav-item[_ngcontent-ng-c3968259679]:hover   abbr[_ngcontent-ng-c3968259679], .adev-nav-item[_ngcontent-ng-c3968259679]:hover   i[_ngcontent-ng-c3968259679]{color:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c3968259679]:before{opacity:1;transform:scaleY(1)}.adev-nav-item--active[_ngcontent-ng-c3968259679]:not(.adev-nav-item--logo)   path[_ngcontent-ng-c3968259679]{fill:var(--primary-contrast)}.adev-nav-item--active[_ngcontent-ng-c3968259679]   span[_ngcontent-ng-c3968259679], .adev-nav-item--active[_ngcontent-ng-c3968259679]   abbr[_ngcontent-ng-c3968259679], .adev-nav-item--active[_ngcontent-ng-c3968259679]   i[_ngcontent-ng-c3968259679]{color:var(--primary-contrast)}</style><style ng-app-id="ng">.docs-icon_high-contrast[_ngcontent-ng-c1001676203] {
  color: var(--primary-contrast);
}

/*# sourceMappingURL=icon.component.css.map */</style><style ng-app-id="ng">.adev-footer-columns[_ngcontent-ng-c3322347427]{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}@container footer (max-width: 600px){.adev-footer-columns[_ngcontent-ng-c3322347427]{grid-template-columns:repeat(2,1fr)!important}}.adev-footer-container[_ngcontent-ng-c3322347427]{container:footer/inline-size;position:relative;justify-content:center;padding:var(--layout-padding);padding-inline-end:1rem;background-color:var(--page-background);transition:background-color .3s ease}@media(min-width:1430.01px){.adev-footer-container[_ngcontent-ng-c3322347427]{width:calc(100% - 16rem - var(--layout-padding) * 3)}}@media(min-width:1800.01px){.adev-footer-container[_ngcontent-ng-c3322347427]{width:calc(100% - 25rem - var(--layout-padding) * 3)}}.adev-footer-container[_ngcontent-ng-c3322347427]   h2[_ngcontent-ng-c3322347427]{font-size:.875rem;font-weight:600;margin-block-end:1.75rem;letter-spacing:-.00875rem}.adev-footer-container[_ngcontent-ng-c3322347427]   ul[_ngcontent-ng-c3322347427]{list-style:none;padding:0;display:flex;flex-direction:column;gap:.95rem}.adev-footer-container[_ngcontent-ng-c3322347427]   ul[_ngcontent-ng-c3322347427]   li[_ngcontent-ng-c3322347427]{font-size:.8125rem}.adev-footer-container[_ngcontent-ng-c3322347427]   a[_ngcontent-ng-c3322347427]{color:var(--quaternary-contrast);font-weight:300;transition:color .3s ease}.adev-footer-container[_ngcontent-ng-c3322347427]   a[_ngcontent-ng-c3322347427]:hover{color:var(--primary-contrast)}.adev-footer-container[_ngcontent-ng-c3322347427]   p.docs-license[_ngcontent-ng-c3322347427]{transition:color .3s ease;color:var(--quaternary-contrast);font-weight:300;grid-column:span 4;font-size:.75rem;margin-block-start:2rem}</style><style ng-app-id="ng">[_nghost-ng-c2037532102]{width:100%;position:relative;display:block;--card-background: var(--page-background);--pattern-url: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'><defs><pattern id='p' patternUnits='userSpaceOnUse' width='72' height='72'><g transform='translate(36 36) rotate(-60)'><line x1='-10' y1='0' x2='10' y2='0' stroke='white' stroke-width='3' stroke-linecap='round'/></g></pattern></defs><rect width='100%' height='100%' fill='url(%23p)'/></svg>")}.adev-banner-container[_ngcontent-ng-c2037532102]{margin-top:3rem;padding:0 3rem;display:flex;justify-content:space-between;gap:.5rem;top:var(--layout-padding);left:calc(var(--layout-padding) + var(--primary-nav-width));z-index:1}@media(max-width:900px){.adev-banner-container[_ngcontent-ng-c2037532102]{justify-content:center;margin-top:4rem}}@media(max-width:700px){.adev-banner-container[_ngcontent-ng-c2037532102]{margin-top:1rem}}.adev-banner[_ngcontent-ng-c2037532102]{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;border:1px solid var(--senary-contrast);background:var(--page-background);border-radius:.25rem;padding:10px;max-width:100%;width:fit-content;box-sizing:border-box}.adev-banner[_ngcontent-ng-c2037532102]   h1[_ngcontent-ng-c2037532102], .adev-banner[_ngcontent-ng-c2037532102]   p[_ngcontent-ng-c2037532102]{display:inline;font-size:.875rem;margin:0;background-image:var(--red-to-pink-to-purple-horizontal-gradient);-webkit-background-clip:text;background-clip:text;color:transparent;width:fit-content;box-shadow:none;position:relative}.adev-banner[_ngcontent-ng-c2037532102]   h1.adev-banner-cta[_ngcontent-ng-c2037532102], .adev-banner[_ngcontent-ng-c2037532102]   p.adev-banner-cta[_ngcontent-ng-c2037532102]{color:var(--tertiary-contrast)}.adev-banner[_ngcontent-ng-c2037532102]   h1.adev-banner-cta[_ngcontent-ng-c2037532102]:after, .adev-banner[_ngcontent-ng-c2037532102]   p.adev-banner-cta[_ngcontent-ng-c2037532102]:after{content:"";position:absolute;width:100%;transform:scaleX(0);height:1px;bottom:-2px;left:0;background:var(--red-to-pink-to-purple-horizontal-gradient);transform-origin:bottom right;transition:transform .3s ease}.adev-banner[_ngcontent-ng-c2037532102]:hover   .adev-banner-cta[_ngcontent-ng-c2037532102]:after{transform:scaleX(1);transform-origin:bottom left}@media(min-width:900.01px){section[_ngcontent-ng-c2037532102]{padding-left:7rem}}section[_ngcontent-ng-c2037532102]{text-align:center}section[_ngcontent-ng-c2037532102]   h2[_ngcontent-ng-c2037532102]{padding:0 1rem;font-size:clamp(1rem,9vw,38pt)}@property --gradient-angle{syntax: "<angle>"; initial-value: 90deg; inherits: false;}@keyframes _ngcontent-ng-c2037532102_rotateGradient{0%{--gradient-angle: 0deg}to{--gradient-angle: 360deg}}@property --pulse-inner{syntax: "<percentage>"; initial-value: 20%; inherits: false;}@property --pulse-outer{syntax: "<percentage>"; initial-value: 75%; inherits: false;}@keyframes _ngcontent-ng-c2037532102_pulse{0%{--pulse-inner: 30%;--pulse-outer: 75%}50%{--pulse-inner: 30%;--pulse-outer: 60%}to{--pulse-inner: 30%;--pulse-outer: 75%}}.logo-section[_ngcontent-ng-c2037532102]{position:relative;display:flex;flex-direction:column;height:min(700px,100vh)}@media(max-width:775px){.logo-section[_ngcontent-ng-c2037532102]{height:min(700px,100vh - 60px)}}.logo-section[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]{pointer-events:none;position:absolute;height:100%;-webkit-mask-image:var(--pattern-url);mask-image:var(--pattern-url);-webkit-mask-size:22px 22px;mask-size:22px 22px;-webkit-mask-repeat:repeat;mask-repeat:repeat;width:calc(100% - 7rem)}@media(max-width:900px){.logo-section[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]{width:100%}}.logo-section[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]{animation:_ngcontent-ng-c2037532102_rotateGradient 10s linear infinite;background:conic-gradient(from 122deg at 50% 50%,transparent 17%,#f627e3 25%,#6911d2 32%,transparent 38%,transparent 61%,#6911d2 71%,#f627e3 81%,transparent 91%)}.logo-section[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]:after{content:"";position:absolute;inset:auto 0 0;background:linear-gradient(180deg,transparent,var(--page-background));height:50px}@media(max-width:900px){.logo-section[_ngcontent-ng-c2037532102]   .search-field[_ngcontent-ng-c2037532102]{display:none}}.logo-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]{z-index:1;flex:1;display:flex;flex-direction:column;justify-content:space-between}.logo-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]   h2[_ngcontent-ng-c2037532102]{font-size:clamp(3rem,6vw,5rem);margin-bottom:0}.logo-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]   h3[_ngcontent-ng-c2037532102]{font-size:clamp(.5rem,4vw,1rem);color:var(--quaternary-contrast)}@media(max-width:900px){.logo-section[_ngcontent-ng-c2037532102]{margin-top:4rem}}.logo-section[_ngcontent-ng-c2037532102]   button[_ngcontent-ng-c2037532102]{margin-bottom:5rem}@media(max-width:775px){.logo-section[_ngcontent-ng-c2037532102]   button[_ngcontent-ng-c2037532102]{font-size:1rem}}@media(max-width:700px){.logo-section[_ngcontent-ng-c2037532102]   button[_ngcontent-ng-c2037532102]{font-size:.8rem}}.logo-section[_ngcontent-ng-c2037532102]   .svg[_ngcontent-ng-c2037532102]{fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;color:var(--primary-contrast);max-width:680px}.logo-section[_ngcontent-ng-c2037532102]   h2[_ngcontent-ng-c2037532102]{margin-top:0;font-size:1.2rem}@media(max-width:775px){.logo-section[_ngcontent-ng-c2037532102]   h2[_ngcontent-ng-c2037532102]{font-size:1rem}}.logo-section[_ngcontent-ng-c2037532102]   .uwu[_ngcontent-ng-c2037532102]   img[_ngcontent-ng-c2037532102]{width:50vw}.features-section[_ngcontent-ng-c2037532102]   [ngTabs][_ngcontent-ng-c2037532102]{overflow:hidden;width:100%;border-radius:.5rem;display:flex;flex-direction:column}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]{padding:4px;display:grid;grid-template-columns:repeat(4,1fr);gap:0;list-style:none;position:relative;background:var(--card-background);border:1px solid var(--quinary-contrast);border-radius:.5rem;width:fit-content;margin:0 auto 2rem}@media(max-width:700px){.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]{width:auto;margin:0 .5rem 1rem}}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]   .tab-background[_ngcontent-ng-c2037532102]{position:absolute;top:4px;bottom:4px;left:4px;width:calc((100% - 8px)/4);background-color:var(--septenary-contrast);border-radius:.5rem;transition:transform .2s ease-in-out}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]:has(>:nth-child(2)[aria-selected=true])   .tab-background[_ngcontent-ng-c2037532102]{transform:translate(0)}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]:has(>:nth-child(3)[aria-selected=true])   .tab-background[_ngcontent-ng-c2037532102]{transform:translate(100%)}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]:has(>:nth-child(4)[aria-selected=true])   .tab-background[_ngcontent-ng-c2037532102]{transform:translate(200%)}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]:has(>:nth-child(5)[aria-selected=true])   .tab-background[_ngcontent-ng-c2037532102]{transform:translate(300%)}.features-section[_ngcontent-ng-c2037532102]   [ngTab][_ngcontent-ng-c2037532102]{display:flex;justify-content:center;align-items:center;outline:none;padding:.5rem;cursor:pointer;color:var(--tertiary-contrast);font-size:14px;border-radius:.5rem;transition:all .2s ease-in-out;position:relative;z-index:1}.features-section[_ngcontent-ng-c2037532102]   [ngTab][_ngcontent-ng-c2037532102]:hover{color:var(--primary-contrast)}.features-section[_ngcontent-ng-c2037532102]   [ngTab][aria-selected=true][_ngcontent-ng-c2037532102]{color:var(--electric-violet)}.features-section[_ngcontent-ng-c2037532102]   .sliding-window[_ngcontent-ng-c2037532102]{width:400%;display:flex;transition:all .2s ease-in-out}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]:has(>:nth-child(2)[aria-selected=true]) ~ .sliding-window[_ngcontent-ng-c2037532102]{transform:translate(0)}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]:has(>:nth-child(3)[aria-selected=true]) ~ .sliding-window[_ngcontent-ng-c2037532102]{transform:translate(-25%)}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]:has(>:nth-child(4)[aria-selected=true]) ~ .sliding-window[_ngcontent-ng-c2037532102]{transform:translate(-50%)}.features-section[_ngcontent-ng-c2037532102]   [ngTabList][_ngcontent-ng-c2037532102]:has(>:nth-child(5)[aria-selected=true]) ~ .sliding-window[_ngcontent-ng-c2037532102]{transform:translate(-75%)}.features-section[_ngcontent-ng-c2037532102]   [ngTabPanel][_ngcontent-ng-c2037532102]{display:grid;place-items:start center;padding:1rem 3rem;min-height:100px;width:25%;box-sizing:border-box}@media(max-width:700px){.features-section[_ngcontent-ng-c2037532102]   [ngTabPanel][_ngcontent-ng-c2037532102]{padding:.5rem}}.two-column-step[_ngcontent-ng-c2037532102]{display:grid;grid-template-columns:1fr 1fr;gap:3rem;text-align:left;width:100%;max-width:1200px;margin:0 auto;box-sizing:border-box;background-color:var(--card-background);border:1px solid var(--senary-contrast);border-radius:.5rem;padding:2rem}@media(max-width:775px){.two-column-step[_ngcontent-ng-c2037532102]{grid-template-columns:1fr;gap:2rem;padding:1.5rem}}.step-description[_ngcontent-ng-c2037532102]{display:flex;flex-direction:column;gap:1.5rem}.step-description[_ngcontent-ng-c2037532102]   .header[_ngcontent-ng-c2037532102]{font-size:1.75rem}.step-description[_ngcontent-ng-c2037532102]   .description[_ngcontent-ng-c2037532102]{font-size:1.1rem;line-height:1.6;color:var(--secondary-contrast)}.step-description[_ngcontent-ng-c2037532102]   .description[_ngcontent-ng-c2037532102]   .code[_ngcontent-ng-c2037532102]{font-family:monospace;background:#80808033;padding:.1rem .3rem;border-radius:.5rem;margin:0 .1rem}.step-code[_ngcontent-ng-c2037532102]{display:flex;flex-direction:column;gap:1.5rem}.selling-points[_ngcontent-ng-c2037532102]{max-width:1440px;margin:0 auto 6rem;box-sizing:border-box}.selling-points[_ngcontent-ng-c2037532102]   .cards[_ngcontent-ng-c2037532102]{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;text-align:left;overflow-x:auto;margin:0 1rem}@media(max-width:900px){.selling-points[_ngcontent-ng-c2037532102]   .cards[_ngcontent-ng-c2037532102]{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.selling-points[_ngcontent-ng-c2037532102]   .cards[_ngcontent-ng-c2037532102]{grid-template-columns:1fr}}.selling-points[_ngcontent-ng-c2037532102]   .card[_ngcontent-ng-c2037532102]{background-color:var(--card-background);border:1px solid var(--senary-contrast);border-radius:.5rem;padding:2rem;display:flex;flex-direction:column;gap:1.5rem;height:100%;box-sizing:border-box;transition:border-color .3s ease}.selling-points[_ngcontent-ng-c2037532102]   .card[_ngcontent-ng-c2037532102]:hover{border-color:var(--quinary-contrast);background:var(--octonary-contrast);cursor:pointer}.selling-points[_ngcontent-ng-c2037532102]   .icon-wrapper[_ngcontent-ng-c2037532102]{width:48px;height:48px;border-radius:.5rem;display:flex;align-items:center;justify-content:center;color:var(--primary-contrast);position:relative;background:linear-gradient(90deg,var(--orange-red) 0%,var(--vivid-pink) 50%,var(--electric-violet) 100%)}.selling-points[_ngcontent-ng-c2037532102]   .icon-wrapper[_ngcontent-ng-c2037532102]:after{content:"";position:absolute;inset:1px;background:var(--card-background);border-radius:calc(.5rem - 1px)}.selling-points[_ngcontent-ng-c2037532102]   .icon-wrapper[_ngcontent-ng-c2037532102]   docs-icon[_ngcontent-ng-c2037532102]{font-size:24px;position:relative;z-index:1}.selling-points[_ngcontent-ng-c2037532102]   .card-content[_ngcontent-ng-c2037532102]   h3[_ngcontent-ng-c2037532102]{font-size:1rem;line-height:1.5;color:var(--secondary-contrast);margin:0}.selling-points[_ngcontent-ng-c2037532102]   .card-content[_ngcontent-ng-c2037532102]   h3[_ngcontent-ng-c2037532102]   strong[_ngcontent-ng-c2037532102]{color:var(--primary-contrast);font-weight:600}.performance-section[_ngcontent-ng-c2037532102]{display:flex;justify-content:center;align-items:center}.performance-section[_ngcontent-ng-c2037532102]   .wrapper[_ngcontent-ng-c2037532102]{width:800px;height:800px;position:relative;display:flex;justify-content:center}@media(max-width:700px){.performance-section[_ngcontent-ng-c2037532102]   .wrapper[_ngcontent-ng-c2037532102]{width:400px;height:400px}}.performance-section[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]{pointer-events:none;position:absolute;height:100%;-webkit-mask-image:var(--pattern-url);mask-image:var(--pattern-url);-webkit-mask-size:22px 22px;mask-size:22px 22px;-webkit-mask-repeat:repeat;mask-repeat:repeat;z-index:-1;width:100%;background:radial-gradient(transparent 28%,#f627e3 45%,#6911d2 55%,transparent 69%)}@media(max-width:700px){.performance-section[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]{opacity:.7}}.performance-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]{height:100%;max-width:500px;display:flex;flex-direction:column;justify-content:center;align-items:center}.performance-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]   h2[_ngcontent-ng-c2037532102]{margin-bottom:0}.performance-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]   h3[_ngcontent-ng-c2037532102]{font-size:12pt;color:var(--quaternary-contrast);max-width:400px;margin:0 1rem}.performance-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]   button[_ngcontent-ng-c2037532102]{margin-top:2rem}.learn-more-bottom-section[_ngcontent-ng-c2037532102]{position:relative;display:flex;height:min(500px,100vh)}.learn-more-bottom-section[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]{pointer-events:none;position:absolute;height:100%;-webkit-mask-image:var(--pattern-url);mask-image:var(--pattern-url);-webkit-mask-size:22px 22px;mask-size:22px 22px;-webkit-mask-repeat:repeat;mask-repeat:repeat;width:calc(100% - 7rem);animation:_ngcontent-ng-c2037532102_pulse 4s ease-in-out infinite;background:radial-gradient(circle at 50% 125%,transparent 20%,#f627e3 35%,#6911d2 55%,transparent var(--pulse-outer))}@media(max-width:900px){.learn-more-bottom-section[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]{width:100%}}.learn-more-bottom-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]{z-index:1;display:flex;flex-direction:column;align-items:center;margin:auto;max-width:600px}.learn-more-bottom-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]   h2[_ngcontent-ng-c2037532102]{margin-bottom:0rem}.learn-more-bottom-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]   h3[_ngcontent-ng-c2037532102]{font-size:12pt;margin-bottom:3rem}.learn-more-bottom-section[_ngcontent-ng-c2037532102]   .content[_ngcontent-ng-c2037532102]   button[_ngcontent-ng-c2037532102]{position:absolute;bottom:3rem}.explore-section[_ngcontent-ng-c2037532102]{max-width:1440px;margin:0 auto;box-sizing:border-box}.explore-section[_ngcontent-ng-c2037532102]   .title[_ngcontent-ng-c2037532102]{position:relative;height:clamp(150px,40vw,400px);display:flex;align-items:center;justify-content:center}.explore-section[_ngcontent-ng-c2037532102]   .title[_ngcontent-ng-c2037532102]   h2[_ngcontent-ng-c2037532102]{max-width:512px;z-index:1;position:relative}.explore-section[_ngcontent-ng-c2037532102]   .title[_ngcontent-ng-c2037532102]   .pattern[_ngcontent-ng-c2037532102]{pointer-events:none;position:absolute;height:100%;-webkit-mask-image:var(--pattern-url);mask-image:var(--pattern-url);-webkit-mask-size:22px 22px;mask-size:22px 22px;-webkit-mask-repeat:repeat;mask-repeat:repeat;height:120%;width:100%;animation:_ngcontent-ng-c2037532102_rotateGradient 10s linear infinite;background:radial-gradient(circle at 50% 150%,#f627e3 50%,#6911d2 66%,transparent 75%)}.explore-section[_ngcontent-ng-c2037532102]   .cards-grid[_ngcontent-ng-c2037532102]{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:2rem;margin:0 1rem}@media(max-width:700px){.explore-section[_ngcontent-ng-c2037532102]   .cards-grid[_ngcontent-ng-c2037532102]{grid-template-columns:1fr}}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]{display:flex;flex-direction:column;background:var(--card-background);border:1px solid var(--senary-contrast);border-radius:1rem;overflow:hidden;text-decoration:none;transition:border-color .3s ease;height:100%;min-height:500px;position:relative;cursor:pointer;animation:_ngcontent-ng-c2037532102_rotateGradient 6s linear infinite}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]:after{content:"";position:absolute;inset:1px;background:var(--card-background);border-radius:calc(1rem - 1px)}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]:hover   .fake-button[_ngcontent-ng-c2037532102]{background-position:100% 0%}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]:hover   .fake-button[_ngcontent-ng-c2037532102]   docs-icon[_ngcontent-ng-c2037532102]{transform:translate(4px);color:var(--electric-violet)}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]:hover{background:linear-gradient(var(--gradient-angle),var(--orange-red) 0%,var(--electric-violet) 39%,transparent 81%)}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]   .card-content[_ngcontent-ng-c2037532102]{display:flex;flex-direction:column;text-align:left;padding:2.5rem;z-index:2;flex:1}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]   .card-content[_ngcontent-ng-c2037532102]   p[_ngcontent-ng-c2037532102]{color:var(--quaternary-contrast);line-height:1.5;margin-bottom:1.5rem;font-size:1rem}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]   .card-content[_ngcontent-ng-c2037532102]   p[_ngcontent-ng-c2037532102]   .emphasis[_ngcontent-ng-c2037532102]{color:var(--secondary-contrast)}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]   .fake-button[_ngcontent-ng-c2037532102]{display:inline-flex;align-items:center;gap:.5rem;color:var(--tertiary-contrast);transition:color .3s ease;background:linear-gradient(90deg,var(--tertiary-contrast) 0%,var(--tertiary-contrast) 47%,var(--orange-red) 51%,var(--electric-violet) 100%);background-size:200% 100%;background-position:0% 0%;background-clip:text;-webkit-background-clip:text;color:transparent;transition:background-position .5s ease}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]   .fake-button[_ngcontent-ng-c2037532102]   docs-icon[_ngcontent-ng-c2037532102]{font-size:1.2rem;color:var(--tertiary-contrast);transition:transform .3s ease,color .3s ease}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]   .editor-background[_ngcontent-ng-c2037532102]{--img: url("./media/editor-light-IWWA7SEJ.png");background-image:linear-gradient(135deg,transparent,var(--card-background)),var(--img);position:absolute;bottom:1px;right:1px;width:50%;height:clamp(100px,25vw,300px);background-size:cover;border-bottom-right-radius:1rem}@media(max-width:700px){.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]   .editor-background[_ngcontent-ng-c2037532102]{height:50vw}}  .docs-dark-mode .explore-section .explore-card .editor-background{--img: url("./media/editor-dark-B7DELQNV.png") !important}.explore-section[_ngcontent-ng-c2037532102]   .explore-card[_ngcontent-ng-c2037532102]   .logo-background[_ngcontent-ng-c2037532102]{--logo-svg: url("./media/angular-logo-light-A36B7RRE.svg");background-image:var(--logo-svg);position:absolute;bottom:-100px;right:-100px;width:490px;height:453px}  .docs-dark-mode .explore-section .explore-card .logo-background{--logo-svg: url("./media/angular-logo-dark-4HXPMHPY.svg") !important}.angular-mcp-container[_ngcontent-ng-c2037532102]{position:relative;z-index:1;max-width:800px;margin:auto;border-radius:1rem}.angular-mcp-container[_ngcontent-ng-c2037532102]:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:linear-gradient(90deg,#a800d6,#ff266f,#ff5c39);filter:blur(40px);opacity:.25;transform:scale(.7);transition:all .5s ease}.explore-card[_ngcontent-ng-c2037532102]:hover   .angular-mcp-container[_ngcontent-ng-c2037532102]:before{transform:scale(.95);opacity:.45}.angular-mcp-container[_ngcontent-ng-c2037532102]   .mcp-content[_ngcontent-ng-c2037532102]{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-radius:1rem;width:100%;box-sizing:border-box;animation:_ngcontent-ng-c2037532102_rotateGradient 10s linear infinite;background:conic-gradient(from var(--gradient-angle) at 50% 50%,var(--hot-red) 0%,var(--vivid-pink) 20%,var(--electric-violet) 40%,transparent 50%,transparent 85%,var(--hot-red) 100%)}.angular-mcp-container[_ngcontent-ng-c2037532102]   .mcp-content[_ngcontent-ng-c2037532102]:after{content:"";position:absolute;inset:1px;background:var(--card-background);border-radius:1rem}.angular-mcp-container[_ngcontent-ng-c2037532102]   .mcp-label[_ngcontent-ng-c2037532102]{color:var(--primary-contrast);margin-right:1rem;white-space:nowrap;font-size:.9rem;z-index:1}.angular-mcp-container[_ngcontent-ng-c2037532102]   .mcp-pills[_ngcontent-ng-c2037532102]{font-size:.7rem;display:flex;justify-content:flex-end;align-items:center;gap:.75rem;flex-wrap:wrap;overflow:hidden;max-height:2rem;z-index:1}.angular-mcp-container[_ngcontent-ng-c2037532102]   .mcp-pill[_ngcontent-ng-c2037532102]{background-color:var(--septenary-contrast);color:var(--vivid-pink);font-family:monospace;padding:.5rem;border-radius:8px}</style><style ng-app-id="ng">.docs-text-field[_ngcontent-ng-c474188914] {
  font-size: 1.125rem;
}

docs-icon[_ngcontent-ng-c474188914]    + .docs-text-field[_ngcontent-ng-c474188914] {
  font-size: 1rem;
}

button[_ngcontent-ng-c474188914] {
  color: var(--secondary-contrast);
}
button[_ngcontent-ng-c474188914]:hover {
  color: var(--vivid-pink);
}

/*# sourceMappingURL=text-field.component.css.map */</style></head>
  <body class="mat-typography docs-scroll-track-transparent-large"><!--nghm-->
    <adev-root ng-version="21.2.15+sha-7e38336" _nghost-ng-c1178817259 ngh="5" ng-server-context="ssg"><button _ngcontent-ng-c1178817259 type="button" class="adev-skip">Skip to main content</button><!----><!----><div _ngcontent-ng-c1178817259 class="adev-nav" _nghost-ng-c3968259679 ngh="1"><div _ngcontent-ng-c3968259679 class="wrapper" id="primaryNav"><div _ngcontent-ng-c3968259679 class="adev-mobile-nav-bar"><button _ngcontent-ng-c3968259679 type="button" aria-label="Toggle mobile navigation" class="adev-mobile-nav-button"><svg _ngcontent-ng-c3968259679="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32"><g _ngcontent-ng-c3968259679="" clip-path="url(#2a)"><path _ngcontent-ng-c3968259679="" fill="url(#2b)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"/><path _ngcontent-ng-c3968259679="" fill="url(#2c)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"/></g><defs _ngcontent-ng-c3968259679=""><linearGradient _ngcontent-ng-c3968259679="" id="2b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c3968259679="" stop-color="#E40035"/><stop _ngcontent-ng-c3968259679="" offset=".24" stop-color="#F60A48"/><stop _ngcontent-ng-c3968259679="" offset=".352" stop-color="#F20755"/><stop _ngcontent-ng-c3968259679="" offset=".494" stop-color="#DC087D"/><stop _ngcontent-ng-c3968259679="" offset=".745" stop-color="#9717E7"/><stop _ngcontent-ng-c3968259679="" offset="1" stop-color="#6C00F5"/></linearGradient><linearGradient _ngcontent-ng-c3968259679="" id="2c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c3968259679="" stop-color="#FF31D9"/><stop _ngcontent-ng-c3968259679="" offset="1" stop-color="#FF5BE1" stop-opacity="0"/></linearGradient><clipPath _ngcontent-ng-c3968259679="" id="2a"><path _ngcontent-ng-c3968259679="" fill="#fff" d="M0 0h223v236H0z"/></clipPath></defs></svg><docs-icon _ngcontent-ng-c3968259679 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">menu</docs-icon></button></div><nav _ngcontent-ng-c3968259679 class="adev-nav-primary docs-scroll-hide"><button _ngcontent-ng-c3968259679 type="button" aria-label="Close navigation" class="adev-close-nav"><docs-icon _ngcontent-ng-c3968259679 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">close</docs-icon></button><ul _ngcontent-ng-c3968259679 class="adev-nav__top"><li _ngcontent-ng-c3968259679 class="adev-nav-item adev-nav-item--logo adev-nav-item--active"><a _ngcontent-ng-c3968259679 aria-label="Angular homepage" routerlink="/" href="/"><svg _ngcontent-ng-c3968259679="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32" class="angular-logo"><g _ngcontent-ng-c3968259679="" clip-path="url(#a)"><path _ngcontent-ng-c3968259679="" fill="url(#b)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"/><path _ngcontent-ng-c3968259679="" fill="url(#c)" d="m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"/></g><defs _ngcontent-ng-c3968259679=""><linearGradient _ngcontent-ng-c3968259679="" id="b" x1="49.009" x2="225.829" y1="213.75" y2="129.722" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c3968259679="" stop-color="#E40035"/><stop _ngcontent-ng-c3968259679="" offset=".24" stop-color="#F60A48"/><stop _ngcontent-ng-c3968259679="" offset=".352" stop-color="#F20755"/><stop _ngcontent-ng-c3968259679="" offset=".494" stop-color="#DC087D"/><stop _ngcontent-ng-c3968259679="" offset=".745" stop-color="#9717E7"/><stop _ngcontent-ng-c3968259679="" offset="1" stop-color="#6C00F5"/></linearGradient><linearGradient _ngcontent-ng-c3968259679="" id="c" x1="41.025" x2="156.741" y1="28.344" y2="160.344" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c3968259679="" stop-color="#FF31D9"/><stop _ngcontent-ng-c3968259679="" offset="1" stop-color="#FF5BE1" stop-opacity="0"/></linearGradient><clipPath _ngcontent-ng-c3968259679="" id="a"><path _ngcontent-ng-c3968259679="" fill="#fff" d="M0 0h223v236H0z"/></clipPath></defs></svg><!----><!----></a><div _ngcontent-ng-c3968259679 class="adev-nav-item"><button _ngcontent-ng-c3968259679 type="button" aria-label="Select Angular version" role="button" class="cdk-menu-trigger adev-version-button" data-cdk-menu-stack-id="cdk-menu-stack-0" aria-haspopup="menu" aria-expanded="false"> v21 <svg _ngcontent-ng-c3968259679="" xmlns="http://www.w3.org/2000/svg" height="15" viewBox="0 -960 960 960" width="15" fill="inherit"><path _ngcontent-ng-c3968259679="" d="M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"/></svg></button><!----><!----></div></li><li _ngcontent-ng-c3968259679 class="adev-nav-item"><button _ngcontent-ng-c3968259679 type="button" title="Search docs" class="adev-nav-button" aria-label="Open search dialog with "><svg _ngcontent-ng-c3968259679="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="inherit"><path _ngcontent-ng-c3968259679="" d="M14.583 15.48 9.104 10a4.591 4.591 0 0 1-1.458.844 5.156 5.156 0 0 1-1.771.302c-1.5 0-2.77-.52-3.813-1.563C1.022 8.542.5 7.285.5 5.813c0-1.473.52-2.73 1.563-3.771C3.103 1 4.367.479 5.854.479 7.326.48 8.58 1 9.614 2.042c1.035 1.041 1.553 2.298 1.553 3.77 0 .598-.098 1.174-.292 1.73A5.287 5.287 0 0 1 10 9.104l5.5 5.459-.917.916ZM5.854 9.895c1.125 0 2.083-.4 2.875-1.198a3.95 3.95 0 0 0 1.188-2.885 3.95 3.95 0 0 0-1.188-2.886C7.938 2.13 6.98 1.73 5.854 1.73c-1.139 0-2.107.4-2.906 1.198-.799.799-1.198 1.76-1.198 2.886 0 1.125.4 2.086 1.198 2.885.799.799 1.767 1.198 2.906 1.198Z"/></svg><span _ngcontent-ng-c3968259679 class="adev-nav-item__label adev-search-desktop"><kbd _ngcontent-ng-c3968259679><!--ngetn--></kbd><kbd _ngcontent-ng-c3968259679>K</kbd></span></button></li><li _ngcontent-ng-c3968259679 class="adev-nav-item"><a _ngcontent-ng-c3968259679 href="/docs"><svg _ngcontent-ng-c3968259679="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c3968259679="" d="M3.645 13.792h6.708v-1.25H3.645v1.25Zm0-3.542h6.708V9H3.645v1.25Zm-2.063 7.083a1.2 1.2 0 0 1-.875-.375 1.2 1.2 0 0 1-.375-.875V1.917a1.2 1.2 0 0 1 .375-.875 1.2 1.2 0 0 1 .875-.375h7.52l4.563 4.562v10.854a1.2 1.2 0 0 1-.375.875 1.2 1.2 0 0 1-.875.375H1.582ZM8.478 5.792V1.917H1.582v14.166h10.833V5.792H8.478Z"/></svg><span _ngcontent-ng-c3968259679 class="adev-nav-item__label">Docs</span></a></li><li _ngcontent-ng-c3968259679 class="adev-nav-item"><a _ngcontent-ng-c3968259679 href="/tutorials"><svg _ngcontent-ng-c3968259679="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="18" height="10" fill="inherit"><path _ngcontent-ng-c3968259679="" d="m5.668 10-5-5 5-5 1.187 1.188L3.022 5.02l3.813 3.812L5.668 10Zm6.667 0-1.188-1.188L14.98 4.98l-3.812-3.812L12.335 0l5 5-5 5Z"/></svg><span _ngcontent-ng-c3968259679 class="adev-nav-item__label">Tutorials</span></a></li><li _ngcontent-ng-c3968259679 class="adev-nav-item"><a _ngcontent-ng-c3968259679 href="/playground"><svg _ngcontent-ng-c3968259679="" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path _ngcontent-ng-c3968259679="" d="M450.001-611.691v-32.386q-39.385-9.923-64.692-41.897-25.308-31.975-25.308-74.025 0-49.922 35.038-84.96 35.039-35.038 84.961-35.038t84.961 35.038q35.038 35.038 35.038 84.96 0 42.05-25.308 74.025-25.307 31.974-64.692 41.897v32.386l273.846 157.538q17.173 9.912 26.663 26.582 9.491 16.671 9.491 36.495v62.152q0 19.824-9.491 36.495-9.49 16.67-26.663 26.582L516.154-111.771q-17.203 9.846-36.217 9.846t-36.091-9.846L176.155-265.847q-17.173-9.912-26.663-26.582-9.491-16.671-9.491-36.495v-62.152q0-19.824 9.491-36.495 9.49-16.67 26.663-26.582l273.846-157.538Zm-6.155 364.537L200-387.461v58.537q0 3.078 1.539 5.962 1.538 2.885 4.615 4.808l267.692 154.692q3.077 1.923 6.154 1.923t6.154-1.923l267.692-154.692q3.077-1.923 4.615-4.808 1.539-2.884 1.539-5.962v-58.537L516.154-247.154q-17.203 9.847-36.217 9.847t-36.091-9.847Zm6.155-162.847V-542.77L250.46-427.691l223.386 128.846q3.077 1.924 6.154 1.924t6.154-1.924l223.001-128.846L509.999-542.77v132.769h-59.998ZM480-699.999q25 0 42.5-17.5t17.5-42.5q0-25-17.5-42.5t-42.5-17.5q-25 0-42.5 17.5t-17.5 42.5q0 25 17.5 42.5t42.5 17.5Zm-2.308 538.46Z"/></svg><span _ngcontent-ng-c3968259679 class="adev-nav-item__label">Playground</span></a></li><li _ngcontent-ng-c3968259679 class="adev-nav-item"><a _ngcontent-ng-c3968259679 href="/reference"><svg _ngcontent-ng-c3968259679="" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="14" height="18" fill="inherit"><path _ngcontent-ng-c3968259679="" d="M3.645 13.792h6.708v-1.25H3.645v1.25Zm0-3.542h6.708V9H3.645v1.25Zm-2.063 7.083a1.2 1.2 0 0 1-.875-.375 1.2 1.2 0 0 1-.375-.875V1.917a1.2 1.2 0 0 1 .375-.875 1.2 1.2 0 0 1 .875-.375h7.52l4.563 4.562v10.854a1.2 1.2 0 0 1-.375.875 1.2 1.2 0 0 1-.875.375H1.582ZM8.478 5.792V1.917H1.582v14.166h10.833V5.792H8.478Z"/></svg><span _ngcontent-ng-c3968259679 class="adev-nav-item__label">Reference</span></a></li></ul><div _ngcontent-ng-c3968259679 class="adev-nav__bottom"><div _ngcontent-ng-c3968259679 class="adev-nav-item"><button _ngcontent-ng-c3968259679 type="button" aria-label="Open social media links" class="cdk-menu-trigger" role="button" data-cdk-menu-stack-id="cdk-menu-stack-1" aria-haspopup="menu" aria-expanded="false"><docs-icon _ngcontent-ng-c3968259679 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">more_horiz</docs-icon></button><!----><!----></div><div _ngcontent-ng-c3968259679 class="adev-nav-item"><button _ngcontent-ng-c3968259679 type="button" aria-haspopup="menu" class="cdk-menu-trigger" role="button" aria-label="Change theme. Current theme: null" aria-expanded="false" data-cdk-menu-stack-id="cdk-menu-stack-2"><docs-icon _ngcontent-ng-c3968259679 aria-hidden="true" translate="no" role="presentation" class="material-symbols-outlined adev-theme-icon" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0"><!----><!----><!----></docs-icon></button><!----><!----></div></div></nav><!----></div></div><!----><div _ngcontent-ng-c1178817259 class="docs-app-main-content"><!----><!----><router-outlet _ngcontent-ng-c1178817259></router-outlet><adev-main ngh="4"><router-outlet></router-outlet><adev-home _nghost-ng-c2037532102 ngh="3"><main _ngcontent-ng-c2037532102 class="adev-home"><section _ngcontent-ng-c2037532102 class="logo-section"><div _ngcontent-ng-c2037532102 class="pattern"></div><div _ngcontent-ng-c2037532102 class="content"><div _ngcontent-ng-c2037532102 class="adev-banner-container"><a _ngcontent-ng-c2037532102 href="events/v21" target="_blank" class="adev-banner"><h1 _ngcontent-ng-c2037532102 tabindex="-1">Angular v21 is here!</h1><p _ngcontent-ng-c2037532102 class="adev-banner-cta">🕹️ Start your adventure</p></a><div _ngcontent-ng-c2037532102 class="search-field"><docs-text-field _ngcontent-ng-c2037532102 placeholder="search" class="docs-form-element" _nghost-ng-c474188914 ngh="2"><docs-icon _ngcontent-ng-c474188914 aria-hidden="true" translate="no" class="material-symbols-outlined docs-icon_high-contrast" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">search</docs-icon><!----><input _ngcontent-ng-c474188914 type="text" class="docs-text-field" value placeholder="search" name><!----></docs-text-field></div></div><div _ngcontent-ng-c2037532102 class="title"><h2 _ngcontent-ng-c2037532102>Productivity<br _ngcontent-ng-c2037532102>Meets scalability</h2><h3 _ngcontent-ng-c2037532102>The framework for building scalable web apps with confidence</h3></div><!----><!----><div _ngcontent-ng-c2037532102 class="learn-angular"><a _ngcontent-ng-c2037532102 href="#learn-more" class="adev-cta"><button _ngcontent-ng-c2037532102 aria-label="Get Started" class="docs-primary-btn" text="Get Started"> Get Started </button></a><div _ngcontent-ng-c2037532102 class="adev-arrow"></div></div></div></section><section _ngcontent-ng-c2037532102 class="features-section"><h2 _ngcontent-ng-c2037532102 id="features">Features that actually <br _ngcontent-ng-c2037532102>help you solve problems</h2><div _ngcontent-ng-c2037532102 ngtabs class="material-tabs"><div _ngcontent-ng-c2037532102 role="tablist" ngtablist selectionmode="follow" selectedtab="signals" tabindex="-1" aria-disabled="false" aria-orientation="horizontal"><div _ngcontent-ng-c2037532102 class="tab-background"></div><div _ngcontent-ng-c2037532102 role="tab" ngtab value="signals" data-active="false" id="ng-tab-a30689-0" tabindex="-1" aria-selected="false" aria-disabled="false" aria-controls="ng-tabpanel-a30689-0">Signals</div><div _ngcontent-ng-c2037532102 role="tab" ngtab value="control-flow" data-active="false" id="ng-tab-a30689-1" tabindex="-1" aria-selected="false" aria-disabled="false" aria-controls="ng-tabpanel-a30689-1">Control Flow</div><div _ngcontent-ng-c2037532102 role="tab" ngtab value="deferrable-views" data-active="false" id="ng-tab-a30689-2" tabindex="-1" aria-selected="false" aria-disabled="false" aria-controls="ng-tabpanel-a30689-2">Deferrable Views</div><div _ngcontent-ng-c2037532102 role="tab" ngtab value="hydration" data-active="false" id="ng-tab-a30689-3" tabindex="-1" aria-selected="false" aria-disabled="false" aria-controls="ng-tabpanel-a30689-3">Hydration</div></div><div _ngcontent-ng-c2037532102 class="sliding-window"><div _ngcontent-ng-c2037532102 role="tabpanel" ngtabpanel value="signals" id="ng-tabpanel-a30689-0" tabindex="-1" inert="true" aria-labelledby="ng-tab-a30689-0"><!----></div><div _ngcontent-ng-c2037532102 role="tabpanel" ngtabpanel value="control-flow" id="ng-tabpanel-a30689-1" tabindex="-1" inert="true" aria-labelledby="ng-tab-a30689-1"><!----></div><div _ngcontent-ng-c2037532102 role="tabpanel" ngtabpanel value="deferrable-views" id="ng-tabpanel-a30689-2" tabindex="-1" inert="true" aria-labelledby="ng-tab-a30689-2"><!----></div><div _ngcontent-ng-c2037532102 role="tabpanel" ngtabpanel value="hydration" id="ng-tabpanel-a30689-3" tabindex="-1" inert="true" aria-labelledby="ng-tab-a30689-3"><!----></div></div></div></section><section _ngcontent-ng-c2037532102 class="selling-points"><h2 _ngcontent-ng-c2037532102>Enabling you to build<br _ngcontent-ng-c2037532102>smarter and faster</h2><div _ngcontent-ng-c2037532102 class="cards"><a _ngcontent-ng-c2037532102 routerlink="/ai/develop-with-ai" class="card" href="/ai/develop-with-ai"><div _ngcontent-ng-c2037532102 class="icon-wrapper"><docs-icon _ngcontent-ng-c2037532102 aria-hidden="true" translate="no" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">auto_awesome</docs-icon></div><div _ngcontent-ng-c2037532102 class="card-content"><h3 _ngcontent-ng-c2037532102><strong _ngcontent-ng-c2037532102>AI-forward</strong> resources and integrations to supercharge your development with AI </h3></div></a><a _ngcontent-ng-c2037532102 routerlink="/essentials" class="card" href="/essentials"><div _ngcontent-ng-c2037532102 class="icon-wrapper"><docs-icon _ngcontent-ng-c2037532102 aria-hidden="true" translate="no" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">grid_view</docs-icon></div><div _ngcontent-ng-c2037532102 class="card-content"><h3 _ngcontent-ng-c2037532102><strong _ngcontent-ng-c2037532102>Opinionated &amp; versatile,</strong> organized yet modular thanks to Angular components and dependency injection </h3></div></a><a _ngcontent-ng-c2037532102 routerlink="/essentials/signals" class="card" href="/essentials/signals"><div _ngcontent-ng-c2037532102 class="icon-wrapper"><docs-icon _ngcontent-ng-c2037532102 aria-hidden="true" translate="no" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">sensors</docs-icon></div><div _ngcontent-ng-c2037532102 class="card-content"><h3 _ngcontent-ng-c2037532102><strong _ngcontent-ng-c2037532102>Reactive</strong> and fast state updates with fine-grained reactivity based on Angular Signals </h3></div></a><a _ngcontent-ng-c2037532102 routerlink="/overview" class="card" href="/overview"><div _ngcontent-ng-c2037532102 class="icon-wrapper"><docs-icon _ngcontent-ng-c2037532102 aria-hidden="true" translate="no" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">layers</docs-icon></div><div _ngcontent-ng-c2037532102 class="card-content"><h3 _ngcontent-ng-c2037532102><strong _ngcontent-ng-c2037532102>Fully featured</strong> platform where everything works together with Angular's first-party modules for forms, routing, and more </h3></div></a></div></section><section _ngcontent-ng-c2037532102 id="performance" class="performance-section"><div _ngcontent-ng-c2037532102 class="wrapper"><div _ngcontent-ng-c2037532102 class="pattern"></div><div _ngcontent-ng-c2037532102 class="content"><h2 _ngcontent-ng-c2037532102>Where performance matters</h2><h3 _ngcontent-ng-c2037532102> Trusted by millions to build fast, reliable applications that scale with the size of your team </h3><button _ngcontent-ng-c2037532102 routerlink="/guide/performance" class="docs-primary-btn" tabindex="0" text="Get started"> Get started </button></div></div></section><section _ngcontent-ng-c2037532102 id="learn-more" class="explore-section"><div _ngcontent-ng-c2037532102 class="title"><h2 _ngcontent-ng-c2037532102>Want to learn more about Angular?</h2><div _ngcontent-ng-c2037532102 class="pattern"></div></div><div _ngcontent-ng-c2037532102 class="cards-grid"><a _ngcontent-ng-c2037532102 routerlink="/tutorials/learn-angular" class="explore-card" href="/tutorials/learn-angular"><div _ngcontent-ng-c2037532102 class="card-content"><p _ngcontent-ng-c2037532102><span _ngcontent-ng-c2037532102 class="emphasis">New to Angular?</span> Try our completely in browser tutorial lessons designed to give you hands on experience with Angular. </p><span _ngcontent-ng-c2037532102 class="fake-button">Start coding <docs-icon _ngcontent-ng-c2037532102 aria-hidden="true" translate="no" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">arrow_forward</docs-icon></span><div _ngcontent-ng-c2037532102 class="editor-background"></div></div></a><a _ngcontent-ng-c2037532102 routerlink="/ai" class="explore-card" href="/ai"><div _ngcontent-ng-c2037532102 class="card-content"><p _ngcontent-ng-c2037532102><span _ngcontent-ng-c2037532102 class="emphasis">Are you an LLM or curious about AI in Angular?</span> Head over to our AI section to find prompts, strategies, best practices, examples, and more. </p><span _ngcontent-ng-c2037532102 class="fake-button">Angular + AI <docs-icon _ngcontent-ng-c2037532102 aria-hidden="true" translate="no" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">arrow_forward</docs-icon></span><div _ngcontent-ng-c2037532102 class="angular-mcp-container"><div _ngcontent-ng-c2037532102 class="mcp-content"><div _ngcontent-ng-c2037532102 class="mcp-label">Angular MCP</div><div _ngcontent-ng-c2037532102 class="mcp-pills"><span _ngcontent-ng-c2037532102 class="mcp-pill">get_best_practices</span><span _ngcontent-ng-c2037532102 class="mcp-pill">ai_tutor</span><span _ngcontent-ng-c2037532102 class="mcp-pill">find_examples</span></div></div></div></div></a><a _ngcontent-ng-c2037532102 routerlink="/overview" class="explore-card" href="/overview"><div _ngcontent-ng-c2037532102 class="card-content"><p _ngcontent-ng-c2037532102><span _ngcontent-ng-c2037532102 class="emphasis">Why Angular?</span> Learn about Angular, its benefits, and if it's right for you. </p><div _ngcontent-ng-c2037532102 class="logo-background"></div></div></a><a _ngcontent-ng-c2037532102 routerlink="/essentials" class="explore-card" href="/essentials"><div _ngcontent-ng-c2037532102 class="card-content"><p _ngcontent-ng-c2037532102><span _ngcontent-ng-c2037532102 class="emphasis">More of a reader?</span> Our essentials guides are designed to help you understand Angular fundamentals in the time it would take to finish a cup of coffee (or a tea). </p><span _ngcontent-ng-c2037532102 class="fake-button">Angular concepts <docs-icon _ngcontent-ng-c2037532102 aria-hidden="true" translate="no" class="material-symbols-outlined" _nghost-ng-c1001676203 style="font-size: 0px;" ngh="0">arrow_forward</docs-icon></span></div></a></div></section><section _ngcontent-ng-c2037532102 id="bottom" class="learn-more-bottom-section"><div _ngcontent-ng-c2037532102 class="pattern"></div><div _ngcontent-ng-c2037532102 class="content"><h2 _ngcontent-ng-c2037532102>Want to learn more about Angular ?</h2><button _ngcontent-ng-c2037532102 aria-label="Learn more" routerlink="/overview" class="docs-primary-btn" tabindex="0" text="Learn more"> Learn more </button></div></section></main></adev-home><!----></adev-main><!----><footer _ngcontent-ng-c1178817259 adev-footer _nghost-ng-c3322347427 ngh="0"><div _ngcontent-ng-c3322347427 class="adev-footer-container"><div _ngcontent-ng-c3322347427 class="adev-footer-columns"><div _ngcontent-ng-c3322347427><h2 _ngcontent-ng-c3322347427>Social Media</h2><ul _ngcontent-ng-c3322347427><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 title="Angular blog" href="https://blog.angular.dev">Blog</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 title="X (formerly Twitter)" href="https://x.com/angular">X (formerly Twitter)</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 title="Bluesky" href="https://bsky.app/profile/angular.dev">Bluesky</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 title="YouTube" href="https://www.youtube.com/angular">YouTube</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 title="Join the discussions at Angular Community Discord server." href="https://discord.gg/angular"> Discord </a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 title="GitHub" href="https://github.com/angular/angular">GitHub</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 title="Stack Overflow: where the community answers your technical Angular questions." href="https://stackoverflow.com/questions/tagged/angular"> Stack Overflow </a></li></ul></div><div _ngcontent-ng-c3322347427><h2 _ngcontent-ng-c3322347427>Community</h2><ul _ngcontent-ng-c3322347427><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://github.com/angular/angular/blob/main/CONTRIBUTING.md" title="Contribute to Angular"> Contribute </a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md" title="Treating each other with respect."> Code of Conduct </a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://github.com/angular/angular/issues" title="Post issues and suggestions on GitHub."> Report Issues </a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://devlibrary.withgoogle.com/products/angular?sort=updated" title="Google's DevLibrary"> Google's DevLibrary </a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://developers.google.com/community/experts/directory?specialization=angular" title="Angular Google Developer Experts"> Angular Google Developer Experts </a></li></ul></div><div _ngcontent-ng-c3322347427><h2 _ngcontent-ng-c3322347427>Resources</h2><ul _ngcontent-ng-c3322347427><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 routerlink="/press-kit" title="Press contacts, logos, and branding." href="/press-kit">Press Kit</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 routerlink="/roadmap" title="Roadmap" href="/roadmap">Roadmap</a></li></ul></div><div _ngcontent-ng-c3322347427><h2 _ngcontent-ng-c3322347427>Community translations</h2><ul _ngcontent-ng-c3322347427><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://angular.az/" title="Azərbaycanca">Azərbaycanca</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://docs.angular.lat/" title="Español">Español</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://angular-docs.tr/" title="Türkçe">Türkçe</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://angular-docs.ru/" title="Русский">Русский</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://angular.kr/" title="한국어">한국어</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://angular.jp/" title="日本語版">日本語版</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://angular.cn/" title="简体中文版">简体中文版</a></li><li _ngcontent-ng-c3322347427><a _ngcontent-ng-c3322347427 href="https://dev.angular.tw/" title="正體中文版">正體中文版</a></li></ul></div></div><p _ngcontent-ng-c3322347427 class="docs-license"> Super-powered by Google ©2010-2026. Code licensed under an <a _ngcontent-ng-c3322347427 routerlink="/license" title="License text" href="/license">MIT-style License</a> . Documentation licensed under <a _ngcontent-ng-c3322347427 href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a> . Built by Angular at v21.2.15+sha-7e38336. </p></div></footer><!----></div></adev-root>
  <script src="main-S4EOE4KI.js" type="module"></script>

<div class="cdk-live-announcer-element cdk-visually-hidden" aria-atomic="true" aria-live="polite" id="cdk-live-announcer-0"></div><script id="ng-state" type="application/json">{"__nghData__":[{},{"n":{"21":"20f","25":"24f","75":"74f","81":"80f"},"t":{"29":"t2","30":"t3","36":"t4","76":"t5","81":"t6","82":"t7","83":"t8","84":"t9","86":"t10"},"c":{"29":[{"i":"t2","r":1}],"30":[],"32":[],"36":[],"73":[],"76":[],"79":[],"81":[],"82":[],"83":[],"84":[],"86":[]}},{"t":{"0":"t14","3":"t15"},"c":{"0":[{"i":"t14","r":1,"n":{"1":"0f"}}],"3":[]}},{"t":{"13":"t16","14":"t17","38":"t18","40":"t19","42":"t20","44":"t21"},"c":{"13":[{"i":"t16","r":1}],"14":[],"38":[],"40":[],"42":[],"44":[]},"n":{"54":"53f","63":"62f","72":"71f","81":"80f","112":"111f","123":"122f","151":"150f"}},{"c":{"0":[{"i":"c2037532102","r":1}]}},{"t":{"2":"t0","3":"t1","6":"t11","8":"t12","9":"t13","12":"t22"},"c":{"2":[],"3":[],"6":[],"8":[],"9":[],"11":[{"i":"c2556530580","r":1}],"12":[{"i":"t22","r":1}]}}]}</script></body></html>