CINXE.COM

Google AI Edge  |  Google AI for Developers

<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="157101835696-ooapojlodmuabs2do2vuhhnf90bccmoi.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google AI for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#1967d2"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/googledevai/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/touchicon-180-new.png"><link rel="canonical" href="https://ai.google.dev/edge"><link rel="search" type="application/opensearchdescription+xml" title="Google AI for Developers" href="https://ai.google.dev/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://ai.google.dev/edge" /><link rel="alternate" hreflang="x-default" href="https://ai.google.dev/edge" /><link rel="alternate" hreflang="ar" href="https://ai.google.dev/edge?hl=ar" /><link rel="alternate" hreflang="bn" href="https://ai.google.dev/edge?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://ai.google.dev/edge?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://ai.google.dev/edge?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://ai.google.dev/edge?hl=fa" /><link rel="alternate" hreflang="fr" href="https://ai.google.dev/edge?hl=fr" /><link rel="alternate" hreflang="de" href="https://ai.google.dev/edge?hl=de" /><link rel="alternate" hreflang="he" href="https://ai.google.dev/edge?hl=he" /><link rel="alternate" hreflang="hi" href="https://ai.google.dev/edge?hl=hi" /><link rel="alternate" hreflang="id" href="https://ai.google.dev/edge?hl=id" /><link rel="alternate" hreflang="it" href="https://ai.google.dev/edge?hl=it" /><link rel="alternate" hreflang="ja" href="https://ai.google.dev/edge?hl=ja" /><link rel="alternate" hreflang="ko" href="https://ai.google.dev/edge?hl=ko" /><link rel="alternate" hreflang="pl" href="https://ai.google.dev/edge?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://ai.google.dev/edge?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://ai.google.dev/edge?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://ai.google.dev/edge?hl=es-419" /><link rel="alternate" hreflang="th" href="https://ai.google.dev/edge?hl=th" /><link rel="alternate" hreflang="tr" href="https://ai.google.dev/edge?hl=tr" /><link rel="alternate" hreflang="vi" href="https://ai.google.dev/edge?hl=vi" /><title>Google AI Edge &nbsp;|&nbsp; Google AI for Developers</title> <meta property="og:title" content="Google AI Edge &nbsp;|&nbsp; Google AI for Developers"><meta name="description" content="Introducing AI Edge"> <meta property="og:description" content="Introducing AI Edge"><meta property="og:url" content="https://ai.google.dev/edge"><meta property="og:image" content="https://ai.google.dev/static/site-assets/images/share.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1.0, shrink-to-fit=no, height=device-height" name="viewport"> <meta name="keywords" content="Google AI Edge, MediaPipe, TensorFlow Lite"> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="googledevai-theme" type="marketing" layout="full" pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner" keep-tabs-visible> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleAIEdge" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://ai.google.dev/_static/googledevai/images/lockup-new.svg" class="devsite-site-logo" alt="Google AI Edge"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab > <a href="https://ai.google.dev/gemini-api" track-metadata-eventdetail="https://ai.google.dev/gemini-api" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - gemini api" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Gemini API" track-name="gemini api" > Gemini API </a> </tab> <tab > <a href="https://ai.google.dev/gemma" track-metadata-eventdetail="https://ai.google.dev/gemma" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - gemma" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Gemma" track-name="gemma" > Gemma </a> </tab> <tab class="devsite-active"> <a href="https://ai.google.dev/edge" track-metadata-eventdetail="https://ai.google.dev/edge" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - google ai edge" track-metadata-module="primary nav" aria-label="Google AI Edge, selected" data-category="Site-Wide Custom Events" data-label="Tab: Google AI Edge" track-name="google ai edge" > Google AI Edge </a> </tab> <tab class="devsite-dropdown "> <span class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - tools" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Tools" track-name="tools" > Tools </span> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Tools" track-type="nav" track-metadata-eventdetail="" track-metadata-position="nav - tools" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Tools" track-name="tools" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://ai.google.dev/responsible" track-type="nav" track-metadata-eventdetail="https://ai.google.dev/responsible" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Responsible GenAI Toolkit </div> </a> </li> <li class="devsite-nav-item"> <a href="https://colab.google/" track-type="nav" track-metadata-eventdetail="https://colab.google/" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Colab </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/genkit" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/genkit" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Firebase Genkit </div> </a> </li> <li class="devsite-nav-item"> <a href="https://jax.readthedocs.io/" track-type="nav" track-metadata-eventdetail="https://jax.readthedocs.io/" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> JAX </div> </a> </li> <li class="devsite-nav-item"> <a href="https://keras.io/" track-type="nav" track-metadata-eventdetail="https://keras.io/" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Keras </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/" track-metadata-position="nav - tools" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> TensorFlow </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://discuss.ai.google.dev/" track-metadata-eventdetail="https://discuss.ai.google.dev/" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Google AI Edge" tenant-name="Google AI for Developers" > <form class="devsite-search-form" action="https://ai.google.dev/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab class="devsite-active"> <a href="https://ai.google.dev/edge" track-metadata-eventdetail="https://ai.google.dev/edge" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" aria-label="Overview, selected" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" > Overview </a> </tab> <tab class="devsite-dropdown "> <span class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - mediapipe" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: MediaPipe" track-name="mediapipe" > MediaPipe </span> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for MediaPipe" track-type="nav" track-metadata-eventdetail="" track-metadata-position="nav - mediapipe" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: MediaPipe" track-name="mediapipe" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://ai.google.dev/edge/mediapipe/solutions/guide" track-type="nav" track-metadata-eventdetail="https://ai.google.dev/edge/mediapipe/solutions/guide" track-metadata-position="nav - mediapipe" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> MediaPipe Solutions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://ai.google.dev/edge/mediapipe/framework" track-type="nav" track-metadata-eventdetail="https://ai.google.dev/edge/mediapipe/framework" track-metadata-position="nav - mediapipe" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> MediaPipe Framework </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://ai.google.dev/edge/litert" track-metadata-eventdetail="https://ai.google.dev/edge/litert" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - litert" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: LiteRT" track-name="litert" > LiteRT </a> </tab> <tab > <a href="https://ai.google.dev/edge/mediapipe/solutions/guide" track-metadata-eventdetail="https://ai.google.dev/edge/mediapipe/solutions/guide" class="devsite-tabs-content gc-analytics-event gemini-hidden-tab" track-type="nav" track-metadata-position="nav - solutions" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Solutions" track-name="solutions" > Solutions </a> </tab> <tab > <a href="https://ai.google.dev/edge/mediapipe/framework" track-metadata-eventdetail="https://ai.google.dev/edge/mediapipe/framework" class="devsite-tabs-content gc-analytics-event gemini-hidden-tab" track-type="nav" track-metadata-position="nav - framework" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Framework" track-name="framework" > Framework </a> </tab> <tab > <a href="https://ai.google.dev/edge/model-explorer" track-metadata-eventdetail="https://ai.google.dev/edge/model-explorer" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - model explorer" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Model Explorer" track-name="model explorer" > Model Explorer </a> </tab> <tab > <a href="https://ai.google.dev/edge/api" track-metadata-eventdetail="https://ai.google.dev/edge/api" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - api reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: API Reference" track-name="api reference" > API Reference </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars hidden> <div class="devsite-book-nav-filter" hidden> <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleAIEdge" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://ai.google.dev/_static/googledevai/images/lockup-new.svg" class="devsite-site-logo" alt="Google AI Edge"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/gemini-api" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Gemini API" track-name="gemini api" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gemini API" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gemini API </span> </a> </li> <li class="devsite-nav-item"> <a href="/gemma" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Gemma" track-name="gemma" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gemma" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gemma </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Google AI Edge" track-name="google ai edge" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google AI Edge" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google AI Edge </span> </a> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/edge" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: MediaPipe" track-name="mediapipe" > <span class="devsite-nav-text" tooltip > MediaPipe </span> </span> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: MediaPipe" track-name="mediapipe" > <span class="devsite-nav-text" tooltip menu="MediaPipe"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="MediaPipe"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/edge/litert" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: LiteRT" track-name="litert" data-category="Site-Wide Custom Events" data-label="Responsive Tab: LiteRT" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > LiteRT </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/mediapipe/solutions/guide" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Solutions" track-name="solutions" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Solutions" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Solutions </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/mediapipe/framework" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Framework" track-name="framework" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Framework" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Framework </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/model-explorer" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Model Explorer" track-name="model explorer" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Model Explorer" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Model Explorer </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/api" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: API Reference" track-name="api reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: API Reference" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > API Reference </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Tools" track-name="tools" > <span class="devsite-nav-text" tooltip > Tools </span> </span> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Tools" track-name="tools" > <span class="devsite-nav-text" tooltip menu="Tools"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Tools"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="https://discuss.ai.google.dev/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="Tools" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/responsible" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Responsible GenAI Toolkit" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Responsible GenAI Toolkit </span> </a> </li> <li class="devsite-nav-item"> <a href="https://colab.google/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Colab" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Colab </span> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/genkit" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firebase Genkit" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Firebase Genkit </span> </a> </li> <li class="devsite-nav-item"> <a href="https://jax.readthedocs.io/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: JAX" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > JAX </span> </a> </li> <li class="devsite-nav-item"> <a href="https://keras.io/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Keras" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Keras </span> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TensorFlow" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TensorFlow </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="MediaPipe" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/edge/mediapipe/solutions/guide" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: MediaPipe Solutions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > MediaPipe Solutions </span> </a> </li> <li class="devsite-nav-item"> <a href="/edge/mediapipe/framework" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: MediaPipe Framework" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > MediaPipe Framework </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars disabled></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /css/style.css */ [theme=googledevai-theme][layout=full] { --devsite-main-content-padding: 40px 0; } @media screen and (max-width: 600px) { [theme=googledevai-theme][layout=full] { --devsite-main-content-padding: 16px 0; --devsite-banner-margin: -16px 0 16px; } } @media screen and (max-width: 840px) { [theme=googledevai-theme][layout=full] { --devsite-main-content-padding: 24px 0; --devsite-banner-margin: -24px 0 16px; } } .gemini-page { font-family: var(--gemini-font-primary); font-size: var(--gemini-font-size-base); background-color: var(--gemini-color-background); color: var(--gemini-color-foreground); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeSpeed; display: block; } .gemini-page * { margin: 0; } .devsite-article .gemini-page h1:first-of-type { display: flex; margin-top: inherit; vertical-align: inherit; } .gemini-page *, .gemini-page *:before, .gemini-page *:after { box-sizing: border-box; } .gemini-page ol, .gemini-page ul, .gemini-page li { /* all: unset; */ list-style: none; padding: 0; } .gemini-page img, .gemini-page picture, .gemini-page video, .gemini-page canvas, .gemini-page svg { max-inline-size: 100%; block-size: auto; } .gemini-page input, .gemini-page button, .gemini-page textarea, .gemini-page select { font: inherit; } /* remove link drag and call-out menu on touch */ .gemini-page a, .gemini-page img { -webkit-touch-callout: none; -webkit-user-drag: none; } /* Hide outline for mouse users. */ .gemini-page :focus:not(:focus-visible) { outline: none; } .gemini-page { --gemini-color-white: rgb(255 255 255); --gemini-color-grey-50: #f7f9fd; --gemini-color-grey-100: #f0f3f8; --gemini-color-grey-200: #d2d8e4; --gemini-color-grey-300: #b7becf; --gemini-color-grey-400: #939db6; --gemini-color-grey-500: #828fb1; --gemini-color-grey-600: #2f3543; --gemini-color-grey-700: #1b212d; --gemini-color-grey-800: #161823; --gemini-color-grey-900: #060606; --gemini-color-black: rgb(0 0 0); --gemini-color-gemini-peach: #FFDDB7; --gemini-color-gemini-blue: #368EFE; --gemini-color-gemini-cyan: #4FABFF; --gemini-color-gemini-light-blue: #B1C5FF; --gemini-color-gemini-white: var(--gemini-color-white); --gemini-color-gemini-grey-700: #5F6368; --gemini-color-gemini-grey-900: #202124; --gemini-color-blue: #368efe; --gemini-color-purple-100: #ac87eb; --gemini-color-red-200: #ee4d5d; --gemini-color-green-800: #137333; --gemini-color-blue-800: #185ABC; --gemini-color-blue-gradient: linear-gradient(61deg, #64b8fb 6.28%, #217bfe 76.97%); --gemini-color-pink-gradient: linear-gradient(90deg, #a485fa -104.88%, var(--gemini-color-red-200) 198.78%); --gemini-color-logo-gradient: linear-gradient(90deg, #217bfe 0%, #078efb 33.53%, #ac87eb 70%, #ee4d5d 100%); --gemini-color-primary-button-gradient: linear-gradient(52deg, #0844ff 11.5%, #64b8fb 129.52%); --gemini-color-chart-gradient: linear-gradient(105deg, #446eff 18.71%, #2e96ff 49.8%, #b1c5ff 90.55%); --gemini-color-foreground: var(--gemini-color-white); --gemini-color-background: var(--gemini-color-grey-900); --gemini-branding-button-gradient: linear-gradient(15deg, #217BFE 1.02%, #078EFB 28.51%, #A190FF 80.14%, #BD99FE 102.85%); --gemini-branding-text-gradient: linear-gradient(90deg, #217BFE 0%, #078EFB 33.53%, #AC87EB 67.74%, #EE4D5D 100%); --gemini-gradient-linear-colors: var(--gemini-color-gemini-blue) 5.96%, var(--gemini-color-gemini-cyan) 56.89%, var(--gemini-color-gemini-light-blue) 93.53%; --gemini-gradient-linear: linear-gradient(53deg, #0260FF 9.29%, #40A2FF 48.23%, #A8BEFF 82.56%); --gemini-text-gradient-light-blue: linear-gradient(69deg, #AABDF4 16.42%, #FFF 77.56%, #A8BEFF 124.91%); } .gemini-page .gemini-text-color-grey-400 { color: var(--gemini-color-grey-400); } .gemini-page .gemini-text-color-grey-500 { color: var(--gemini-color-grey-500); } .gemini-page { --gemini-font-primary: "Google Sans", Arial, Helvetica, sans-serif; --gemini-font-secondary: "Roboto Mono", Courier, monospace; --gemini-font-tertiary: "Google Sans Text", Arial, Helvetica, sans-serif; --gemini-font-size-base: 16px; --gemini-size-grid-margin: 20px; --gemini-size-max-width: calc(1440px + var(--gemini-size-grid-margin) * 2); --gemini-size-grid-gap: 8px; --devsite-main-content-padding-top: 40px; } @media (min-width: 600px) { .gemini-page { --gemini-size-grid-margin: 40px; --gemini-size-grid-gap: 20px; } } @media (min-width: 1440px) { .gemini-page { --gemini-size-grid-margin: 80px; } } .gemini-page { --gemini-border-radius-d16: 8px; --gemini-border-radius-d24: 16px; --gemini-border-radius-d32: 24px; } @media (min-width: 834px) { .gemini-page { --gemini-border-radius-d16: 16px; --gemini-border-radius-d24: 24px; --gemini-border-radius-d32: 32px; } } .gemini-page { --gemini-ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53); --gemini-ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19); --gemini-ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22); --gemini-ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); --gemini-ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035); --gemini-ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335); --gemini-ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94); --gemini-ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1); --gemini-ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1); --gemini-ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); --gemini-ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1); --gemini-ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1); --gemini-ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955); --gemini-ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1); --gemini-ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1); --gemini-ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); --gemini-ease-in-out-expo: cubic-bezier(1, 0, 0, 1); --gemini-ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86); --gemini-ease-out-back: cubic-bezier(0.34, 1.85, 0.64, 1); --gemini-viewport-height: 100vh; --gemini-100vh: var(--gemini-viewport-height, 100vh); } .gemini-center-wrapper { display: flex; justify-content: center; align-items: center; } .gemini-page .gemini-type-d1, .gemini-page .gemini-type-d2, .gemini-page .gemini-type-d3, .gemini-page .gemini-type-d4 { font-family: var(--gemini-font-primary); line-height: 100%; font-weight: 400; } .gemini-page .gemini-type-d1 { font-size: 3.5rem; letter-spacing: -0.025862069em; } .gemini-page .gemini-type-d2 { font-size: 3rem; letter-spacing: -0.021em; } .gemini-page .gemini-type-d3 { font-size: 2.75rem; letter-spacing: -0.05rem; line-height: 105%; } .gemini-page .gemini-type-d4 { font-size: 2.25rem; line-height: 110%; letter-spacing: -0.05rem; } @media (min-width: 834px) { .gemini-page .gemini-type-d4 { font-size: 4rem; letter-spacing: -0.0125em; } } .gemini-page .gemini-type-h1, .gemini-page .gemini-type-h2, .gemini-page .gemini-type-h3, .gemini-page .gemini-type-h4 { font-family: var(--gemini-font-primary); line-height: 120%; font-weight: 400; } .gemini-page .gemini-type-h1 { font-size: 1.625rem; letter-spacing: -0.03125rem; } .gemini-page .gemini-type-h2 { font-size: 1.625rem; letter-spacing: -0.03125rem; } .gemini-page .gemini-type-h3 { font-size: 1.5rem; line-height: 120%; letter-spacing: -0.03125rem; } .gemini-page .gemini-type-h4 { font-size: 1.375rem; } .gemini-page .gemini-type-t1-medium, .gemini-page .gemini-type-t1, .gemini-page .gemini-type-t2, .gemini-page .gemini-type-t3 { font-family: var(--gemini-font-primary); } .gemini-page .gemini-type-t1-medium { font-size: 1rem; font-weight: 500; line-height: 140%; } .gemini-page .gemini-type-t1 { font-size: 1rem; font-weight: 400; line-height: 140%; } .gemini-page .gemini-type-t2 { font-size: 0.875rem; font-weight: 500; line-height: 140%; } .gemini-page .gemini-type-t3 { font-size: 0.75rem; font-weight: 500; line-height: 140%; } .gemini-page .gemini-type-b1, .gemini-page .gemini-type-b2 { font-family: var(--gemini-font-primary); font-weight: 400; line-height: 160%; } .gemini-page .gemini-type-b1 { font-size: 0.875rem; } .gemini-page .gemini-type-b2 { font-size: 0.875rem; line-height: 160%; } .gemini-page .gemini-type-btn { font-family: var(--gemini-font-primary); font-size: 0.875rem; font-weight: 500; line-height: 1.625em; } .gemini-page .gemini-type-btn-secondary { font-size: 0.875rem; } .gemini-page .gemini-type-code, .gemini-page .gemini-type-code pre { font-family: var(--gemini-font-secondary); font-size: 0.75rem; font-weight: 400; line-height: 1.666em; padding: 0; } .gemini-page .gemini-type-l1, .gemini-page .gemini-type-l2 { font-family: var(--gemini-font-primary); text-transform: uppercase; font-weight: 700; line-height: 140%; letter-spacing: 0.0416666667em; } .gemini-page .gemini-type-l1 { font-size: 0.75rem; } .gemini-page .gemini-type-l2 { font-size: 0.75rem; } .gemini-page .gemini-type-l3 { font-size: 0.75rem; font-weight: 500; letter-spacing: 0; } @media (min-width: 834px) { .gemini-page .gemini-type-h3 { font-size: 2rem; letter-spacing: auto; } .gemini-page .gemini-type-h4 { font-size: 1.75rem; } .gemini-page .gemini-type-t1-medium { font-size: 1.25rem; } .gemini-page .gemini-type-t1 { font-size: 1.25rem; } .gemini-page .gemini-type-t2 { font-size: 1rem; line-height: 160%; } .gemini-page .gemini-type-t3 { font-size: 0.875rem; } .gemini-page .gemini-type-b1 { font-size: 1rem; } .gemini-page .gemini-type-b2 { font-size: 0.875rem; line-height: 160%; } .gemini-page .gemini-type-btn { font-size: 1rem; } .gemini-page .gemini-type-code, .gemini-page .gemini-type-code pre { line-height: 1.666em; font-size: 1rem; } .gemini-page .gemini-type-l1 { font-size: 0.875rem; } .gemini-page .gemini-type-l2 { font-size: 0.75rem; } .gemini-page .gemini-type-l3 { font-size: 0.75rem; } .gemini-page .gemini-type-d1 { font-size: 6.75rem; /*letter-spacing: -0.1875rem;*/ } .gemini-page .gemini-type-d2 { font-size: 6rem; } .gemini-page .gemini-type-d3 { font-size: 4.5rem; letter-spacing: -0.0111111111em; line-height: 110%; } .gemini-page .gemini-type-h1 { font-size: 2.8125rem; } .gemini-page .gemini-type-h2 { font-size: 2.25rem; } } .gemini-page { --gemini-space-8: 8px; --gemini-space-12: 12px; --gemini-space-16: 16px; --gemini-space-24: 24px; --gemini-space-32: 32px; --gemini-space-40: 40px; --gemini-space-48: 48px; --gemini-space-56: 56px; --gemini-space-64: 64px; --gemini-space-72: 72px; --gemini-space-80: 80px; --gemini-space-88: 88px; --gemini-space-96: 96px; --gemini-space-120: 120px; --gemini-space-140: 140px; --gemini-space-164: 164px; --gemini-space-180: 180px; --gemini-space-200: 200px; --gemini-space-220: 220px; --gemini-space-240: 240px; --gemini-space-264: 264px; --gemini-space-280: 280px; --gemini-space-320: 320px; --gemini-space-360: 360px; --gemini-space-440: 400px; --gemini-space-d8: var(--gemini-space-8); --gemini-space-d12: var(--gemini-space-12); --gemini-space-d16: var(--gemini-space-16); --gemini-space-d24: var(--gemini-space-16); --gemini-space-d32: var(--gemini-space-24); --gemini-space-d40: var(--gemini-space-32); --gemini-space-d48: var(--gemini-space-40); --gemini-space-d64: var(--gemini-space-48); --gemini-space-d72: var(--gemini-space-56); --gemini-space-d88: var(--gemini-space-64); --gemini-space-d120: var(--gemini-space-88); --gemini-space-d140: var(--gemini-space-120); --gemini-space-d180: var(--gemini-space-120); --gemini-space-d220: var(--gemini-space-180); --gemini-space-d264: var(--gemini-space-180); --gemini-space-d280: var(--gemini-space-200); --gemini-space-d320: var(--gemini-space-220); --gemini-space-d360: var(--gemini-space-240); --gemini-space-d440: var(--gemini-space-264); } @media (min-width: 834px) { .gemini-page { --gemini-space-d8: var(--gemini-space-8); --gemini-space-d12: var(--gemini-space-12); --gemini-space-d16: var(--gemini-space-16); --gemini-space-d24: var(--gemini-space-24); --gemini-space-d32: var(--gemini-space-32); --gemini-space-d40: var(--gemini-space-40); --gemini-space-d48: var(--gemini-space-48); --gemini-space-d64: var(--gemini-space-64); --gemini-space-d72: var(--gemini-space-72); --gemini-space-d88: var(--gemini-space-88); --gemini-space-d120: var(--gemini-space-120); --gemini-space-d140: var(--gemini-space-140); --gemini-space-d180: var(--gemini-space-180); --gemini-space-d220: var(--gemini-space-220); --gemini-space-d264: var(--gemini-space-264); --gemini-space-d280: var(--gemini-space-280); --gemini-space-d320: var(--gemini-space-320); --gemini-space-d360: var(--gemini-space-360); --gemini-space-d440: var(--gemini-space-440); } } .gemini-page .gemini-space-d8 { margin-block-end: var(--gemini-space-d8); } .gemini-page .gemini-space-d12 { margin-block-end: var(--gemini-space-d12); } .gemini-page .gemini-space-d16 { margin-block-end: var(--gemini-space-d16); } .gemini-page .gemini-space-d24 { margin-block-end: var(--gemini-space-d24); } .gemini-page .gemini-space-d32 { margin-block-end: var(--gemini-space-d32); } .gemini-page .gemini-space-d40 { margin-block-end: var(--gemini-space-d40); } .gemini-page .gemini-space-d48 { margin-block-end: var(--gemini-space-d48); } .gemini-page .gemini-space-d64 { margin-block-end: var(--gemini-space-d64); } .gemini-page .gemini-space-d72 { margin-block-end: var(--gemini-space-d72); } .gemini-page .gemini-space-d88 { margin-block-end: var(--gemini-space-d88); } .gemini-page .gemini-space-d120 { margin-block-end: var(--gemini-space-d120); } .gemini-page .gemini-space-d140 { margin-block-end: var(--gemini-space-d140); } .gemini-page .gemini-space-d164 { margin-block-end: var(--gemini-space-d164); } .gemini-page .gemini-space-d180 { margin-block-end: var(--gemini-space-d180); } .gemini-page .gemini-space-d220 { margin-block-end: var(--gemini-space-d220); } .gemini-page .gemini-space-d264 { margin-block-end: var(--gemini-space-d264); } .gemini-page .gemini-space-d280 { margin-block-end: var(--gemini-space-d280); } body[theme=googledevai-theme][layout=full] .devsite-main-content { max-width: none; padding-bottom: 0; background-color: #060606; } body[theme=googledevai-theme][layout=full] .devsite-article-body { margin-top: 0; background-color: var(--gemini-color-background); } body[theme=googledevai-theme] .devsite-banner-announcement { position: relative; z-index: 10; } devsite-header .devsite-product-id-row { display: none; } .gemini-page .gemini-decoration-link { text-decoration: underline; color: var(--gemini-color-blue-400); display: inline-flex; align-items: center; gap: var(--gemini-space-8); } .gemini-page .gemini-layout-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); column-gap: var(--gemini-size-grid-gap); } .gemini-page .gemini-layout-max-width { max-inline-size: var(--gemini-size-max-width); padding-inline: var(--gemini-size-grid-margin); margin-inline: auto; } .gemini-page .gemini-layout-zstack { display: grid; } .gemini-page .gemini-layout-zstack > * { grid-area: 1/-1; } .gemini-page .gemini-layout-inline { display: inline-flex; flex-direction: row; align-items: center; gap: var(--gemini-space, 8px); } .gemini-page .gemini-layout-stack { display: flex; flex-direction: column; justify-content: flex-start; } .gemini-page .gemini-layout-stack > * { margin-block: 0; } .gemini-page .gemini-layout-stack > * + * { margin-block-start: var(--gemini-space, 1rem); } .gemini-page .gemini-shape-box { border-radius: var(--gemini-corner-radius-medium); } .gemini-page .gemini-shape-rounded-container { border-radius: 24px; } .gemini-page .gemini-shape-pill-label { display: inline-flex; align-items: center; background: var(--gemini-shape-pill-background, rgba(7, 110, 255, 0.2)); color: var(--gemini-label-color, #b1c5ff); padding: 6px 11px; border-radius: 99em; } @media (min-width: 834px) { .gemini-page .gemini-layout-grid { grid-template-columns: repeat(8, minmax(0, 1fr)); } } @media (min-width: 1024px) { .gemini-page .gemini-layout-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); } } /** Gemini: Gradient Text */ .gemini-gradient-text { --gemini-_gradient: var(--gemini-text-gradient, var(--gemini-color-blue-gradient)); } .gemini-gradient-text span { background: var(--gemini-_gradient); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; text-fill-color: transparent; } /** Gemini: Youtube Video */ .gemini-youtube { position: relative; inline-size: 100%; aspect-ratio: 16/9; overflow: hidden; border-radius: 8px; border: 4px solid var(--gemini-color-grey-800); transition: border 0.2s var(--gemini-ease-in-out-quad); --gemini-hover-scale: 0.1; } .gemini-youtube:has(:hover) { border: 4px solid var(--gemini-color-blue); } .gemini-youtube:has(:hover) .gemini-youtube__play-button { transform: scale(calc(1 + var(--gemini-hover-scale))); } @media (min-width: 834px) { .gemini-youtube { border-radius: 32px; } } .gemini-youtube-poster { cursor: pointer; line-height: 0; } .gemini-youtube-poster :is(img, video) { height: 100%; width: 100%; } .gemini-video-overlay { display: flex; align-items: center; flex-direction: column; justify-content: center; gap: 12px; cursor: pointer; background-color: rgba(0, 0, 0, 0.05); pointer-events: none; } @media (min-width: 834px) { .gemini-video-overlay { gap: 48px; } } .gemini-youtube__title { max-width: 214px; display: inline-block; text-align: center; position: relative; z-index: 5; } @media (min-width: 834px) { .gemini-youtube__title { max-width: 620px; } } @media (max-width: 834px) { .gemini-youtube__title { font-size: 26px !important; } } .gemini-youtube__play-button { all: unset; height: 32px; width: 32px; border-radius: 50%; background: var(--gemini-color-white); display: grid; place-items: center; position: relative; z-index: 5; transition: transform 0.3s var(--gemini-ease-in-out-quad); box-shadow: 0 4px 8px 3px rgba(60, 64, 67, 0.15), 0 1px 3px 0 rgba(60, 64, 67, 0.32); } @media (min-width: 834px) { .gemini-youtube__play-button { height: 64px; width: 64px; } } .gemini-youtube__play-button svg { height: 16px; width: 16px; } @media (min-width: 834px) { .gemini-youtube__play-button svg { height: 28px; width: 28px; } } @media (min-width: 834px) { .gemini-anchor-padding { padding-block-start: 40px; } } @media (min-width: 834px) { .gemini-only-mobile { display: none; } } .gemini-only-desktop { display: none; } @media (min-width: 834px) { .gemini-only-desktop { display: block; } } /* Spinner */ .gemini-spinner { block-size: 48px; inline-size: 48px; flex-shrink: 0; animation: gemini-spinner-animation 1.6s linear infinite; } @keyframes gemini-spinner-animation { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Gemini: Item grid */ .gemini-page .gemini-card-grid { row-gap: 8px; } @media (min-width: 834px) { .gemini-page .gemini-card-grid { row-gap: var(--gemini-size-grid-gap); } } .gemini-page .gemini-card-grid > * { grid-column: -1/1; } @media screen and (min-width: 834px) { .gemini-page .gemini-card-grid > * { grid-column: span 4/span 8; } } @media screen and (min-width: 1024px) { .gemini-page .gemini-card-grid > * { grid-column: span 4/span 12; } } .gemini-page .gemini-layout-small-card { align-items: flex-start; display: flex; padding: 24px; block-size: 100%; } @media screen and (min-width: 600px) { .gemini-page .gemini-layout-small-card { padding-block: 32px; padding-inline: 32px 40px; } } .gemini-page .gemini-layout-small-card.gemini-has-icon { gap: 24px; } @media screen and (min-width: 600px) { .gemini-page .gemini-layout-small-card.gemini-has-icon { gap: 32px; } } .gemini-page .gemini-layout-small-card.gemini-has-icon .gemini-icon { flex-shrink: 0; inline-size: 32px; line-height: 0; } .gemini-page a.gemini-reset-link { text-decoration: none; color: inherit; } .gemini-page .gemini-lottie-lines svg path { vector-effect: non-scaling-stroke; stroke-width: 1.5px !important; } /* ARROW LINK */ .gemini-arrow-link { color: var(--gemini-link-color, var(--gemini-color-white)); display: inline-flex; position: relative; text-decoration: none; text-underline-offset: 3px; justify-content: center; } .gemini-arrow-link .gemini-arrow { display: inline-block; inline-size: 16px; inset-block-start: calc(50% - 8px); inset-inline-start: calc(100% + 3px); line-height: 0; position: absolute; } .gemini-arrow-link:hover { text-decoration: underline; } /* Gemini Pill Button */ .gemini-page .gemini-btn { --gemini-_border: var(--gemini-button-border, var(--gemini-color-grey-600)); --gemini-_background: var(--gemini-button-fill, transparent); --gemini-_text: var(--gemini-button-text, inherit); border: 0; appearance: none; text-decoration: none; position: relative; cursor: pointer; color: var(--gemini-_text); background-color: var(--gemini-_background); user-select: none; display: inline-flex; justify-content: center; align-items: center; border-radius: 99em; padding: 15px 24px; leading-trim: both; height: auto; } .gemini-page .gemini-btn span { position: relative; z-index: 1; } .gemini-page .gemini-btn::before { position: absolute; content: ""; inset: 0; border-radius: inherit; will-change: opacity; transition-property: opacity; transition-duration: 0.25s; opacity: 0; } .gemini-page .gemini-btn:hover::before { opacity: 1; } .gemini-page .gemini-btn.gemini-disabled { pointer-events: none; opacity: 0.5; } .gemini-page .gemini-btn.gemini-has--icon > span { display: inline-flex; align-items: center; gap: var(--gemini-icon-gap, 12px); } /* Gemini Primary Button */ .gemini-page .gemini-btn.gemini-primary { --gemini-_text: var(--gemini-button-text, var(--gemini-color-white)); --gemini-_background: var(--gemini-button-fill, var(--gemini-color-gemini-blue)); } .gemini-page .gemini-btn.gemini-primary::before { background-color: var(--gemini-color-blue); box-shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15); } .gemini-page .gemini-btn.gemini-primary:hover::before { opacity: 1; } /* Gemini Secondary Button */ .gemini-page .gemini-btn.gemini-secondary { border: 1px solid var(--gemini-_border); transition: color 0.18s ease-in-out, background 0.2s ease-in-out; } .gemini-page .gemini-btn.gemini-secondary::before { background-color: var(--gemini-button-hover, rgba(255, 255, 255, 0.09)); } /* Gemini Tertiary Button */ .gemini-page .gemini-btn.gemini-tertiary { --gemini-_text: var(--gemini-button-text, var(--gemini-color-white)); padding-inline: 20px; padding-block: 10px; transition: transform 0.18s ease-in-out, background 0.2s ease-in-out, color 0.2s ease-in-out; border: 1px solid var(--gemini-_border); } .gemini-page .gemini-btn.gemini-tertiary:hover { background: var(--gemini-button-hover-background, var(--gemini-color-white)); color: var(--gemini-button-hover-text, var(--gemini-color-black)); } .gemini-page .gemini-btn.gemini-tertiary.gemini-has--icon { padding-inline: 18px 20px; } .gemini-page .gemini-btn.gemini-tertiary.gemini-has--icon > span { gap: 8px; } .gemini-page .gemini-btn.gemini-tertiary::before { background-color: var(--gemini-button-hover); } /* Gemini Gradient Button */ .gemini-page .gemini-btn.gemini-gradient { position: relative; --gemini-_background: var( --gemini-button-fill, var(--gemini-color-primary-button-gradient) ); background-image: var(--gemini-_background); transition: color 0.18s; } .gemini-page .gemini-btn.gemini-gradient::before { background: var(--gemini-button-hover-background, var(--gemini-color-white)); } .gemini-page .gemini-btn.gemini-gradient:hover { color: var(--gemini-button-hover-color, var(--gemini-color-blue, #368efe)); } .gemini-page .gemini-btn.gemini-gradient:hover::before { opacity: 1; } @media (min-width: 834px) { .gemini-page .gemini-btn { padding-block: 16px; } } /* CARD LIST */ .gemini-card-list { display: flex; flex-direction: column; row-gap: 12px; } @media screen and (min-width: 834px) { .gemini-card-list { row-gap: 16px; } } /* CARD GRID */ .gemini-cards-wrapper { display: grid; gap: 12px; grid-template-columns: repeat(1, 1fr); } @media screen and (min-width: 834px) { .gemini-cards-wrapper { gap: var(--gemini-size-grid-gap); } } @media screen and (min-width: 834px) { .gemini-cards-wrapper.gemini-row-of-two { grid-template-columns: repeat(2, 1fr); } } .gemini-cards-wrapper.gemini-row-of-two > * { grid-column: 1 span/auto; } /* GEMINI CARD GRID LIST */ .gemini-card-grid-list { --_gemini-colunm-amount: var(--gemini-grid-colunm-amount, 1); display: grid; gap: 12px; grid-template-columns: repeat(var(--_gemini-colunm-amount), 1fr); } @media screen and (min-width: 1024px) { .gemini-card-grid-list { --_gemini-colunm-amount: var(--gemini-grid-colunm-amount, 2); gap: var(--gemini-size-grid-gap); } .gemini-card-grid-list.gemini-row-of-three { --gemini-grid-colunm-amount: 3; } .gemini-card-grid > * { grid-column: 2 span/auto; } } /* GUIDE CARD LIST */ .gemini-card-guides { align-items: stretch; display: flex; flex-direction: column; gap: 12px; } .gemini-card-guides > * { flex-basis: 100%; inline-size: 100%; } @media screen and (min-width: 1024px) { .gemini-card-guides { flex-direction: row; flex-wrap: wrap; gap: var(--gemini-size-grid-gap); justify-content: center; } .gemini-card-guides > * { flex-basis: calc(33.3333333333% - var(--gemini-size-grid-gap) * 2); flex-grow: 1; min-width: 250px; } } /* BACKGROUND WRAPPER */ .gemini-background-wrapper { background-position: center; background-repeat: no-repeat; background-size: cover; border-radius: var(--gemini-border-radius-d32); display: block; inline-size: 100%; overflow: hidden; padding-block: var(--gemini-wrapper-padding-top, var(--gemini-space-d120)); padding-inline: 24px; position: relative; } @media (min-width: 1024px) { .gemini-background-wrapper { padding-inline: 0; } } .gemini-background-wrapper.gemini-background-dark { --gemini-section-copy-color: var(--gemini-color-grey-400); background-image: url("/images/system/wrapper-background-dark.jpg"); border: 1px solid var(--gemini-wrapper-border-color, var(--gemini-color-grey-700)); } .gemini-background-wrapper.gemini-background-dark .gemini-gradient-CTA_wrapper { background-image: none; background-color: var(--gemini-color-grey-800); } .gemini-background-wrapper.gemini-background-light-blue { --gemini-section-copy-color: var(--gemini-color-white); --gemini-section-title-color: var(--gemini-color-white); background-image: url("/images/system/wrapper-background-light-blue.jpg"); } .gemini-background-wrapper.gemini-background-green { --gemini-section-copy-color: var(--gemini-color-white); --gemini-section-copy-color: var(--gemini-color-grey-400); background-image: url("/images/system/wrapper-background-green.jpg"); border: 1px solid var(--gemini-wrapper-border-color, var(--gemini-color-green-800)); } .gemini-background-wrapper.gemini-background-dark-blue { --gemini-section-copy-color: var(--gemini-color-white); --gemini-section-copy-color: var(--gemini-color-grey-400); background-image: url("/images/system/wrapper-background-dark-blue.jpg"); border: 1px solid var(--gemini-wrapper-border-color, var(--gemini-color-blue-800)); } /* GEMINI TEXT LIST */ .gemini-text-list.gemini-layout-grid { row-gap: 0; } .gemini-text-list.gemini-has-animation .gemini-text-list-headline, .gemini-text-list.gemini-has-animation .gemini-text-list-item { opacity: 0; transform: translateY(20px); will-change: transform; transition-property: opacity, transform; transition-duration: 0.5s, 0.6s; transition-delay: calc(var(--gemini-text-animation-delay) * 0.12s + 0.3s); transition-timing-function: var(--gemini-ease-out-quad); } .gemini-text-list.gemini-has-animation.gemini-onscreen .gemini-text-list-headline, .gemini-text-list.gemini-has-animation.gemini-onscreen .gemini-text-list-item { opacity: 1; transform: translateY(0); } .gemini-text-list .gemini-text-list-headline, .gemini-text-list .gemini-text-list-wrapper { grid-column: 1/-1; } @media (min-width: 834px) { .gemini-text-list .gemini-text-list-headline, .gemini-text-list .gemini-text-list-wrapper { grid-column: 2/span 6; } } @media (min-width: 1024px) { .gemini-text-list .gemini-text-list-headline, .gemini-text-list .gemini-text-list-wrapper { grid-column: 3/span 8; } } .gemini-text-list .gemini-text-list-headline { text-align: center; } .gemini-text-list .gemini-text-list-item { display: grid; grid-template-columns: repeat(8, 1fr); padding-block: 16px 32px; border-top: 1px solid var(--gemini-color-grey-700); column-gap: var(--gemini-size-grid-gap); row-gap: 8px; } @media (min-width: 834px) { .gemini-text-list .gemini-text-list-item { padding-block: 24px 40px; } } .gemini-text-list .gemini-text-list-item .gemini-title-wrapper { grid-column: 1/-1; } @media (min-width: 834px) { .gemini-text-list .gemini-text-list-item .gemini-title-wrapper { grid-column: span 3/auto; } .gemini-text-list .gemini-text-list-item .gemini-title-wrapper > * { max-inline-size: 202px; } } .gemini-text-list .gemini-text-list-item .gemini-description-wrapper { grid-column: 1/-1; } .gemini-text-list .gemini-text-list-item .gemini-description-wrapper > * { max-inline-size: 450px; color: var(--gemini-color-grey-400); } @media (min-width: 834px) { .gemini-text-list .gemini-text-list-item .gemini-description-wrapper { grid-column: span 5/auto; } } /* GEMINI CARD GRID ITEM */ .gemini-card-grid-item .gemini-card-content { --_gemini-card-arrow-color: var(--gemini-card-arrow-color, var(--gemini-color-blue)); --_gemini-copy-color: var(--gemini-card-description-color, var(--gemini-color-grey-400)); align-items: flex-start; color: inherit; display: flex; flex-direction: column; gap: 16px; position: relative; text-decoration: none; } @media (min-width: 834px) { .gemini-card-grid-item .gemini-card-content { gap: 24px; } } .gemini-card-grid-item .gemini-card-content.gemini-card-layout-default { --_gemini-card-logo-size: 64px; flex-direction: column; padding: 24px; } .gemini-card-grid-item .gemini-card-content.gemini-card-layout-default .gemini-card-link-decorator { inset-block-start: 24px; inset-inline-end: 24px; } @media (min-width: 834px) { .gemini-card-grid-item .gemini-card-content.gemini-card-layout-default { --_gemini-card-logo-size: 126px; align-items: center; flex-direction: row; padding-block: 16px; padding-inline: 16px 32px; } .gemini-card-grid-item .gemini-card-content.gemini-card-layout-default .gemini-card-link-decorator { inset-block-start: 16px; inset-inline-end: 16px; } } .gemini-card-grid-item .gemini-card-content.gemini-card-layout-compact { --_gemini-card-logo-size: 44px; align-items: center; flex-direction: row; padding-block: 16px; padding-inline: 16px 24px; } @media (min-width: 834px) { .gemini-card-grid-item .gemini-card-content.gemini-card-layout-compact { --_gemini-card-logo-size: 86px; padding-inline-end: 32px; } } .gemini-card-grid-item .gemini-card-content.gemini-theme-light-blue { --gemini-card-description-color: var(--gemini-color-grey-100); --gemini-card-arrow-color: var(--gemini-color-white); } .gemini-card-grid-item .gemini-card-link-decorator { inset-block-start: 16px; inset-inline-end: 16px; position: absolute; color: var(--_gemini-card-arrow-color); } .gemini-card-grid-item figure { display: inline-block; flex-shrink: 0; inline-size: var(--_gemini-card-logo-size); line-height: 0; } .gemini-card-grid-item figure img { max-inline-size: 100%; } .gemini-card-grid-item .gemini-card-description { color: var(--_gemini-copy-color); } .gemini-value-card { text-align: center; } .gemini-value-card.gemini-with-background { background-image: url("/images/system/value-card-background-dark.jpg"); background-repeat: no-repeat; background-size: cover; background-position: center; border-radius: var(--gemini-border-radius-d24); overflow: hidden; padding-block: 40px; padding-inline: 24px; } @media (min-width: 834px) { .gemini-value-card.gemini-with-background { padding-inline: 40px; padding-block: 64px; } .gemini-value-card.gemini-with-background.gemini-with-icon { padding-block: 48px 64px; } } .gemini-value-card.gemini-with-background .gemini-card-icon { inline-size: 40px; margin-inline: auto; } @media (min-width: 834px) { .gemini-value-card.gemini-with-background .gemini-card-icon { inline-size: 48px; } } .gemini-value-card .gemini-card-description { color: var(--gemini-color-grey-400); } .gemini-feature-card { --_gemini-icon-size: 44px; } @media screen and (min-width: 834px) { .gemini-feature-card { --_gemini-icon-size: 64px; } } .gemini-feature-card .gemini-card-icon { inline-size: var(--gemini-card-icon-size, var(--_gemini-icon-size)); margin-inline: auto; } /* GUIDE CARD CENTERED ITEM */ .gemini-card-centered { --gemini-button-border: var(--gemini-color-grey-700); align-items: center; color: var(--gemini-color-white); display: flex; flex-direction: column; overflow: hidden; padding: 24px; text-align: center; text-decoration: none; } @media (min-width: 834px) { .gemini-card-centered { padding: 32px 24px; block-size: 100%; } } .gemini-card-centered.gemini-theme-light-blue { --gemini-card-description-color: var(--gemini-color-grey-100); --gemini-card-arrow-color: var(--gemini-color-white); --gemini-button-border: rgba(246, 248, 250, 0.5); } .gemini-card-centered .gemini-card-icon { align-items: center; block-size: 40px; inline-size: 40px; line-height: 0; } @media screen and (min-width: 834px) { .gemini-card-centered .gemini-card-icon { block-size: 56px; inline-size: 56px; } } .gemini-card-centered .gemini-card-title { color: var(--gemini-color-white); padding-inline: 26px; } .gemini-card-centered .gemini-card-content { color: var(--gemini-card-description-color, var(--gemini-color-grey-400)); } .gemini-card-centered .gemini-btn { --gemini-button-fill: transparent; --gemini-button-text: var(--gemini-color-white); margin-top: auto; } .gemini-card-centered:hover .gemini-btn { background: var(--gemini-color-white); color: var(--gemini-color-grey-900); } /** Gemini Section: CTA */ .gemini-section-cta { --gemini-_subtitle-color: var( --gemini-section-subtitle-color, var(--gemini-color-grey-500) ); --gemini-_text-alignment: var(--gemini-section-text-alignment, center); --gemini-_section-margin: var(--gemini-section-margin, 0 auto); --gemini-_title-color: var(--gemini-section-title-color, var(--gemini-color-grey-100)); --devsite-heading-color: var(--gemini-_title-color); --gemini-_copy-color: var(--gemini-section-copy-color, var(--gemini-color-grey-400)); --gemini-animation-ease: var(--gemini-ease-out-quad); --gemini-animation-duration: 0.5s; --gemini-animation-stagger: 0.16s; --gemini-animation-delay: 0s; --gemini-_title-order: calc(var(--gemini-animation-title-order, 2) - 1); --gemini-_copy-order: calc(var(--gemini-animation-copy-order, 3) - 1); --gemini-_buttons-order: calc(var(--gemini-animation-buttons-order, 4) - 1); --gemini-_heading-max-width: var(--gemini-heading-max-width, 630px); --gemini-_copy-max-width: var(--gemini-copy-max-width, 630px); } .gemini-section-cta .gemini-cta { text-align: var(--gemini-_text-alignment); } .gemini-section { outline: none; } .gemini-section-cta .gemini-section { margin: var(--gemini-_section-margin); } .gemini-section-cta .gemini-section__subtitle { color: var(--gemini-_subtitle-color); clip-path: fill-box; } .gemini-section-cta .gemini-section__subtitle > * { display: block; transform: translateY(100px); opacity: 0; transition: transform var(--gemini-animation-duration) calc(var(--gemini-animation-stagger) + var(--gemini-animation-delay)) var(--gemini-animation-ease), opacity 0.1s linear; } .gemini-section-cta .gemini-onscreen .gemini-section__subtitle > * { transform: translateY(0%); opacity: 1; } .gemini-section-cta .gemini-section__title { color: var(--gemini-_title-color); clip-path: fill-box; max-inline-size: var(--gemini-_heading-max-width); } .gemini-section-cta .gemini-section__title > * { display: block; transform: translateY(100%); transition: transform var(--gemini-animation-duration) calc(var(--gemini-animation-stagger) * var(--gemini-_title-order) + var(--gemini-animation-delay)) var(--gemini-animation-ease); padding-block-end: 0.04em; } .gemini-section-cta .gemini-section__title h1:first-of-type { display: block; } .gemini-section-cta .gemini-onscreen .gemini-section__title > * { transform: translateY(0%); } .gemini-section-cta .gemini-section__copy { color: var(--gemini-_copy-color); max-inline-size: var(--gemini-_copy-max-width); transform: translateY(60px); opacity: 0; transition: transform var(--gemini-animation-duration) calc(var(--gemini-animation-stagger) * var(--gemini-_copy-order) + var(--gemini-animation-delay)) var(--gemini-animation-ease), opacity 0.05s calc(var(--gemini-animation-stagger) * var(--gemini-_copy-order) + var(--gemini-animation-delay)) linear; } .gemini-section-cta .gemini-onscreen .gemini-section__copy { transform: translateY(0%); opacity: 1; } .gemini-section-cta .gemini-section__buttons { display: flex; gap: 12px; align-items: center; flex-direction: column; transform: translateY(60px); opacity: 0; transition: transform 0.5s calc(var(--gemini-animation-stagger) * var(--gemini-_buttons-order)) var(--gemini-animation-ease), opacity 0.15s calc(var(--gemini-animation-stagger) * var(--gemini-_buttons-order)) linear; } .gemini-section-cta .gemini-onscreen .gemini-section__buttons { transform: translateY(0%); opacity: 1; } @media (min-width: 768px) { .gemini-section-cta .gemini-section__buttons { justify-content: center; flex-direction: row; } } /** Gemini: Animated Rings */ .gemini-animated-rings-element { --gemini-_large-ring-size: min( max( var(--gemini-large-ring-size, 87.5vw), var(--gemini-large-ring-min-size, 872px) ), var(--gemini-large-ring-max-size, 1260px) ); --gemini-_small-ring-size: min( max( var(--gemini-small-ring-size, 77.5vw), var(--gemini-small-ring-min-size, 770px) ), var(--gemini-small-ring-max-size, 1116px) ); --gemini-_small-ring-animation-duration: var(--gemini-small-ring-animation-duration, 16s); --gemini-_large-ring-animation-duration: var(--gemini-large-ring-animation-duration, 10s); } .gemini-animated-rings-element { display: block; block-size: 10px; inline-size: 10px; pointer-events: none; position: absolute; inset-block-start: calc(50% - 1px); inset-inline-start: calc(50% - 1px); } .gemini-animated-rings-element .gemini-small-ring { display: block; inline-size: var(--gemini-_small-ring-size); block-size: var(--gemini-_small-ring-size); position: absolute; inset-inline-start: calc(var(--gemini-_small-ring-size) * -0.5); inset-block-start: calc(var(--gemini-_small-ring-size) * -0.5); transform: scale(0); transition: transform 1.6s 0.1s var(--gemini-ease-out-quart); } .gemini-animated-rings-element .gemini-small-ring > * { display: block; animation: gemini-animated-rings-spin var(--gemini-_small-ring-animation-duration) linear infinite; } .gemini-animated-rings-element .gemini-large-ring { inline-size: var(--gemini-_large-ring-size); block-size: var(--gemini-_large-ring-size); position: absolute; inset-inline-start: calc(var(--gemini-_large-ring-size) * -0.5); inset-block-start: calc(var(--gemini-_large-ring-size) * -0.5); transform: scale(0); transition: transform 1.6s var(--gemini-ease-out-quart); } .gemini-animated-rings-element .gemini-large-ring > * { display: block; animation: gemini-animated-rings-spin var(--gemini-_large-ring-animation-duration) linear infinite reverse; } .gemini-animated-rings-element .gemini-onscreen .gemini-small-ring, .gemini-animated-rings-element .gemini-onscreen .gemini-large-ring { transform: scale(1); } @keyframes gemini-animated-rings-spin { 0% { transform: rotateZ(0deg); } 100% { transform: rotateZ(360deg); } } .gemini-section-ring-container { --_gemini-rings-offset-y: var(--gemini-rings-section-offset-y, -50%); block-size: 100vw; inline-size: 100vw; left: 50%; max-height: 1300px; max-width: 1300px; min-height: 872px; overflow: hidden; position: absolute; top: 50%; transform: translate(-50%, var(--_gemini-rings-offset-y)); z-index: 0; display: none; } @media (min-width: 600px) { .gemini-section-ring-container { display: block; } } @media (min-width: 834px) { .gemini-section-ring-container { inline-size: calc(100vw - 20px); block-size: calc(100vw - 20px); } } .gemini-section-ring-container .gemini-rings { position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; } /* RING GRADIENT COVER */ .gemini-has-ring { position: relative; z-index: 4; } .gemini-gradient-cover--top, .gemini-gradient-cover--bottom { position: relative; z-index: 7; background: var(--gemini-color-background); } .gemini-gradient-cover--top *, .gemini-gradient-cover--bottom * { position: relative; z-index: 7; } .gemini-gradient-cover--top:before, .gemini-gradient-cover--bottom:after { content: ""; position: absolute; inset-inline-start: 50%; block-size: var(--gemini-gradient-height, 300px); inline-size: 97vw; max-inline-size: 1440px; pointer-events: none; z-index: 1; display: none; } @media (min-width: 600px) { .gemini-gradient-cover--top:before, .gemini-gradient-cover--bottom:after { display: block; } } @media (min-width: 834px) { .gemini-gradient-cover--top:before, .gemini-gradient-cover--bottom:after { block-size: var(--gemini-gradient-height, 450px); } } .gemini-gradient-cover--top:before { inset-block-start: 0; transform: translate(-50%, var(--gemini-gradient-y, -60%)); background: linear-gradient(0, #060606 50%, rgba(6, 6, 6, 0) 100%); /*#060606*/ } .gemini-gradient-cover--bottom:after { inset-block-end: 0; transform: translate(-50%, var(--gemini-gradient-y, 50%)); background: linear-gradient(180deg, #060606 50%, rgba(6, 6, 6, 0) 100%); /*#060606*/ } /** Gradient Box */ .gemini-gradient-box { --_gemini-box-radius: var(--gemini-gradient-box-radius, 16px); --_gemini-border-width: var(--gemini-gradient-box-border-width, 2px); --_box-border-color: var(--gradient-box-border-color, linear-gradient( 93deg, #076eff 0%, #0c0c0d 33%, #076eff 68.5%, #0c0c0d 98.75% )); background: var(--_box-border-color); border-radius: var(--_gemini-box-radius); bottom: 0; content: ""; display: block; left: 0; margin: 0; position: relative; right: 0; top: 0; transition: background 0.3s ease; } @media (min-width: 834px) { .gemini-gradient-box { --_gemini-box-radius: var(--gemini-gradient-box-radius, 32px); } } .gemini-gradient-box_wrapper { background-clip: padding-box; background-color: #060606; background-image: var(--_gemini-gradient-background); background-position: center center; background-repeat: no-repeat; background-size: 110% 110%; border-radius: var(--_gemini-box-radius); border: solid var(--_gemini-border-width) transparent; box-sizing: border-box; height: 100%; margin: 0; padding: 2px; position: relative; transform: translate3d(0, 0, 0); width: 100%; } .gemini-gradient-box__inner { border-radius: var(--_gemini-box-radius); height: 100%; width: 100%; } .gemini-gradient-box--custom { --_box-border-color: var(--gradient-box-border-color); --_gemini-gradient-background: var(--gemini-box-gradient-background); } .gemini-gradient-box--blue { --_gemini-gradient-background: var( --gemini-box-gradient-background, url("/images/gradient-box-blue.jpg") ); --_box-border-color: var(--gradient-box-border-color, linear-gradient(320deg, #2E64DE -17.73%, #3C8FE3 50.43%)); --gemini-text-gradient: linear-gradient(61deg, #64B8FB 6.28%, #217BFE 76.97%); } .gemini-gradient-box--pink { --_gemini-gradient-background: var( --gemini-box-gradient-background, url("/images/gradient-box-pink.jpg") ); --_box-border-color: var(--gradient-box-border-color, linear-gradient(313deg, #987BE9 -24.05%, #BE6EAE 92.91%)); --gemini-text-gradient: linear-gradient(90deg, #A485FA -104.88%, #EE4D5D 198.78%); } .gemini-gradient-box--w1 { --_gemini-border-width: 1px; } .gemini-gradient-box--grey { --_gemini-gradient-background: var( --gemini-box-gradient-background, url("/images/gradient-box-grey.png") ); --_box-border-color: var(--gradient-box-border-color, linear-gradient(299deg, #B1C5FF 10.12%, #D2DEFF 82.36%)); --gemini-text-gradient: var(--gemini-text-gradient-light-blue); } /* Gradient CTA */ .gemini-gradient-CTA { --_gemini-box-radius: var(--gemini-gradient-CTA-radius, 16px); --_box-border-color: none; --_gemini-border-width: 1px; background: var(--gemini-gradient-CTA-idle-border-color, linear-gradient(140deg, #151515 0.72%, #060606 100%)); border-radius: var(--_gemini-box-radius); bottom: 0; content: ""; display: block; left: 0; margin: 0; position: relative; right: 0; top: 0; } .gemini-gradient-CTA.gemini-with-hover { cursor: pointer; transition: background 0.3s ease; } @media (min-width: 834px) { .gemini-gradient-CTA { --_gemini-box-radius: var(--gemini-gradient-CTA-radius, 24px); --_gemini-border-width: 1px; } } @media (hover: hover) { .gemini-gradient-CTA.gemini-with-hover:hover .gemini-gradient-CTA_wrapper { border: var(--_gemini-border-width) solid transparent; transition: border 0.3s ease-out, background 0.3s ease-out; } .gemini-gradient-CTA.gemini-with-hover:hover::before { opacity: 0.9; transition: opacity 0.3s ease-out; } } .gemini-gradient-CTA::before { background: var(--_box-border-color); border-radius: var(--_gemini-box-radius); content: ""; height: 100%; opacity: 0; position: absolute; top: 0; transition: opacity 0.3s ease-out; width: 100%; } .gemini-gradient-CTA .gemini-gradient-CTA_wrapper::after { content: ""; position: absolute; block-size: 100%; inline-size: 100%; inset-block-start: 0; inset-inline-start: 0; border-radius: var(--_gemini-box-radius); transition: opacity 0.3s ease-out; z-index: 1; opacity: 0; background-image: var(--_gemini-gradient-hover-background); background-repeat: no-repeat; background-size: 110% 110%; background-position: center center; } .gemini-gradient-CTA_wrapper { --_gemini-gradient-background: var(--gemini-gradient-background, none); --_gemini-gradient-hover-background: var(--gemini-gradient-hover-background, none); transform: translate3d(0, 0, 0); margin: 0; width: 100%; height: 100%; position: relative; box-sizing: border-box; background-clip: padding-box; border: var(--_gemini-border-width) solid var(--gemini-gradient-CTA-idle-border-color, var(--gemini-color-grey-700, #202228)); border-radius: var(--_gemini-box-radius); transition: border 0.3s ease-out, background, 0.4s; background-image: var(--_gemini-gradient-background); background-repeat: no-repeat; background-size: 110% 110%; background-position: center center; } .gemini-gradient-CTA__inner { width: 100%; height: 100%; border-radius: calc(var(--_gemini-box-radius) - 2px); background: linear-gradient(121deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0) 101.29%); position: relative; z-index: 5; } .gemini-gradient-CTA--blue { --gemini-gradient-background: url("/images/system/card-list-item-background-dark.jpg"); --gemini-gradient-hover-background: url("/images/system/card-list-item-hover-dark.jpg"); --_box-border-color: var(--gradient-CTA-border-color, var(--gemini-color-blue-gradient)); } .gemini-gradient-CTA--blue.gemini-with-hover:hover .gemini-gradient-CTA_wrapper:after { opacity: 1; } .gemini-gradient-CTA--blue .gemini-gradient-CTA__inner { background: none; } .gemini-gradient-CTA--light-blue { --_box-border-color: transparent; background: linear-gradient(180deg, rgba(255, 255, 255, 0.13) 0%, rgba(255, 255, 255, 0.08) 100%); --gemini-gradient-CTA-idle-border-color: #7aa3ff; } .gemini-gradient-CTA--light-blue::before { border: var(--_gemini-border-width) solid var(--gemini-color-white); } /** Gemini: Partner Container */ .gemini-partner-container-element { display: block; } .gemini-partner-container-element section { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; } /** Gemini: Partner Item */ .gemini-partner-item .gemini-item { --gemini-_size: var(--gemini-partner-item-size, 160px); --gemini-border-width: 1; --gemini-border-radius: 8; --gemini-hover-alpha: 0.2; block-size: var(--gemini-_size); inline-size: var(--gemini-_size); text-decoration: none; user-select: none; position: relative; border-radius: calc(var(--gemini-border-radius) * 1px); display: grid; place-items: center; white-space: nowrap; } @media (min-width: 834px) { .gemini-partner-item .gemini-item { --gemini-_size: var(--gemini-partner-item-size, 170px); } } .gemini-partner-item .gemini-item::before { content: ""; position: absolute; inset: 0; border: calc(var(--gemini-border-width) * 1px) solid transparent; border-radius: calc(var(--gemini-border-radius) * 1px); -webkit-mask-image: linear-gradient(hsla(0, 0%, 100%, 0), hsla(0, 0%, 100%, 0)), linear-gradient(hsl(0, 0%, 100%), hsl(0, 0%, 100%)); -webkit-mask-clip: padding-box, border-box; -webkit-mask-composite: source-in, xor; mask-image: linear-gradient(hsla(0, 0%, 100%, 0), hsla(0, 0%, 100%, 0)), linear-gradient(hsl(0, 0%, 100%), hsl(0, 0%, 100%)); mask-clip: padding-box, border-box; mask-composite: intersect; z-index: 2; } .gemini-partner-item .gemini-item::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgb(255 255 255/var(--gemini-hover-alpha)), transparent); border: calc(var(--gemini-border-width) * 1px) solid transparent; border-radius: calc(var(--gemini-border-radius) * 1px); z-index: 1; opacity: 0; transition: opacity 0.35s ease-in-out; } .gemini-partner-item .gemini-item:hover .gemini-spark, .gemini-partner-item .gemini-item:focus-visible .gemini-spark { opacity: 1; } .gemini-partner-item .gemini-item:hover .gemini-spark::before, .gemini-partner-item .gemini-item:focus-visible .gemini-spark::before { opacity: 1; animation: gemini-item-spin 0.82s linear forwards; } .gemini-partner-item .gemini-item:hover::after, .gemini-partner-item .gemini-item:focus-visible::after { opacity: 1; } .gemini-partner-item .gemini-item.gemini-link { cursor: pointer; } .gemini-partner-item .gemini-item.gemini-link:after { background: linear-gradient(127deg, #1C213A 2.9%, #060606 100%); } .gemini-partner-item .gemini-item.gemini-link .gemini-label .gemini-text, .gemini-partner-item .gemini-item.gemini-link .gemini-label .gemini-arrow { transition-property: transform, opacity; transition-duration: 0.15s; will-change: transform, opacity; } .gemini-partner-item .gemini-item.gemini-link .gemini-label .gemini-text { /*transform: translateX(calc(var(--gemini-offset) * -1));*/ } .gemini-partner-item .gemini-item.gemini-link .gemini-label .gemini-arrow { display: block; /*opacity: 0;*/ /*transform: translateX(calc(var(--gemini-offset) * -1));*/ } .gemini-partner-item .gemini-item.gemini-link:hover .gemini-label .gemini-text, .gemini-partner-item .gemini-item.gemini-link:hover .gemini-label .gemini-text, .gemini-partner-item .gemini-item.gemini-link:focus-visible .gemini-label .gemini-text { /*transform: translateX(0);*/ } .gemini-partner-item .gemini-item.gemini-link:hover .gemini-label .gemini-arrow, .gemini-partner-item .gemini-item.gemini-link:focus-visible .gemini-label .gemini-arrow { /*opacity: 1;*/ /*transition-delay: 0.05s;*/ transform: translateX(0); } .gemini-partner-item .gemini-item.gemini-dark { --gemini-glow: rgb(255 255 255 / 0.4); --gemini-hover-alpha: 0.1; background: linear-gradient(135deg, #10121B 0%, #060606 100%); } .gemini-partner-item .gemini-item.gemini-dark::before { background: var(--gemini-color-grey-700); } .gemini-partner-item .gemini-item.gemini-dark .gemini-label { color: var(--gemini-color-grey-100); } .gemini-partner-item .gemini-item.gemini-light { --gemini-glow: rgb(255 255 255 / 0.6); --gemini-hover-alpha: 0.2; background: linear-gradient(113deg, rgba(255, 255, 255, 0.27) -7.22%, rgba(255, 255, 255, 0) 99.63%); } .gemini-partner-item .gemini-item.gemini-light::before { background: rgba(255, 255, 255, 0.1); } .gemini-partner-item .gemini-item.gemini-light .gemini-label { color: var(--gemini-color-white); } .gemini-partner-item .gemini-sparks { container-type: size; position: absolute; inset: 0; pointer-events: none; z-index: 2; mask-image: linear-gradient(transparent, transparent), linear-gradient(white, white); mask-clip: padding-box, border-box; mask-composite: intersect; -webkit-mask-image: linear-gradient(transparent, transparent), linear-gradient(white, white); -webkit-mask-clip: padding-box, border-box; -webkit-mask-composite: source-in, xor; border: calc(var(--gemini-border-width) * 1px) solid transparent; border-radius: calc(var(--gemini-border-radius) * 1px); } .gemini-partner-item .gemini-sparks .gemini-spark { position: absolute; inset: 0; overflow: visible; opacity: 0; transition: opacity 0.15s ease-in-out; } .gemini-partner-item .gemini-sparks .gemini-spark::before { --gemini-spread: 110; --gemini-glow-spread: calc(var(--gemini-spread) * 1deg); content: ""; position: absolute; inset: -100%; background: conic-gradient(from calc(270deg - var(--gemini-glow-spread) * 0.5), var(--gemini-glow) 0, var(--gemini-glow) var(--gemini-glow-spread), transparent var(--gemini-glow-spread)); background-repeat: no-repeat; border-radius: calc(var(--gemini-border-radius) * 1px); opacity: 0; transition: opacity 0.2s ease-in-out; } .gemini-partner-item .gemini-content { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: var(--gemini-space-8); block-size: 100%; inline-size: 100%; z-index: 2; } @media (min-width: 834px) { .gemini-partner-item .content { gap: var(--gemini-space-16); } } .gemini-partner-item .gemini-content img { aspect-ratio: 106/74; inline-size: 100%; max-inline-size: 63%; transition-property: transform; transition-duration: 0.15s; transition-timing-function: ease-in-out; } .gemini-partner-item .gemini-content .gemini-label { --gemini-offset: 0.6em; flex-shrink: 0; flex-direction: column; justify-content: flex-end; text-align: center; display: flex; flex-direction: row; justify-content: center; align-items: center; gap: var(--gemini-offset); } .gemini-partner-item .gemini-content .gemini-label .gemini-arrow { display: none; } @keyframes gemini-item-spin { 0% { rotate: 0deg; opacity: 0; } 50% { opacity: 1; } 100% { opacity: 0; rotate: 560deg; } } /* Gemini: Spark box */ .gemini-spark-box .gemini-spark-box-item { --gemini-_size: var(--gemini-spark-box-item-size, 106px); --gemini-_block-size: var(--gemini-spark-box-item-block-size, var(--gemini-_size)); --gemini-_inline-size: var(--gemini-spark-box-item-inline-size, var(--gemini-_size)); --gemini-border-width: 1; --gemini-border-radius: 8; --gemini-hover-alpha: 0.2; block-size: var(--gemini-_block-size); inline-size: var(--gemini-_inline-size); text-decoration: none; user-select: none; position: relative; border-radius: calc(var(--gemini-border-radius) * 1px); overflow: hidden; } @media (min-width: 834px) { .gemini-spark-box .gemini-spark-box-item { --gemini-_size: var(--gemini-spark-box-item-size, 170px); } } .gemini-spark-box .gemini-spark-box-item::before { content: ""; position: absolute; inset: 0; border: calc(var(--gemini-border-width) * 1px) solid transparent; border-radius: calc(var(--gemini-border-radius) * 1px); -webkit-mask-image: linear-gradient(hsla(0, 0%, 100%, 0), hsla(0, 0%, 100%, 0)), linear-gradient(hsl(0, 0%, 100%), hsl(0, 0%, 100%)); -webkit-mask-clip: padding-box, border-box; -webkit-mask-composite: source-in, xor; mask-image: linear-gradient(hsla(0, 0%, 100%, 0), hsla(0, 0%, 100%, 0)), linear-gradient(hsl(0, 0%, 100%), hsl(0, 0%, 100%)); mask-clip: padding-box, border-box; mask-composite: intersect; z-index: 2; } .gemini-spark-box .gemini-spark-box-item::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgb(255 255 255/var(--gemini-hover-alpha)), transparent); border: calc(var(--gemini-border-width) * 1px) solid transparent; border-radius: calc(var(--gemini-border-radius) * 1px); z-index: 1; opacity: 0; transition: opacity 0.35s ease-in-out; } .gemini-spark-box .gemini-spark-box-item:hover .gemini-spark, .gemini-spark-box .gemini-spark-box-item:focus-visible .gemini-spark { opacity: 1; } .gemini-spark-box .gemini-spark-box-item:hover .gemini-spark::before, .gemini-spark-box .gemini-spark-box-item:focus-visible .gemini-spark::before { opacity: 1; animation: gemini-spark-box-spin 0.82s linear forwards; } .gemini-spark-box .gemini-spark-box-item:hover::after, .gemini-spark-box .gemini-spark-box-item:focus-visible::after { opacity: 1; } .gemini-spark-box .gemini-spark-box-item.gemini-dark { --gemini-glow: rgb(255 255 255 / 0.4); --gemini-hover-alpha: 0.1; background: linear-gradient(121deg, rgba(255, 255, 255, 0.07) -12.02%, rgba(255, 255, 255, 0.01) 87.55%); } .gemini-spark-box .gemini-spark-box-item.gemini-dark::before { background: var(--gemini-color-grey-700); } .gemini-spark-box-item .gemini-sparks { container-type: size; position: absolute; inset: 0; pointer-events: none; z-index: 2; mask-image: linear-gradient(transparent, transparent), linear-gradient(white, white); mask-clip: padding-box, border-box; mask-composite: intersect; -webkit-mask-image: linear-gradient(transparent, transparent), linear-gradient(white, white); -webkit-mask-clip: padding-box, border-box; -webkit-mask-composite: source-in, xor; border: calc(var(--gemini-border-width) * 1px) solid transparent; border-radius: calc(var(--gemini-border-radius) * 1px); } .gemini-spark-box-item .gemini-sparks .gemini-spark { position: absolute; inset: 0; overflow: visible; opacity: 0; transition: opacity 0.15s ease-in-out; } .gemini-spark-box-item .gemini-sparks .gemini-spark::before { --gemini-spread: 110; --gemini-glow-spread: calc(var(--gemini-spread) * 1deg); content: ""; position: absolute; inset: -100%; background: conic-gradient(from calc(270deg - var(--gemini-glow-spread) * 0.5), var(--gemini-glow) 0, var(--gemini-glow) var(--gemini-glow-spread), transparent var(--gemini-glow-spread)); background-repeat: no-repeat; border-radius: calc(var(--gemini-border-radius) * 1px); opacity: 0; transition: opacity 0.2s ease-in-out; } .gemini-spark-box-item .gemini-content { block-size: 100%; inline-size: 100%; z-index: 2; } @media (min-width: 834px) { .gemini-spark-box .gemini-spark-box-item .content { gap: var(--gemini-space-16); } } @keyframes gemini-spark-box-spin { 0% { rotate: 0deg; opacity: 0; } 50% { opacity: 1; } 100% { opacity: 0; rotate: 560deg; } } /* Sticky Nav */ .gemini-sticky-nav:not(.gemini-no-sticky) { --gemini-nav-bottom-padding: 20px; --gemini-nav-height: 36px; --_gemini-nav-background: var(--gemini-color-grey-700); --_gemini-nav-item-color: var(--gemini-color-grey-400); --_gemini-nav-item-active: var(--gemini-color-grey-600); --_gemini-nav-item-color-hover: var(--gemini-color-white); position: sticky; top: calc(100vh - var(--gemini-nav-height) - var(--gemini-nav-bottom-padding)); padding-bottom: var(--gemini-nav-bottom-padding); left: 0; justify-content: flex-start; z-index: 11; display: none; height: 0; opacity: 0; visibility: hidden; transition: opacity 0.6s 0.3s, visibility 0.6s 0.3s; } @media (min-width: 1024px) { .gemini-sticky-nav:not(.gemini-no-sticky) { display: flex; justify-content: center; --gemini-nav-height: 48px; --gemini-nav-bottom-padding: 32px; } } .gemini-sticky-nav:not(.gemini-no-sticky).gemini-onscreen { opacity: 1; visibility: visible; } .gemini-sticky-nav:not(.gemini-no-sticky) .gemini-nav { display: flex; background-color: var(--gemini-nav-background, var(--_gemini-nav-background)); padding: 6px; border-radius: 56px; max-width: 335px; position: absolute; inset-block-end: 0; inset-inline-start: 0; block-size: var(--gemini-nav-height); } @media (min-width: 834px) { .gemini-sticky-nav:not(.gemini-no-sticky) .gemini-nav { max-width: 100%; position: relative; } } .gemini-sticky-nav:not(.gemini-no-sticky) .gemini-nav__item { padding-inline: 24px; flex-shrink: 0; border-radius: 56px; transition: background-color 0.3s var(--gemini-ease-out-cubic); } .gemini-sticky-nav:not(.gemini-no-sticky) .gemini-nav__item a { text-decoration: none; color: var(--gemini-nav-item-color, var(--_gemini-nav-item-color)); display: inline-flex; align-items: center; justify-content: center; min-height: 36px; transition: color 0.2s var(--gemini-ease-out-cubic); } .gemini-sticky-nav:not(.gemini-no-sticky) .gemini-nav__item a:hover { color: var(--gemini-nav-item-color-hover, var(--_gemini-nav-item-color-hover)); } .gemini-sticky-nav:not(.gemini-no-sticky) .gemini-nav__item.gemini-link--active { background: var(--gemini-nav-item-active-background, var(--_gemini-nav-item-active)); } .gemini-sticky-nav:not(.gemini-no-sticky) .gemini-nav__item.gemini-link--active a { color: var(--gemini-color-white); } .gemini-sticky-nav:not(.gemini-no-sticky).gemini-light-theme { --_gemini-nav-background: var(--gemini-color-white); --_gemini-nav-item-active: linear-gradient(61deg, #64b8fb 6.28%, #217bfe 76.97%); --_gemini-nav-item-color: var(--gemini-color-grey-600); --_gemini-nav-item-color-hover: var(--gemini-color-grey-900); } /** Gemini Section: Details */ .gemini-section-details-element { --gemini-animation-buttons-order: 3; display: block; position: relative; z-index: 4; } .gemini-section-details-element .gemini-section--details { position: relative; } .gemini-section-details-element .gemini-details__header { display: grid; place-items: center; position: relative; } .gemini-section-details-element .gemini-header__inner { --gemini-copy-max-width: 730px; --gemini-heading-max-width: 320px; } @media (min-width: 834px) { .gemini-section-details-element .gemini-header__inner { --gemini-heading-max-width: 550px; } } .gemini-section-details-element .gemini-details__body { text-align: center; position: relative; z-index: 5; } .gemini-section-details-element .gemini-details { grid-column: 1/-1; } @media (min-width: 1024px) { .gemini-section-details-element .gemini-details { grid-column: 2/span 10; } } .gemini-details-rings-container { --gemini-rings-section-offset-y: -28%; } @media (min-width: 600px) { .gemini-details-rings-container { display: block; } } /** Gemini: Module Code */ .gemini-module-code-element { display: block; } .gemini-module-code-element .gemini-module--code { width: 100%; --space: var(--gemini-space-d40); } .gemini-module-code-element .gemini-code__wrapper { transform: scale(1.2); transition: 0.8s var(--gemini-ease-out-quad); } .gemini-module-code-element .gemini-onscreen .gemini-code__wrapper { transform: scale(1); } /** Gemini: Code Preview */ .gemini-code-preview-element article { display: flex; flex-direction: column; gap: var(--gemini-space-40); } @media (min-width: 834px) { .gemini-code-preview-element article { gap: var(--gemini-space-48); } } .gemini-code-preview-element .gemini-window { --gemini-padding-inline: 24px; --gemini-padding-block: 24px; --gemini-border-radius: 16px; --gemini-line-height: 180%; --gemini-gap: 20px; } @media (min-width: 834px) { .gemini-code-preview-element .gemini-window { --gemini-padding-inline: 48px; --gemini-padding-block: 40px; --gemini-border-radius: 24px; --gemini-gap: 40px; } } .gemini-code-preview-element .gemini-tabs { background-color: var(--gemini-color-grey-800); border-radius: var(--gemini-border-radius) var(--gemini-border-radius) 0 0; user-select: none; overflow-x: auto; display: flex; justify-content: space-between; align-items: center; } .gemini-code-preview-element .gemini-tabs__links { display: flex; gap: var(--gemini-gap); padding-inline: var(--gemini-padding-inline); overflow-y: hidden; } .gemini-code-preview-element .gemini-tabs__links button { position: relative !important; all: unset; cursor: pointer; display: grid; padding-block: 16px; white-space: nowrap; } .gemini-code-preview-element .gemini-tabs__links button:focus-visible { outline: 1px solid var(--gemini-color-blue); } .gemini-code-preview-element .gemini-tabs__links button span:nth-child(1) { color: var(--gemini-color-grey-500); } .gemini-code-preview-element .gemini-tabs__links button span:nth-child(2) { background: var(--gemini-color-blue-gradient); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; opacity: 0; transition: opacity 0.2s var(--gemini-ease-in-out); } .gemini-code-preview-element .gemini-tabs__links button:hover span:nth-child(2) { opacity: 1; } .gemini-code-preview-element .gemini-tabs__links button::before { content: ""; display: block; position: absolute; inset-block-end: 0; inset-inline-start: -8px; block-size: 3px; inline-size: calc(100% + 16px); border-radius: 3px 3px 0 0; background: var(--gemini-color-blue-gradient); transition-property: opacity, transform; transition-duration: 0.25s; transition-timing-function: ease-in-out; opacity: 0; transform: translateY(100%); } .gemini-code-preview-element .gemini-tabs__links button.gemini-active::before { opacity: 1; transform: translateY(0); } .gemini-code-preview-element .gemini-tabs__links button.gemini-active span:nth-child(2) { opacity: 1; } .gemini-code-preview-element .gemini-editor { display: grid; grid-template-columns: auto 1fr; background-color: var(--gemini-color-grey-600); border-radius: 0 0 var(--gemini-border-radius) var(--gemini-border-radius); padding-inline: 0 24px; padding-block: var(--gemini-padding-block); font-family: var(--gemini-font-secondary); text-align: start; overflow-x: auto; } .gemini-code-preview-element .gemini-editor__numbers { line-height: var(--gemini-line-height); color: var(--gemini-color-grey-500); user-select: none; } .gemini-code-preview-element pre.gemini-editor__code { background-color: var(--gemini-color-grey-600); tab-size: 1em; margin-inline-start: 0; line-height: var(--gemini-line-height); color: var(--gemini-color-grey-100); } @media (min-width: 1024px) { .gemini-code-preview-element pre.gemini-editor__code { margin-inline-start: 0; } } .gemini-code-preview-element .gemini-highlight { color: var(--gemini-color-blue); } .gemini-code-preview-element .gemini-details-cta { display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 12px; } @media (min-width: 738px) { .gemini-code-preview-element .gemini-details-cta { flex-direction: row; } } /* CARD ARROW */ .gemini-card-arrow { display: grid; align-items: stretch; } .gemini-card-arrow .gemini-gradient-CTA__inner { display: grid; } .gemini-card-arrow .gemini-card-inner { display: flex; position: relative; flex-direction: column; } @media screen and (min-width: 834px) { .gemini-card-arrow .gemini-card-inner { row-gap: 0; } } .gemini-card-arrow .gemini-media-wrapper { aspect-ratio: 738/413; inline-size: 100%; background: var(--gemini-color-grey-700); overflow: hidden; border-top-left-radius: 24px; border-top-right-radius: 24px; flex-shrink: 0; } .gemini-card-arrow .gemini-media-wrapper > * { background-size: cover; inline-size: 100%; } .gemini-card-arrow .gemini-text-wrapper { position: relative; padding: 24px; flex: 1; display: flex; row-gap: 16px; flex-direction: column; } @media screen and (min-width: 836px) { .gemini-card-arrow .gemini-text-wrapper { padding: 32px; column-gap: 32px; flex-direction: row; } } .gemini-card-arrow .gemini-icon-wrapper { flex-shrink: 0; } .gemini-card-arrow .gemini-card-copy { display: flex; flex-direction: column; max-inline-size: 234px; } @media screen and (min-width: 836px) { .gemini-card-arrow .gemini-card-copy { max-inline-size: var(--gemini-card-copy-max-width, 382px); } } .gemini-card-arrow .gemini-model-copy { color: var(--gemini-color-grey-400); } .gemini-card-arrow .gemini-arrow-link { position: absolute; inset-inline-end: 16px; inset-block-start: 16px; } @media screen and (min-width: 836px) { .gemini-card-arrow.gemini-layout-compact .gemini-card-inner { flex-direction: row; } } /* BLOG */ .gemini-blog-layout { row-gap: var(--gemini-size-grid-gap); } .gemini-blog-layout > * { grid-column: 1/-1; } @media screen and (min-width: 1024px) { .gemini-blog-layout > *:nth-child(1) { grid-area: 1/1/span 3/span 7; } .gemini-blog-layout > *:nth-child(2) { grid-area: 1/8/span 1/span 5; } .gemini-blog-layout > *:nth-child(3) { grid-area: 2/8/span 1/span 5; } .gemini-blog-layout > *:nth-child(4) { grid-area: 3/8/span 1/span 5; } } .gemini-blog-layout .article > * { block-size: 100%; } .gemini-blog-layout .article:first-of-type { --gemini-card-copy-max-width: 490px; } .gemini-blog-layout .article .gemini-card-arrow .gemini-model-copy { margin-top: auto; } /* CARD WITH BUTTON */ .gemini-card-with-button { display: grid; --_gemini-padding: 32px; } @media screen and (min-width: 834px) { .gemini-card-with-button { --_gemini-padding: 40px; } } .gemini-card-with-button .gemini-card-content { border-radius: var(--gemini-border-radius-d24); color: inherit; display: flex; height: 100%; padding: var(--_gemini-padding); position: relative; text-decoration: none; } .gemini-card-with-button .gemini-card-copy { display: flex; align-items: flex-start; flex-direction: column; gap: 24px; inline-size: 100%; } .gemini-card-with-button .gemini-card-copy .gemini-card-buttons { display: flex; column-gap: 8px; row-gap: 12px; flex-wrap: wrap; } .gemini-card-with-button .gemini-model-copy { color: var(--gemini-color-grey-400); max-inline-size: 420px; } .gemini-card-with-button .gemini-btn.gemini-tertiary { --gemini-button-fill: transparent; --gemini-button-text: var(--gemini-color-white); border: 1px solid var(--gemini-color-grey-600); flex-shrink: 0; inline-size: auto; } @media screen and (min-width: 834px) { .gemini-card-with-button.gemini-layout-large, .gemini-card-with-button.gemini-layout-inside-box { --_gemini-padding: 48px 48px; } .gemini-card-with-button.gemini-layout-large .gemini-card-copy, .gemini-card-with-button.gemini-layout-inside-box .gemini-card-copy { align-items: flex-start; gap: 24px; } .gemini-card-with-button.gemini-layout-large .gemini-card-copy > div:nth-child(1), .gemini-card-with-button.gemini-layout-inside-box .gemini-card-copy > div:nth-child(1) { flex: 1; } .gemini-card-with-button.gemini-layout-large .gemini-model-copy, .gemini-card-with-button.gemini-layout-inside-box .gemini-model-copy { width: 100%; max-inline-size: 610px; } } .gemini-card-with-button.gemini-layout-compact .gemini-card-copy { flex-direction: column; } @media screen and (min-width: 834px) { .gemini-card-with-button.gemini-layout-compact .gemini-card-copy { gap: 32px; } } .gemini-card-with-button.gemini-layout-compact .gemini-btn.gemini-tertiary { margin-block-start: auto; } @media screen and (max-width: 834px) { .gemini-card-with-button.gemini-layout-inside-box { --_gemini-padding: 40px 24px; } } .gemini-card-with-button.gemini-image-direction-column .gemini-card-content { flex-direction: column; row-gap: 40px; } .gemini-card-with-button.gemini-image-direction-column .gemini-card-image { inline-size: 100%; } .gemini-card-with-button.gemini-image-direction-column .gemini-card-image img { inline-size: 100%; } .gemini-card-with-button .gemini-card-image { border-radius: var(--gemini-border-radius-d16); clip-path: fill-box; line-height: 0; } /* Dialog */ .gemini-dialog { background: transparent; block-size: 100%; border: none; color: inherit; inline-size: 100%; max-block-size: none; max-inline-size: none; padding: 0; } .gemini-dialog::backdrop { background: transparent; } .gemini-dialog.gemini-dialog--active .gemini-dialog__backdrop { opacity: 0.8; } .gemini-dialog.gemini-dialog--active .gemini-dialog__content { opacity: 1; } .gemini-dialog__close-button { align-items: center; all: unset; box-sizing: border-box; cursor: pointer; display: flex; justify-content: center; position: absolute; z-index: 10; } .gemini-dialog__backdrop { background: #000; inset: 0; opacity: 0; outline: none; position: absolute; transition: opacity 0.2s ease-out; z-index: 1; } .gemini-dialog__content { opacity: 0; position: relative; transition: opacity 0.4s ease-out; } .gemini-dialog-wysiwyg h3 { margin-block-end: 4px; } .gemini-dialog-wysiwyg h2 { margin-block-end: 4px; } .gemini-dialog-wysiwyg p { color: var(--gemini-color-grey-300); } .gemini-dialog-wysiwyg b { color: var(--gemini-color-grey-200); font-weight: 500; } .gemini-side-dialog { overflow: hidden; } .gemini-side-dialog .gemini-dialog__content { position: absolute; z-index: 5; background: var(--gemini-color-grey-700); max-width: 600px; padding-block: 104px 46px; padding-inline: 20px; overflow-y: scroll; scrollbar-width: thin; scrollbar-color: var(--gemini-color-white) transparent; height: 100%; inset-block-start: 0; inset-inline-end: 0; } @media (min-width: 768px) { .gemini-side-dialog .gemini-dialog__content { padding-block: 140px 24px; padding-inline: 64px; } } .gemini-side-dialog .gemini-dialog__eyebrow { color: var(--gemini-color-grey-400); } .gemini-side-dialog .gemini-dialog__close-button { inset-block-start: 48px; inset-inline-end: 20px; block-size: 48px; inline-size: 48px; border: 1px solid var(--gemini-color-grey-600); border-radius: 50%; background: transparent; transition: background 0.3s linear; } @media (min-width: 834px) { .gemini-side-dialog .gemini-dialog__close-button { inset-inline-end: 64px; } } .gemini-side-dialog .gemini-dialog__close-button svg { max-inline-size: 14px; } .gemini-side-dialog .gemini-dialog__close-button:hover, .gemini-side-dialog .gemini-dialog__close-button:focus-visible { background: var(--gemini-color-grey-600); } .gemini-side-dialog .gemini-dialog__close-button:focus-visible { outline: 1px solid var(--gemini-color-white); } .gemini-modal-dialog .gemini-dialog__close-button { block-size: 24px; inline-size: 24px; inset-block-start: 20px; inset-inline-end: 20px; transition: opacity 0.2s linear; background: transparent; } @media (min-width: 834px) { .gemini-modal-dialog .gemini-dialog__close-button { inset-block-start: 24px; inset-inline-end: 24px; } } .gemini-modal-dialog .gemini-dialog__close-button:hover { opacity: 0.7; } .gemini-modal-dialog .gemini-dialog__close-button:focus-visible { outline: 1px solid var(--gemini-color-white); } .gemini-modal-dialog .gemini-dialog-inner { align-items: center; block-size: 100%; display: flex; inline-size: 100%; justify-content: center; pointer-events: none; position: relative; z-index: 10; } @media (min-width: 834px) { .gemini-modal-dialog .gemini-dialog-inner { padding-block: 24px; } } .gemini-modal-dialog .gemini-dialog__content { background: var(--gemini-color-grey-700); block-size: var(--gemini-dialog-height, 100%); display: flex; flex-direction: column; inline-size: 100%; margin: auto auto; max-block-size: 100%; max-inline-size: var(--gemini-dialog-max-width, 846px); padding-block: 32px 20px; padding-inline: 20px; pointer-events: all; border: 1px solid var(--gemini-color-grey-600); } @media (min-width: 834px) { .gemini-modal-dialog .gemini-dialog__content { max-block-size: var(--gemini-dialog-max-height, 620px); border-radius: 24px; padding-block: 48px; padding-inline: 40px; } } .gemini-modal-dialog .gemini-dialog-header { flex-shrink: 0; margin-inline: auto; max-inline-size: 420px; text-align: center; } .gemini-modal-dialog .gemini-dialog-body { flex-grow: 1; overflow: hidden; padding-inline: 0 0; } .gemini-modal-dialog .gemini-dialog-block { background: var(--gemini-color-grey-800); border-radius: 12px; border: 1px solid var(--gemini-color-grey-600); } .gemini-modal-dialog .gemini-dialog-actions { display: flex; align-items: center; gap: 12px; } .gemini-scroller { height: 100%; overflow: auto; padding-block: 32px; padding-inline: 24px 40px; scrollbar-color: var(--gemini-color-white) transparent; scrollbar-width: thin; } .gemini-video-dialog .gemini-dialog-inner { align-items: center; block-size: 100%; display: flex; inline-size: 100%; justify-content: center; position: relative; z-index: 10; padding-inline: 20px; } @media screen and (min-width: 834px) { .gemini-video-dialog .gemini-dialog-inner { padding-inline: 60px; } } .gemini-video-dialog .gemini-dialog__close-button { position: absolute; background: var(--gemini-color-white); block-size: 40px; inline-size: 40px; inset-block-start: -60px; inset-inline-end: 0; border-radius: 50%; } @media screen and (min-width: 834px) { .gemini-video-dialog .gemini-dialog__close-button { inset-block-start: -40px; inset-inline-end: -40px; } } .gemini-video-dialog .gemini-dialog__close-button svg { width: 24px; } .gemini-video-dialog .gemini-dialog__content { inline-size: 100%; aspect-ratio: 559/315; position: relative; } @media screen and (min-width: 834px) { .gemini-video-dialog .gemini-dialog__content { min-inline-size: 700px; max-inline-size: 1200px; inline-size: 80%; } } .gemini-video-dialog .gemini-dialog__content .gemini-dialog-body { block-size: 100%; line-height: 0; border: var(--gemini-color-grey-600) 1px solid; border-radius: 16px; overflow: hidden; background: var(--gemini-color-grey-600); } .gemini-dialog-link { all: unset; cursor: pointer; color: var(--gemini-dialog-link-cta, #368efe); } </style><style> /* Styles inlined from /css/edge.css */ .gemini-edge-page { padding-block-end: var(--gemini-space-d140); } .gemini-edge-page [data-viewport=once] { opacity: 0; transform: translateY(100px); transition: 0.7s opacity, 0.7s transform; } .gemini-edge-page [data-viewport=once].gemini-onscreen { opacity: 1; transform: translateY(0); } .gemini-edge-page .gemini-btn { white-space: nowrap; } .gemini-edge-page .gemini-nano-image-wrapper { display: flex; justify-content: center; } .gemini-edge-page .gemini-nano-image-wrapper .gemini-nano-image { max-width: 450px; line-height: 0; } .gemini-section-edge-intro { margin-bottom: 90px; } @media (min-width: 834px) { .gemini-section-edge-intro { margin-bottom: 180px; } } .gemini-section-edge-intro .gemini-edge-bg { position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 100%; max-width: 1400px; display: none; } @media (min-width: 834px) { .gemini-section-edge-intro .gemini-edge-bg { display: block; } } .gemini-section-edge-intro .gemini-layout-max-width { position: relative; background: radial-gradient(closest-side, #0C1D38 10%, transparent); } .gemini-title-container { text-align: center; padding-top: 120px; } @media (min-width: 834px) { .gemini-title-container { padding-top: 190px; } } .gemini-intro-title { color: var(--gemini-color-grey-300); } .gemini-page .gemini-edge-logo { max-inline-size: 700px; display: none; } @media (min-width: 834px) { .gemini-page .gemini-edge-logo { display: inline-block; } } .gemini-page .gemini-edge-logo-mobile { max-inline-size: 250px; margin-left: auto; margin-right: auto; } @media (min-width: 834px) { .gemini-page .gemini-edge-logo-mobile { display: none; } } .gemini-benefits-list { margin: 100px 0 0 0; display: none; } .gemini-benefits-list[data-viewport=once] { transition-delay: 0.1s; } @media (min-width: 834px) { .gemini-benefits-list { display: flex; gap: 29px; } } .gemini-benefits-list .gemini-divider { width: 1px; background-color: var(--gemini-color-grey-700); flex-grow: 0; } .gemini-benefits-list .gemini-benefit-list-item { display: flex; gap: 15px; flex-basis: 25%; flex-direction: column; } @media (min-width: 1024px) { .gemini-benefits-list .gemini-benefit-list-item { flex-direction: row; } } .gemini-benefits-list .gemini-benefit-list-item .gemini-benefit-icon { height: 33px; } .gemini-benefits-list .gemini-benefit-list-item .gemini-benefit-text { flex: 1; margin-top: -5px; } .gemini-benefits-list .gemini-benefit-list-item .gemini-benefit-text .gemini-benefit-description { color: var(--gemini-color-grey-400); } .gemini-features-title { max-width: 600px; text-align: center; margin: 0 auto; } .gemini-image-by-text-card { display: flex; justify-content: center; align-items: center; margin-bottom: 45px; } .gemini-image-by-text-card.image-layout-left { direction: rtl; } .gemini-image-by-text-card .gemini-card-image, .gemini-image-by-text-card .gemini-card-text { grid-column: 1/-1; } @media (min-width: 834px) { .gemini-image-by-text-card .gemini-card-image, .gemini-image-by-text-card .gemini-card-text { grid-column: 2/-2; } } @media (min-width: 834px) { .gemini-image-by-text-card .gemini-card-text { grid-column: 1/span 4; } .gemini-image-by-text-card .gemini-card-image { grid-column: 5/span 4; } } @media (min-width: 1024px) { .gemini-image-by-text-card .gemini-card-text { grid-column: 2/span 5; } .gemini-image-by-text-card .gemini-card-image { grid-column: 7/span 5; } } .gemini-image-by-text-card .gemini-card-text { display: flex; flex-direction: column; align-items: center; text-align: center; margin: 20px auto; direction: ltr; } @media (min-width: 1024px) { .gemini-image-by-text-card .gemini-card-text { margin-bottom: 0; } .gemini-image-by-text-card .gemini-card-text .gemini-card-title { max-width: 331px; } .gemini-image-by-text-card .gemini-card-text .gemini-card-description { max-width: 415px; } } .gemini-image-by-text-card .gemini-card-image { background: linear-gradient(135deg, #10121B 0%, #060606 100%); border: 2px solid var(--gemini-color-grey-700); border-radius: 32px; overflow: hidden; line-height: 0; } .gemini-image-by-text-card .gemini-card-image img, .gemini-image-by-text-card .gemini-card-image video { display: block; } .gemini-image-by-text-card .gemini-btn svg g rect { transition: 0.5s fill; } .gemini-image-by-text-card .gemini-btn:hover svg g rect { fill: #000; } .gemini-tools-header .gemini-section-header { grid-column: 1/-1; text-align: center; } @media screen and (min-width: 834px) { .gemini-tools-header .gemini-section-header { grid-column: 2/span 6; } } @media screen and (min-width: 1024px) { .gemini-tools-header .gemini-section-header { grid-column: 2/span 5; text-align: left; } } .gemini-tools-header .gemini-about-tools { grid-column: 1/-1; text-align: center; } @media screen and (min-width: 600px) { .gemini-tools-header .gemini-about-tools { grid-column: 2/span 4; } } @media screen and (min-width: 834px) { .gemini-tools-header .gemini-about-tools { grid-column: 3/span 4; } } @media screen and (min-width: 1024px) { .gemini-tools-header .gemini-about-tools { grid-column: 8/span 4; text-align: left; } } .gemini-tools-header .gemini-about-tools p { color: var(--gemini-color-grey-300); } .gemini-tools-header .gemini-separator { inline-size: 100%; height: 1px; background: var(--gemini-color-grey-700); } .gemini-tools-list { display: flex; flex-direction: column; row-gap: 20px; --gemini-section-text-alignment: left; --gemini-section-margin: 0; } .gemini-tools-list .gemini-tool-link { display: grid; } .gemini-tools-list .gemini-large-section .gemini-left { grid-column: 1/-1; margin-block-end: 48px; } @media screen and (min-width: 1024px) { .gemini-tools-list .gemini-large-section .gemini-left { grid-column: 2/span 4; } } .gemini-tools-list .gemini-large-section .gemini-right { grid-column: 1/-1; display: flex; flex-direction: column; gap: 40px; } @media screen and (min-width: 1024px) { .gemini-tools-list .gemini-large-section .gemini-right { grid-column: 8/span 4; } } .gemini-tools-list .gemini-large-section .gemini-right .gemini-list-item { padding-block-end: 40px; border-bottom: 1px solid var(--gemini-color-grey-600); } .gemini-tools-list .gemini-large-section .gemini-right .gemini-list-item:last-child { border-bottom: none; padding-block-end: 0; } .gemini-tools-list .gemini-large-section .gemini-right .gemini-list-item p:last-of-type { color: var(--gemini-color-grey-400); } .gemini-tools-list .gemini-small-section { row-gap: 32px; } .gemini-tools-list .gemini-small-section .gemini-left { grid-column: 1/-1; } @media screen and (min-width: 1024px) { .gemini-tools-list .gemini-small-section .gemini-left { grid-column: 2/span 6; } } .gemini-tools-list .gemini-small-section .gemini-right { grid-column: 1/-1; } @media screen and (min-width: 1024px) { .gemini-tools-list .gemini-small-section .gemini-right { display: flex; grid-column: 10/span 2; justify-content: flex-end; align-items: flex-start; } } .gemini-tools-list .gemini-tools-title { display: flex; align-items: center; gap: 16px; } .gemini-tools-list .gemini-links-grid { grid-column: 1/-1; display: grid; grid-template-columns: repeat(10, 1fr); gap: var(--gemini-size-grid-gap); } @media screen and (min-width: 1024px) { .gemini-tools-list .gemini-links-grid { grid-column: 2/span 10; } } .gemini-tools-list .gemini-links-grid > p { grid-column: 1/-1; margin-block-end: 4px; } .gemini-tools-list .gemini-links-grid .gemini-tool-link { grid-column: 1/-1; } @media screen and (min-width: 600px) { .gemini-tools-list .gemini-links-grid .gemini-tool-link { grid-column: span 5/auto; } } </style> <div class="devsite-banner devsite-banner-announcement nocontent" background="google-blue" > <div class="devsite-banner-message"> <div class="devsite-banner-message-text"> <b>Introducing LiteRT</b>: Google's high-performance runtime for on-device AI, formerly known as TensorFlow Lite. <a class="button button-primary" href="https://developers.googleblog.com/en/tensorflow-lite-is-now-litert">Learn more</a> </div> </div> </div> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://ai.google.dev/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Home </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://ai.google.dev/edge" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Google AI Edge" > Google AI Edge </a> </li> </ul> </div> <devsite-feedback position="header" project-name="Google AI Edge" product-id="5336252" bucket="documentation" context="" version="t-devsite-webserver-20241114-r00-rc02.464921008191574316" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/touchicon-180-new.png" > <button> Send feedback </button> </devsite-feedback> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded disabled> </devsite-toc> <div class="devsite-article-body clearfix devsite-no-page-title"> <devsite-gemini-page class="gemini-page gemini-edge-page"> <section class="gemini-section-edge-intro"> <div class="gemini-edge-bg"> <div class="gemini-svg gemini-lottie-lines" data-lottie="/lottie/top-landing.json" data-lottie-name="bg-top"></div> </div> <div class="gemini-layout-max-width"> <div class="gemini-title-container" data-viewport="once" data-viewport-threshold=".3"> <svg class="gemini-edge-logo gemini-space-d24" viewBox="0 0 708 106" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M40.086 81.728c-7.272 0-13.968-1.764-20.088-5.292-6.12-3.528-10.98-8.388-14.58-14.58-3.6-6.192-5.4-13.032-5.4-20.52 0-7.488 1.8-14.328 5.4-20.52 3.6-6.192 8.46-11.052 14.58-14.58C26.118 2.708 32.814.944 40.086.944c5.688 0 11.016 1.008 15.984 3.024 5.04 2.016 9.18 4.86 12.42 8.532l-6.588 6.588c-2.448-3.024-5.58-5.328-9.396-6.912-3.816-1.656-7.92-2.484-12.312-2.484-5.472 0-10.584 1.332-15.336 3.996-4.68 2.592-8.46 6.3-11.34 11.124-2.808 4.752-4.212 10.26-4.212 16.524 0 6.264 1.404 11.808 4.212 16.632 2.88 4.752 6.696 8.46 11.448 11.124 4.752 2.592 9.828 3.888 15.228 3.888 5.184 0 9.504-.792 12.96-2.376 3.528-1.656 6.552-3.816 9.072-6.48 1.872-2.016 3.384-4.428 4.536-7.236 1.152-2.88 1.872-6.048 2.16-9.504h-28.62v-8.532h37.152c.36 2.016.54 3.888.54 5.616 0 4.752-.756 9.396-2.268 13.932-1.512 4.464-3.924 8.388-7.236 11.772-7.128 7.704-16.596 11.556-28.404 11.556Zm71.584 0c-5.4 0-10.26-1.296-14.58-3.888-4.32-2.592-7.704-6.12-10.152-10.584-2.376-4.464-3.564-9.396-3.564-14.796 0-5.4 1.188-10.332 3.564-14.796C89.386 33.2 92.77 29.672 97.09 27.08c4.32-2.592 9.18-3.888 14.58-3.888s10.26 1.296 14.58 3.888c4.32 2.592 7.668 6.12 10.044 10.584 2.448 4.464 3.672 9.396 3.672 14.796 0 5.4-1.224 10.332-3.672 14.796-2.376 4.464-5.724 7.992-10.044 10.584-4.32 2.592-9.18 3.888-14.58 3.888Zm0-8.316c3.384 0 6.516-.828 9.396-2.484 2.952-1.728 5.292-4.176 7.02-7.344 1.8-3.168 2.7-6.876 2.7-11.124s-.9-7.956-2.7-11.124c-1.728-3.168-4.068-5.58-7.02-7.236-2.88-1.728-6.012-2.592-9.396-2.592-3.384 0-6.552.864-9.504 2.592-2.952 1.656-5.328 4.068-7.128 7.236-1.728 3.168-2.592 6.876-2.592 11.124s.864 7.956 2.592 11.124c1.8 3.168 4.176 5.616 7.128 7.344a19.115 19.115 0 0 0 9.504 2.484Zm61.336 8.316c-5.4 0-10.26-1.296-14.58-3.888-4.32-2.592-7.704-6.12-10.152-10.584-2.376-4.464-3.564-9.396-3.564-14.796 0-5.4 1.188-10.332 3.564-14.796 2.448-4.464 5.832-7.992 10.152-10.584 4.32-2.592 9.18-3.888 14.58-3.888s10.26 1.296 14.58 3.888c4.32 2.592 7.668 6.12 10.044 10.584 2.448 4.464 3.672 9.396 3.672 14.796 0 5.4-1.224 10.332-3.672 14.796-2.376 4.464-5.724 7.992-10.044 10.584-4.32 2.592-9.18 3.888-14.58 3.888Zm0-8.316c3.384 0 6.516-.828 9.396-2.484 2.952-1.728 5.292-4.176 7.02-7.344 1.8-3.168 2.7-6.876 2.7-11.124s-.9-7.956-2.7-11.124c-1.728-3.168-4.068-5.58-7.02-7.236-2.88-1.728-6.012-2.592-9.396-2.592-3.384 0-6.552.864-9.504 2.592-2.952 1.656-5.328 4.068-7.128 7.236-1.728 3.168-2.592 6.876-2.592 11.124s.864 7.956 2.592 11.124c1.8 3.168 4.176 5.616 7.128 7.344a19.115 19.115 0 0 0 9.504 2.484Zm60.148 31.644c-6.48 0-11.844-1.512-16.092-4.536-4.176-3.024-6.984-6.66-8.424-10.908l8.316-3.564c1.224 3.168 3.24 5.724 6.048 7.668 2.88 2.016 6.264 3.024 10.152 3.024 5.688 0 10.08-1.656 13.176-4.968 3.168-3.312 4.752-7.992 4.752-14.04v-6.156h-.432c-1.8 2.808-4.356 5.112-7.668 6.912-3.24 1.728-6.948 2.592-11.124 2.592-4.752 0-9.108-1.224-13.068-3.672-3.888-2.448-6.984-5.868-9.288-10.26-2.304-4.392-3.456-9.396-3.456-15.012 0-5.544 1.152-10.512 3.456-14.904 2.304-4.464 5.4-7.92 9.288-10.368 3.96-2.448 8.316-3.672 13.068-3.672 4.176 0 7.884.9 11.124 2.7 3.312 1.728 5.868 4.032 7.668 6.912h.432V24.92h8.748v52.92c0 8.856-2.448 15.588-7.344 20.196-4.896 4.68-11.34 7.02-19.332 7.02Zm0-32.292c3.312 0 6.3-.828 8.964-2.484 2.736-1.656 4.896-4.032 6.48-7.128 1.656-3.096 2.484-6.768 2.484-11.016 0-4.32-.828-8.028-2.484-11.124-1.584-3.096-3.744-5.436-6.48-7.02-2.664-1.656-5.652-2.484-8.964-2.484-3.312 0-6.336.828-9.072 2.484-2.736 1.656-4.932 4.032-6.588 7.128-1.584 3.096-2.376 6.768-2.376 11.016s.792 7.956 2.376 11.124c1.656 3.096 3.852 5.472 6.588 7.128 2.736 1.584 5.76 2.376 9.072 2.376Zm37.25-70.092h9.18V80h-9.18V2.672Zm43.77 79.056c-5.256 0-9.972-1.26-14.148-3.78-4.176-2.52-7.452-5.976-9.828-10.368-2.304-4.464-3.456-9.468-3.456-15.012 0-5.328 1.08-10.224 3.24-14.688 2.232-4.464 5.364-8.028 9.396-10.692 4.032-2.664 8.712-3.996 14.04-3.996 5.4 0 10.08 1.224 14.04 3.672 3.96 2.376 6.984 5.688 9.072 9.936 2.16 4.248 3.24 9.108 3.24 14.58 0 1.08-.108 2.016-.324 2.808h-43.524c.216 4.176 1.224 7.704 3.024 10.584s4.068 5.04 6.804 6.48c2.808 1.44 5.724 2.16 8.748 2.16 7.056 0 12.492-3.312 16.308-9.936l7.776 3.78c-2.376 4.464-5.616 7.992-9.72 10.584-4.032 2.592-8.928 3.888-14.688 3.888Zm15.876-35.1c-.144-2.304-.792-4.608-1.944-6.912-1.152-2.304-2.988-4.248-5.508-5.832-2.448-1.584-5.544-2.376-9.288-2.376-4.32 0-7.992 1.404-11.016 4.212-2.952 2.736-4.896 6.372-5.832 10.908h33.588Zm60.379-43.956h10.368L430.173 80h-10.044l-7.776-21.276h-33.372L371.205 80h-10.044l29.268-77.328Zm18.792 47.412-10.26-27.864-3.132-8.316h-.432l-3.024 8.316-10.26 27.864h27.108Zm28.206-47.412h9.072V80h-9.072V2.672Zm45.469 0h44.712v8.748h-35.64v25.596h32.184v8.64h-32.184v25.596h35.64V80h-44.712V2.672Zm75.867 79.056c-4.896 0-9.36-1.26-13.392-3.78-3.96-2.52-7.092-5.976-9.396-10.368-2.304-4.464-3.456-9.504-3.456-15.12 0-5.544 1.152-10.548 3.456-15.012 2.304-4.464 5.436-7.956 9.396-10.476 4.032-2.52 8.496-3.78 13.392-3.78 4.248 0 8.028.972 11.34 2.916 3.312 1.872 5.832 4.212 7.56 7.02h.432l-.432-7.668V2.672h9.18V80h-8.748v-8.1h-.432c-1.728 2.736-4.248 5.076-7.56 7.02-3.312 1.872-7.092 2.808-11.34 2.808Zm1.08-8.316c3.24 0 6.228-.864 8.964-2.592 2.808-1.728 5.04-4.176 6.696-7.344 1.728-3.168 2.592-6.84 2.592-11.016s-.864-7.848-2.592-11.016c-1.656-3.168-3.888-5.616-6.696-7.344-2.736-1.728-5.724-2.592-8.964-2.592-3.168 0-6.156.864-8.964 2.592-2.808 1.728-5.076 4.212-6.804 7.452-1.656 3.168-2.484 6.804-2.484 10.908 0 4.104.828 7.776 2.484 11.016 1.728 3.168 3.996 5.616 6.804 7.344 2.808 1.728 5.796 2.592 8.964 2.592Zm61.225 31.644c-6.48 0-11.844-1.512-16.092-4.536-4.176-3.024-6.984-6.66-8.424-10.908l8.316-3.564c1.224 3.168 3.24 5.724 6.048 7.668 2.88 2.016 6.264 3.024 10.152 3.024 5.688 0 10.08-1.656 13.176-4.968 3.168-3.312 4.752-7.992 4.752-14.04v-6.156h-.432c-1.8 2.808-4.356 5.112-7.668 6.912-3.24 1.728-6.948 2.592-11.124 2.592-4.752 0-9.108-1.224-13.068-3.672-3.888-2.448-6.984-5.868-9.288-10.26-2.304-4.392-3.456-9.396-3.456-15.012 0-5.544 1.152-10.512 3.456-14.904 2.304-4.464 5.4-7.92 9.288-10.368 3.96-2.448 8.316-3.672 13.068-3.672 4.176 0 7.884.9 11.124 2.7 3.312 1.728 5.868 4.032 7.668 6.912h.432V24.92h8.748v52.92c0 8.856-2.448 15.588-7.344 20.196-4.896 4.68-11.34 7.02-19.332 7.02Zm0-32.292c3.312 0 6.3-.828 8.964-2.484 2.736-1.656 4.896-4.032 6.48-7.128 1.656-3.096 2.484-6.768 2.484-11.016 0-4.32-.828-8.028-2.484-11.124-1.584-3.096-3.744-5.436-6.48-7.02-2.664-1.656-5.652-2.484-8.964-2.484-3.312 0-6.336.828-9.072 2.484-2.736 1.656-4.932 4.032-6.588 7.128-1.584 3.096-2.376 6.768-2.376 11.016s.792 7.956 2.376 11.124c1.656 3.096 3.852 5.472 6.588 7.128 2.736 1.584 5.76 2.376 9.072 2.376Zm61.238 8.964c-5.256 0-9.972-1.26-14.148-3.78-4.176-2.52-7.452-5.976-9.828-10.368-2.304-4.464-3.456-9.468-3.456-15.012 0-5.328 1.08-10.224 3.24-14.688 2.232-4.464 5.364-8.028 9.396-10.692 4.032-2.664 8.712-3.996 14.04-3.996 5.4 0 10.08 1.224 14.04 3.672 3.96 2.376 6.984 5.688 9.072 9.936 2.16 4.248 3.24 9.108 3.24 14.58 0 1.08-.108 2.016-.324 2.808h-43.524c.216 4.176 1.224 7.704 3.024 10.584s4.068 5.04 6.804 6.48c2.808 1.44 5.724 2.16 8.748 2.16 7.056 0 12.492-3.312 16.308-9.936l7.776 3.78c-2.376 4.464-5.616 7.992-9.72 10.584-4.032 2.592-8.928 3.888-14.688 3.888Zm15.876-35.1c-.144-2.304-.792-4.608-1.944-6.912-1.152-2.304-2.988-4.248-5.508-5.832-2.448-1.584-5.544-2.376-9.288-2.376-4.32 0-7.992 1.404-11.016 4.212-2.952 2.736-4.896 6.372-5.832 10.908h33.588Z" fill="url(#a)" /> <defs> <linearGradient id="a" x1="-69" y1="44" x2="776" y2="44" gradientUnits="userSpaceOnUse"> <stop stop-color="#217BFE" /> <stop offset=".335" stop-color="#078EFB" /> <stop offset=".7" stop-color="#AC87EB" /> <stop offset="1" stop-color="#EE4D5D" /> </linearGradient> </defs> </svg> <svg class="gemini-edge-logo-mobile gemini-space-d24" viewBox="0 0 220 109" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M20.114 39.832c-3.5 0-6.725-.85-9.672-2.548-2.946-1.699-5.286-4.039-7.02-7.02-1.733-2.981-2.6-6.275-2.6-9.88 0-3.605.867-6.899 2.6-9.88 1.734-2.981 4.074-5.321 7.02-7.02C13.39 1.785 16.613.936 20.114.936c2.74 0 5.304.485 7.696 1.456 2.427.97 4.42 2.34 5.98 4.108l-3.172 3.172c-1.178-1.456-2.686-2.565-4.524-3.328-1.837-.797-3.813-1.196-5.928-1.196-2.634 0-5.096.641-7.384 1.924-2.253 1.248-4.073 3.033-5.46 5.356-1.352 2.288-2.028 4.94-2.028 7.956s.676 5.685 2.028 8.008c1.387 2.288 3.224 4.073 5.512 5.356a15.08 15.08 0 0 0 7.332 1.872c2.496 0 4.576-.381 6.24-1.144 1.7-.797 3.155-1.837 4.368-3.12.902-.97 1.63-2.132 2.184-3.484.555-1.387.902-2.912 1.04-4.576h-13.78v-4.108h17.888c.174.97.26 1.872.26 2.704 0 2.288-.364 4.524-1.092 6.708a14.789 14.789 0 0 1-3.484 5.668c-3.432 3.71-7.99 5.564-13.676 5.564Zm34.911 0c-2.6 0-4.94-.624-7.02-1.872-2.08-1.248-3.709-2.947-4.888-5.096-1.144-2.15-1.716-4.524-1.716-7.124 0-2.6.572-4.975 1.716-7.124 1.179-2.15 2.808-3.848 4.888-5.096 2.08-1.248 4.42-1.872 7.02-1.872 2.6 0 4.94.624 7.02 1.872a12.905 12.905 0 0 1 4.836 5.096c1.179 2.15 1.768 4.524 1.768 7.124 0 2.6-.589 4.975-1.768 7.124a12.905 12.905 0 0 1-4.836 5.096c-2.08 1.248-4.42 1.872-7.02 1.872Zm0-4.004a8.92 8.92 0 0 0 4.524-1.196c1.422-.832 2.548-2.01 3.38-3.536.867-1.525 1.3-3.31 1.3-5.356 0-2.045-.433-3.83-1.3-5.356-.832-1.525-1.958-2.687-3.38-3.484a8.634 8.634 0 0 0-4.524-1.248c-1.629 0-3.154.416-4.576 1.248-1.421.797-2.565 1.959-3.432 3.484-.832 1.525-1.248 3.31-1.248 5.356 0 2.045.416 3.83 1.248 5.356.867 1.525 2.011 2.704 3.432 3.536a9.204 9.204 0 0 0 4.576 1.196Zm29.977 4.004c-2.6 0-4.94-.624-7.02-1.872-2.08-1.248-3.71-2.947-4.888-5.096-1.144-2.15-1.716-4.524-1.716-7.124 0-2.6.572-4.975 1.716-7.124 1.178-2.15 2.808-3.848 4.888-5.096 2.08-1.248 4.42-1.872 7.02-1.872 2.6 0 4.94.624 7.02 1.872a12.905 12.905 0 0 1 4.836 5.096c1.178 2.15 1.768 4.524 1.768 7.124 0 2.6-.59 4.975-1.768 7.124a12.905 12.905 0 0 1-4.836 5.096c-2.08 1.248-4.42 1.872-7.02 1.872Zm0-4.004a8.92 8.92 0 0 0 4.524-1.196c1.421-.832 2.548-2.01 3.38-3.536.866-1.525 1.3-3.31 1.3-5.356 0-2.045-.434-3.83-1.3-5.356-.832-1.525-1.959-2.687-3.38-3.484a8.634 8.634 0 0 0-4.524-1.248c-1.63 0-3.155.416-4.576 1.248-1.422.797-2.566 1.959-3.432 3.484-.832 1.525-1.248 3.31-1.248 5.356 0 2.045.416 3.83 1.248 5.356.867 1.525 2.01 2.704 3.432 3.536a9.204 9.204 0 0 0 4.576 1.196Zm29.404 15.236c-3.12 0-5.702-.728-7.748-2.184-2.01-1.456-3.362-3.207-4.056-5.252l4.004-1.716a7.832 7.832 0 0 0 2.912 3.692c1.387.97 3.016 1.456 4.888 1.456 2.739 0 4.854-.797 6.344-2.392 1.526-1.595 2.288-3.848 2.288-6.76v-2.964h-.208c-.866 1.352-2.097 2.461-3.692 3.328-1.56.832-3.345 1.248-5.356 1.248-2.288 0-4.385-.59-6.292-1.768-1.872-1.179-3.362-2.825-4.472-4.94-1.109-2.115-1.664-4.524-1.664-7.228 0-2.67.555-5.061 1.664-7.176 1.11-2.15 2.6-3.813 4.472-4.992 1.907-1.179 4.004-1.768 6.292-1.768 2.011 0 3.796.433 5.356 1.3 1.595.832 2.826 1.941 3.692 3.328h.208V12.48h4.212v25.48c0 4.264-1.178 7.505-3.536 9.724-2.357 2.253-5.46 3.38-9.308 3.38Zm0-15.548c1.595 0 3.034-.399 4.316-1.196 1.318-.797 2.358-1.941 3.12-3.432.798-1.49 1.196-3.259 1.196-5.304 0-2.08-.398-3.865-1.196-5.356-.762-1.49-1.802-2.617-3.12-3.38-1.282-.797-2.721-1.196-4.316-1.196-1.594 0-3.05.399-4.368 1.196-1.317.797-2.374 1.941-3.172 3.432-.762 1.49-1.144 3.259-1.144 5.304 0 2.045.382 3.83 1.144 5.356.798 1.49 1.855 2.635 3.172 3.432 1.318.763 2.774 1.144 4.368 1.144Zm18.38-33.748h4.42V39h-4.42V1.768Zm21.519 38.064c-2.531 0-4.802-.607-6.812-1.82-2.011-1.213-3.588-2.877-4.732-4.992-1.11-2.15-1.664-4.559-1.664-7.228 0-2.565.52-4.923 1.56-7.072 1.074-2.15 2.582-3.865 4.524-5.148 1.941-1.283 4.194-1.924 6.76-1.924 2.6 0 4.853.59 6.76 1.768 1.906 1.144 3.362 2.739 4.368 4.784 1.04 2.045 1.56 4.385 1.56 7.02 0 .52-.052.97-.156 1.352h-20.956c.104 2.01.589 3.71 1.456 5.096.866 1.387 1.958 2.427 3.276 3.12 1.352.693 2.756 1.04 4.212 1.04 3.397 0 6.014-1.595 7.852-4.784l3.744 1.82c-1.144 2.15-2.704 3.848-4.68 5.096-1.942 1.248-4.299 1.872-7.072 1.872Zm7.644-16.9c-.07-1.11-.382-2.219-.936-3.328-.555-1.11-1.439-2.045-2.652-2.808-1.179-.763-2.67-1.144-4.472-1.144-2.08 0-3.848.676-5.304 2.028-1.422 1.317-2.358 3.068-2.808 5.252h16.172Zm29.96-21.164h4.992L211.045 39h-4.836l-3.744-10.244h-16.068L182.653 39h-4.836l14.092-37.232Zm9.048 22.828-4.94-13.416-1.508-4.004h-.208l-1.456 4.004-4.94 13.416h13.052Zm14.025-22.828h4.368V39h-4.368V1.768Zm-158.185 57h21.528v4.212h-17.16v12.324H76.66v4.16H61.165v12.324h17.16V96H56.797V58.768ZM93.77 96.832c-2.358 0-4.507-.607-6.448-1.82-1.907-1.213-3.415-2.877-4.524-4.992-1.11-2.15-1.664-4.576-1.664-7.28 0-2.67.554-5.079 1.664-7.228 1.11-2.15 2.617-3.83 4.524-5.044 1.941-1.213 4.09-1.82 6.448-1.82 2.045 0 3.865.468 5.46 1.404 1.594.901 2.808 2.028 3.64 3.38h.208l-.208-3.692V58.768h4.42V96h-4.212v-3.9h-.208c-.832 1.317-2.046 2.444-3.64 3.38-1.595.901-3.415 1.352-5.46 1.352Zm.52-4.004c1.56 0 2.998-.416 4.316-1.248 1.352-.832 2.426-2.01 3.224-3.536.832-1.525 1.248-3.293 1.248-5.304 0-2.01-.416-3.779-1.248-5.304-.798-1.525-1.872-2.704-3.224-3.536a7.926 7.926 0 0 0-4.316-1.248c-1.526 0-2.964.416-4.316 1.248-1.352.832-2.444 2.028-3.276 3.588-.798 1.525-1.196 3.276-1.196 5.252s.398 3.744 1.196 5.304c.832 1.525 1.924 2.704 3.276 3.536 1.352.832 2.79 1.248 4.316 1.248Zm29.923 15.236c-3.12 0-5.703-.728-7.748-2.184-2.011-1.456-3.363-3.207-4.056-5.252l4.004-1.716a7.827 7.827 0 0 0 2.912 3.692c1.387.971 3.016 1.456 4.888 1.456 2.739 0 4.853-.797 6.344-2.392 1.525-1.595 2.288-3.848 2.288-6.76v-2.964h-.208c-.867 1.352-2.097 2.461-3.692 3.328-1.56.832-3.345 1.248-5.356 1.248-2.288 0-4.385-.59-6.292-1.768-1.872-1.179-3.363-2.825-4.472-4.94-1.109-2.115-1.664-4.524-1.664-7.228 0-2.67.555-5.061 1.664-7.176 1.109-2.15 2.6-3.813 4.472-4.992 1.907-1.179 4.004-1.768 6.292-1.768 2.011 0 3.796.433 5.356 1.3 1.595.832 2.825 1.941 3.692 3.328h.208V69.48h4.212v25.48c0 4.264-1.179 7.505-3.536 9.724-2.357 2.253-5.46 3.38-9.308 3.38Zm0-15.548c1.595 0 3.033-.399 4.316-1.196 1.317-.797 2.357-1.941 3.12-3.432.797-1.49 1.196-3.259 1.196-5.304 0-2.08-.399-3.865-1.196-5.356-.763-1.49-1.803-2.617-3.12-3.38-1.283-.797-2.721-1.196-4.316-1.196-1.595 0-3.051.399-4.368 1.196-1.317.797-2.375 1.941-3.172 3.432-.763 1.49-1.144 3.259-1.144 5.304 0 2.045.381 3.83 1.144 5.356.797 1.49 1.855 2.635 3.172 3.432 1.317.763 2.773 1.144 4.368 1.144Zm29.93 4.316c-2.531 0-4.802-.607-6.812-1.82-2.011-1.213-3.588-2.877-4.732-4.992-1.11-2.15-1.664-4.559-1.664-7.228 0-2.565.52-4.923 1.559-7.072 1.075-2.15 2.583-3.865 4.525-5.148 1.941-1.283 4.194-1.924 6.76-1.924 2.6 0 4.853.59 6.76 1.768 1.906 1.144 3.362 2.739 4.368 4.784 1.04 2.045 1.56 4.385 1.56 7.02 0 .52-.052.97-.156 1.352h-20.956c.104 2.01.589 3.71 1.456 5.096.866 1.387 1.958 2.427 3.276 3.12 1.352.693 2.756 1.04 4.212 1.04 3.397 0 6.014-1.595 7.852-4.784l3.744 1.82c-1.144 2.15-2.704 3.848-4.68 5.096-1.942 1.248-4.299 1.872-7.072 1.872Zm7.644-16.9c-.07-1.11-.382-2.219-.936-3.328-.555-1.11-1.439-2.045-2.652-2.808-1.179-.763-2.67-1.144-4.472-1.144-2.08 0-3.848.676-5.304 2.028-1.422 1.317-2.358 3.068-2.808 5.252h16.172Z" fill="url(#b)" /> <defs> <linearGradient id="b" x1="-57" y1="50" x2="278" y2="50" gradientUnits="userSpaceOnUse"> <stop stop-color="#217BFE" /> <stop offset=".335" stop-color="#078EFB" /> <stop offset=".7" stop-color="#AC87EB" /> <stop offset="1" stop-color="#EE4D5D" /> </linearGradient> </defs> </svg> <h3 class="gemini-intro-title gemini-type-t1" id="deploy-ai-across-mobile,-web,-and-embedded-applications" data-text=" Deploy AI across mobile, web, and embedded applications " tabindex="-1"> Deploy AI across mobile, web, and embedded applications </h3> </div> <ul class="gemini-benefits-list" data-viewport="once" data-viewport-threshold=".3"> <li class="gemini-benefit-list-item"> <div class="gemini-benefit-icon"> <svg xmlns="http://www.w3.org/2000/svg" width="27" height="22" fill="none"><path fill="url(#a)" d="M24.546 11.204 27 8.81c-4.578-4.465-10.886-6.165-16.814-5.16l3.167 3.089c4.05-.024 8.112 1.46 11.193 4.465ZM9.818 18.384l3.682 3.591 3.682-3.59c-2.025-1.988-5.326-1.988-7.364 0Zm12.273-4.788a12.193 12.193 0 0 0-4.566-2.788l3.707 3.614.859-.826ZM2.958 0l-1.73 1.688 3.742 3.65A19.27 19.27 0 0 0 0 8.81l2.455 2.393a15.557 15.557 0 0 1 5.117-3.327l2.75 2.681a12.131 12.131 0 0 0-5.413 3.04l2.455 2.394a8.7 8.7 0 0 1 6.001-2.465L22.055 22l1.73-1.688L2.957 0Z"/><defs><linearGradient id="a" x1="1.735" x2="21.923" y1="20.676" y2="6.714" gradientUnits="userSpaceOnUse"><stop stop-color="#64B8FB"/><stop offset="1" stop-color="#217BFE"/></linearGradient></defs></svg> </div> <div class="gemini-benefit-text"> <h4 class="gemini-type-t2" id="on-device" data-text="On device" tabindex="-1">On device</h4> <p class="gemini-type-b2 gemini-benefit-description">Reduce latency. Work offline. Keep your data local & private.</p> </div> </li> <li class="gemini-divider"></li> <li class="gemini-benefit-list-item"> <div class="gemini-benefit-icon"> <svg width="27" height="18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.5 2.25h20.25V0H4.5a2.257 2.257 0 0 0-2.25 2.25v12.375H0V18h15.75v-3.375H4.5V2.25ZM25.875 4.5h-6.75C18.506 4.5 18 5.006 18 5.625v11.25c0 .619.506 1.125 1.125 1.125h6.75c.619 0 1.125-.506 1.125-1.125V5.625c0-.619-.506-1.125-1.125-1.125ZM24.75 14.625h-4.5V6.75h4.5v7.875Z" fill="url(#a)"/><defs><linearGradient id="a" x1="1.735" y1="16.917" x2="19.142" y2="2.203" gradientUnits="userSpaceOnUse"><stop stop-color="#64B8FB"/><stop offset="1" stop-color="#217BFE"/></linearGradient></defs></svg> </div> <div class="gemini-benefit-text"> <h4 class="gemini-type-t2" id="cross-platform" data-text="Cross-platform" tabindex="-1">Cross-platform</h4> <p class="gemini-type-b2 gemini-benefit-description">Run the same model across Android, iOS, web, and embedded.</p> </div> </li> <li class="gemini-divider"></li> <li class="gemini-benefit-list-item"> <div class="gemini-benefit-icon"> <svg width="26" height="26" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.709 2.897a2.218 2.218 0 1 0 0 4.436 2.218 2.218 0 0 0 0-4.436ZM3.543 5.115a4.166 4.166 0 1 1 6.581 3.394l.565 1.32a4.938 4.938 0 0 1 2.31-.57c.505 0 .992.076 1.45.216l.391-1.024a2.922 2.922 0 1 1 1.352.556l-.42 1.1a4.966 4.966 0 0 1 2.05 2.947h2.426a2.923 2.923 0 0 1 5.752.731 2.922 2.922 0 0 1-5.752.73H17.95a4.955 4.955 0 0 1-2.117 3.775l.411.961a2.922 2.922 0 1 1-1.327.612l-.395-.923a4.959 4.959 0 0 1-5.908-2.405l-2.77.558a2.922 2.922 0 1 1-.352-1.42l2.634-.53a4.943 4.943 0 0 1 1.356-4.42l-.68-1.588a4.17 4.17 0 0 1-5.259-4.02ZM13 11.207a3.012 3.012 0 1 0 0 6.024 3.012 3.012 0 0 0 0-6.024Zm9.104 2.578a.975.975 0 1 1 1.949 0 .975.975 0 0 1-1.95 0Zm-5.34 7.367a.975.975 0 1 0 0 1.95.975.975 0 0 0 0-1.95ZM1.948 17.065a.975.975 0 1 1 1.95 0 .975.975 0 0 1-1.95 0ZM15.617 6.11a.975.975 0 1 1 1.95 0 .975.975 0 0 1-1.95 0Z" fill="url(#a)"/><defs><linearGradient id="a" x1="1.671" y1="23.599" x2="22.654" y2="10.842" gradientUnits="userSpaceOnUse"><stop stop-color="#64B8FB"/><stop offset="1" stop-color="#217BFE"/></linearGradient></defs></svg> </div> <div class="gemini-benefit-text"> <h4 class="gemini-type-t2" id="multi-framework" data-text="Multi-framework" tabindex="-1">Multi-framework</h4> <p class="gemini-type-b2 gemini-benefit-description">Compatible with JAX, Keras, PyTorch, and TensorFlow models. </p> </div> </li> <li class="gemini-divider"></li> <li class="gemini-benefit-list-item"> <div class="gemini-benefit-icon"> <svg width="28" height="28" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="m23.133 19.607-8.669 5.257-9.35-4.972 3.19-1.787 5.943 3.161h.531l5.477-3.321 2.878 1.662Zm-.927-2.845 4.854 2.803-12.53 7.598L.937 19.938l5.264-2.947-5.264-2.798 5.265-2.948-5.265-2.8L14.53.837l12.53 7.236-4.85 2.942 4.853 2.803-4.856 2.945Zm-11.9-5.523.072-.04-5.265-2.8 9.4-5.262 8.62 4.977-4.853 2.943.028.016-3.906 2.334-4.096-2.168Zm7.973 5.565-3.814 2.313-9.349-4.972 3.112-1.743 6.234 3.299 5.83-3.482 2.841 1.64-4.854 2.945Z" fill="url(#a)"/><defs><linearGradient id="a" x1="2.617" y1="25.579" x2="24.615" y2="13.279" gradientUnits="userSpaceOnUse"><stop stop-color="#64B8FB"/><stop offset="1" stop-color="#217BFE"/></linearGradient></defs></svg> </div> <div class="gemini-benefit-text"> <h4 class="gemini-type-t2" id="full-ai-edge-stack" data-text="Full AI edge stack" tabindex="-1">Full AI edge stack</h4> <p class="gemini-type-b2 gemini-benefit-description">Flexible frameworks, turnkey solutions, hardware accelerators</p> </div> </li> </ul> </div> </section> <section class="gemini-section-edge-features gemini-space-d180"> <div class="gemini-layout-max-width"> <div class="gemini-features-inner-padding"> <h2 class="gemini-type-h1 gemini-features-title gemini-space-d88" data-viewport="once" data-viewport-threshold=".3" id="ready-made-solutions-and-flexible-frameworks" data-text="Ready-made solutions and flexible frameworks" tabindex="-1">Ready-made solutions and flexible frameworks</h2> <div class="gemini-image-by-text-card gemini-layout-grid image-layout-left" data-viewport="once" data-viewport-threshold=".1"> <div class="gemini-card-text"> <h3 class="gemini-card-title gemini-type-h4 gemini-space-d16" id="low-code-apis-for-common-ai-tasks" data-text="Low-code APIs for common AI tasks" tabindex="-1">Low-code APIs for common AI tasks</h3> <p class="gemini-card-description gemini-type-b1 gemini-space-d24 gemini-text-color-grey-400">Cross-platform APIs to tackle common generative AI, vision, text, and audio tasks.</p> <a href="https://ai.google.dev/edge/mediapipe/solutions/guide" alt="Get started with MediaPipe tasks" class="gemini-btn gemini-tertiary gemini-has--icon gemini-type-t3" data-category="content_click" data-label="https://ai.google.dev/edge/mediapipe/solutions/guide" data-action="Get started with MediaPipe tasks"> <span> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <mask id="mask0_28372_1334" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="16" height="16"> <rect width="16" height="16" fill="url(#pattern0_28372_1334)"/> </mask> <g mask="url(#mask0_28372_1334)"> <rect x="0.53125" y="1.06641" width="14.1333" height="13.3333" fill="white"/> <rect x="0.53125" y="1.06641" width="14.1333" height="13.3333" fill="white"/> </g> <defs> <pattern id="pattern0_28372_1334" patternContentUnits="objectBoundingBox" width="1" height="1"> <use xlink:href="#image0_28372_1334" transform="scale(0.00416667)"/> </pattern> <image id="image0_28372_1334" width="240" height="240" xlink:href="data:image/png;base64,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"/> </defs> </svg> <span class="gemini-type-t3">Get started with MediaPipe tasks</span> </span> </a> </div> <div class="gemini-card-image"> <video autoplay loop muted playsinline aria-label="Feature 1" poster="/images/edge/feature-1.jpg"> <source src="/static/videos/edge/edge.mp4" type="video/mp4" /> </video> </div> </div> <div class="gemini-image-by-text-card gemini-layout-grid image-layout-right" data-viewport="once" data-viewport-threshold=".1"> <div class="gemini-card-text"> <h3 class="gemini-card-title gemini-type-h4 gemini-space-d16" id="deploy-custom-models-cross-platform" data-text="Deploy custom models cross-platform" tabindex="-1">Deploy custom models cross-platform</h3> <p class="gemini-card-description gemini-type-b1 gemini-space-d24 gemini-text-color-grey-400">Performantly run JAX, Keras, PyTorch, and TensorFlow models on Android, iOS, web, and embedded devices, optimized for traditional ML and generative AI.</p> <a href="https://ai.google.dev/edge/litert" alt="Get started with LiteRT" class="gemini-btn gemini-tertiary gemini-has--icon gemini-type-t3" data-category="content_click" data-label="https://ai.google.dev/edge/litert" data-action="Get started with LiteRT"> <span> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <mask id="mask0_28372_1334" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="16" height="16"> <rect width="16" height="16" fill="url(#pattern0_28372_1334)"/> </mask> <g mask="url(#mask0_28372_1334)"> <rect x="0.53125" y="1.06641" width="14.1333" height="13.3333" fill="white"/> <rect x="0.53125" y="1.06641" width="14.1333" height="13.3333" fill="white"/> </g> <defs> <pattern id="pattern0_28372_1334" patternContentUnits="objectBoundingBox" width="1" height="1"> <use xlink:href="#image0_28372_1334" transform="scale(0.00416667)"/> </pattern> <image id="image0_28372_1334" width="240" height="240" xlink:href="data:image/png;base64,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"/> </defs> </svg> <span class="gemini-type-t3">Get started with LiteRT</span> </span> </a> </div> <div class="gemini-card-image"> <img src="/static/images/edge/feature-2.jpg" alt="Feature 2"> </div> </div> <div class="gemini-image-by-text-card gemini-layout-grid image-layout-left" data-viewport="once" data-viewport-threshold=".1"> <div class="gemini-card-text"> <h3 class="gemini-card-title gemini-type-h4 gemini-space-d16" id="shorten-development-cycles-with-visualization" data-text="Shorten development cycles with visualization" tabindex="-1">Shorten development cycles with visualization</h3> <p class="gemini-card-description gemini-type-b1 gemini-space-d24 gemini-text-color-grey-400">Visualize your model’s transformation through conversion and quantization. Debug hotspots by overlaying benchmarks results.</p> <a href="https://ai.google.dev/edge/model-explorer" alt="Get started with Model Explorer" class="gemini-btn gemini-tertiary gemini-has--icon gemini-type-t3" data-category="content_click" data-label="https://ai.google.dev/edge/model-explorer" data-action="Get started with Model Explorer"> <span> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <mask id="mask0_28372_1334" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="16" height="16"> <rect width="16" height="16" fill="url(#pattern0_28372_1334)"/> </mask> <g mask="url(#mask0_28372_1334)"> <rect x="0.53125" y="1.06641" width="14.1333" height="13.3333" fill="white"/> <rect x="0.53125" y="1.06641" width="14.1333" height="13.3333" fill="white"/> </g> <defs> <pattern id="pattern0_28372_1334" patternContentUnits="objectBoundingBox" width="1" height="1"> <use xlink:href="#image0_28372_1334" transform="scale(0.00416667)"/> </pattern> <image id="image0_28372_1334" width="240" height="240" xlink:href="data:image/png;base64,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"/> </defs> </svg> <span class="gemini-type-t3">Get started with Model Explorer</span> </span> </a> </div> <div class="gemini-card-image"> <img src="/static/images/edge/feature-3.jpg" alt="Feature 1"> </div> </div> <div class="gemini-image-by-text-card gemini-layout-grid image-layout-right" data-viewport="once" data-viewport-threshold=".1"> <div class="gemini-card-text"> <h3 class="gemini-card-title gemini-type-h4 gemini-space-d16" id="build-custom-pipelines-for-complex-ml-features" data-text="Build custom pipelines for complex ML features" tabindex="-1">Build custom pipelines for complex ML features</h3> <p class="gemini-card-description gemini-type-b1 gemini-space-d24 gemini-text-color-grey-400">Build your own task by performantly chaining multiple ML models along with pre and post processing logic. Run accelerated (GPU & NPU) pipelines without blocking on the CPU. </p> <a href="https://ai.google.dev/edge/mediapipe/framework" alt="Get started with MediaPipe Framework" class="gemini-btn gemini-tertiary gemini-has--icon gemini-type-t3" data-category="content_click" data-label="https://ai.google.dev/edge/mediapipe/framework" data-action="Get started with MediaPipe Framework"> <span> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <mask id="mask0_28372_1334" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="16" height="16"> <rect width="16" height="16" fill="url(#pattern0_28372_1334)"/> </mask> <g mask="url(#mask0_28372_1334)"> <rect x="0.53125" y="1.06641" width="14.1333" height="13.3333" fill="white"/> <rect x="0.53125" y="1.06641" width="14.1333" height="13.3333" fill="white"/> </g> <defs> <pattern id="pattern0_28372_1334" patternContentUnits="objectBoundingBox" width="1" height="1"> <use xlink:href="#image0_28372_1334" transform="scale(0.00416667)"/> </pattern> <image id="image0_28372_1334" width="240" height="240" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAADwCAYAAAA+VemSAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAA8KADAAQAAAABAAAA8AAAAADV6CrLAAAR8UlEQVR4Ae2dT4gdRR7Hfz2z40RdB2VZSEI0CKsHJZ4MxFu8eJiAEAhzWRD2IGJOrqCX4ByiXj0aBpGcAvFhCCoZyMkcZaMXhRx2VQiIuizJysSsmejr3t+vX95kTOZPd1V1V3W/T8Ewb96r35/6VH+nqvt1V4lQIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQqEsgq2sQrf5gcI/8VDwrefG8FMWTkmW7pJDdZT6ZfK+/7eeSTGUfy4PZp7KwcDNarhsF7lP+Ik9oE3fDf6OObve99AV8crBTVvM39GB5QaT4Y0U8KyLZKdkxdVz+tvBjRZtmqvUh/xv5orL/qwKaqwgJ/hVB+VZLV8A2Yv1XD5xC/q4j7n1ODc3kuhRT78jeB96W+flVJx+uRl3Pf3l5Vi5fOyZZ/qr2wf1OGODvhK2OUZoCXjqj0+ObZ/TAeaZOYzavm32mo/Hh1kbjrudvs4Yb+VkddQ9szrTOJ/CvQ6tO3fQEvDTYJ8XwvIp3V52GbFs3k+8km56Xlxa+2rauT4Wu5//eh0/J8Ndzyn+PD4a7bOF/F5IQb6Ql4NF//n/of/6HQzTuLh92EM1O729sJO5D/qvDi8HFO+4I+I9JBPs9FcyTr6PB4F5ZHX7SmHgtPxtVbGpo53ehS9fzNybGJvTIu54z/NfTCPI6HQFfzV/Tg+fpIK3a0ome19nFmdCl6/mXTEKd824FF/5b0an7WRpT6Pc/2i2//u+fKmC3q531W31dp9J/CTaV7nr+5Vddw6/hX/FAsqvrIY+fimE3qpbGCPzbL/Z1UTviNQoWq/xucyMkDu91PX9jAf/qHR/6+Kke+a6a8Ufgpc9nJP/XvzWzh+7Krtk3VuRP03/2vmOr6/nb99VXhv9R1FVv0gjVK/APQDKBEfjb57QdbYvX0M2Vt2Z6Q+x4/nZ7avvihb/3cTdyEF/AeX4oUFvqu7H7qn1L5/MPwMCVIfxdya3ZxRewyGNr2bT/wm7K9y1dzz8EA1eGIWJ3nb8ru9IuvoAzedSrBX7Go6eZfHx0PX97qihe8Y/dff5e9OMLWIpHvFrgYzx+HNHHR9fzD8LAEWCQ2F0/fhzZ3TKLL+BCZvya4GNd+fHEzYN0Pf/NW9b8J5l+eeVbJpx/fAH7diD2fgRGiyH4+XC3/sHdFEsjgIA5Dmwlk1glZuxYbQ4aFwEHxdlJZ5ciZh0zdsRmhwuNgMOx7KYnW0MsVokZO1abA8dFwIGBds6dLQAoomtYtV5WysUHWw/br4AIuF/9Wb815eqdugBg60VjprZyaOsM/AMiYH+G3fdgq3faI3JtFYtlMSneBBCwN8IeOLCld231zraKxYq93G9bbW04DgJuGHBn3NvSu6KrRzZeNEYZq/FAExEAAU9EN1dopK2bbUvv2sJzTRXzbTHaXqO7qfYk4BcBJ9AJyaRg09rpmUONiNjEa8v6MnUO2t0IOCjOHjh78ciX5dK7QafTOm225XybXpO7B/jrNgEB1yU2CfVtlNw7d1DvtH3T6+p0eWVbfZgvRt5Gjpw/NOIVp90nMDpPXZSTg3dHCwA6bG42m8Dmct3viS1bgIC3xMOHt0bOozIYvLK2vWsXtxftaVci4J52bPBmje6aOq9+7YeSCAHOgRPpCNKAgAsBBOxCDRsIJEIAASfSEaQBARcCCNiFGjYQSIQAAk6kI0gDAi4EELALNWwgkAgBBJxIR5AGBFwIIGAXathAIBECCDiRjiANCLgQQMAu1LCBQCIEEHAiHUEaEHAhgIBdqGEDgUQIIOBEOoI0IOBCAAG7UMMGAokQQMCJdARpQMCFAM8Du1CbRJvB4J61B/qL4knJsl26u+/uEsVoi1LbafCS2H5Htl0Luy60cpQg4FYwdzjIycFOWc3fkCv5CyLrNkQv1u3NXcjj2kL7OSjD4qhc0b2WTpw+Ve6+wFpYjXY+U+hG8XbYuY24S6ffUvF+I4WKcr14t2/WnNZ/WVaHX8uJD47L8vLs9ibUcCGAgF2o9d1m6cwuuTq8IHlxTMV7n3NzC7lfREfvyysXdHG8nc5+MNyUAALeFM2EfrA02CfFzS/0/PaZcASKAzoaXxTzTQlKAAEHxdlxZzZK5vk5Fe+u4C0pZI8Uw2VG4rBkEXBYnt31Nhjcq6PkJ3ru+nBjjTAR38jPck4cjjACDsey256u5q/pyPt0843Q6fTla8eajzMZERDwZPTz1q18/yP9Prd4fetKAT/N8leZSofhiYDDcOy2l99+WdTRV68Yt1Qs1o18saVovQ6DgHvdvRUat/T5jH5dtFChZuAquteSfddM8SKAgL3w9cH42+e0FQ9FaMlceWtmhMB9ComA+9SbLm3J80MuZkFs8uL5IH4m2AkCnuDOv9X0xyIieCJi7F6ERsC96EaPRmTyqIe1r+noaSZfLxNsj4AnuPNHTS8eiYZg/DhitAS6HzgBAWc/R8OYZdeixU4lcCEz8VJZ93hivCQ6HTm+gEcPg8eC+EOswMSFQAgC8QUs8n2Ihjj6iBnbMWXMIHCbQAoCvnQ7ndZfxYzdemMJ2D8C8QVsayjFKjFjx2ozcXtFIL6AbQE00TWU2i8r5eJr7cclIgSCEYgv4HL1wuxUsBZVdqQxWTmxMi0qpkkgvoCNy46p45LJ9dYQWSyLSYFAxwmkIWBberSYeqc1lhaL5U5bw02g5gikIWBr394H3hbJPmuuqWPPGqOMNf6b3xDoLoF0BDw/v6rT2sM6lf6uMZzm22JYLAoEekAgHQEbTJvWTs8cakTEJt5sep6pcw+OWpqwRiAtAVtaLx75Uman94edTuu02Xy+tPDVWst5AYEeEEhPwAbVRuK9cwdFpt70ujpdXtlWH+aLi1Y9OFxpwp0E0t3cbHSeuqirF747WgBN11AS0T13KhW9MUS/553Vr4oQbiVgVOomgXQFPOY5EuBRXQDtlbXtLUVsJYfdupIi21uOOfF7IgmkL+Bxt4zumjqvf9oPBQIQUAJpngPTNRCAQCUCCLgSJipBIE0CCDjNfiErCFQigIArYaISBNIkgIDT7BeygkAlAgi4EiYqQSBNAgg4zX4hKwhUIoCAK2GiEgTSJICA0+wXsoJAJQIIuBImKkEgTQIIOM1+ISsIVCKAgCthohIE0iSAgNPsF7KCQCUCCLgSJipBIE0CCDjNfiErCFQi0J3ngQeDe9Ye6C+KJyXLdvFAf6U+plKPCaQv4JODnbKavyFX8hdE1m0IXRS3u6WQx/UP+zkow+KoXNG9lk6cPlXuvsCSOrc58ap3BNKdQtuIu3T6LRXvN1KoKNeLd/tu0LWzipdldfi1nPjguCwvz25vQg0IdI9AmgJeOrNLrg4vSF4cU/He54y1kPtFdPS+vHJBF8fb6ewHQwgkSiA9AS8N9klx8ws9v30mHLPigI7GF8V8UyDQIwJpCdhGyTw/p+LdFZxxIXukGC4zEgcni8OIBNIR8GBwr46Sn+i568ON8TAR38jPck7cGGEct0wgHQFfzV/Tkffp5tuv0+nL1441H4cIEGieQBoCfv8jXaC9eL355t6KkOWvMpVujTaBGiSQhoB/+2VRR1+9YtxSsVg38sWWohEGAo0RiC/gpc9n9OuihcZauKlj3WvJvmumQKDDBOILWL59Tvk9FIHhXHlrZoTAhIRAKALxBZznh0I1prafvHi+tg0GEEiIQHwBizwWkYftckiBQGcJxBdwJo9GpDfanjRiAoSGgA+B+AKW4hGfBnjZjvcX9nKCMQTiEYgv4EJm4jV/3eOJzklkPzub+hpm2TVfF9h3m0B8AXebn0gm30dswg8RYxM6AQII2L8TYgo4Zmx/cnjwJoCAvRHKJX8Xzh5ixnZOGsNwBBCwL8up7GNfF872MWM7J41hSAII2Jfmg9mn6mLF142D/YqMYjuYYtIXAgjYtycXFm7qlaxTvm7q22vMMnZ9Syz6QwABh+jLHVPH9Wr09RCuKvmwWBaTMvEEEHCIQ8CWri2m3gnhqpIPi8VyuZVQ9b0SAg7Vw3sfeFun0p+Fcre5H41Rxtq8Bp9MDgEEHKqv5+dXdVp7WKfS34VyeZcf820xLBYFAkoAAYc8DGxaOz1zqBERm3iz6XmmziE7rPu+EHDoPnzxyJcyO70/7HRap83m86WFr0Kni79uE0DATfSfjcR75w7qBOdNr6vT5ZVt9WG+uGjVRE913mf6m5t1FfHoPHVRV798d7SAnq7BJaJ7NlUqemOIfs87q18VIdxKwCa1EgJuuudHAjyqC+i9srY9qoitBLJbV+IcLSgweqLJHky4JHZ7pN1hxU0aTfdML/wj4La6cSTI8xrOfigQCEKAc+AgGHECgTgEEHAc7kSFQBACCDgIRpxAIA4BBByHO1EhEIQAAg6CEScQiEMAAcfhTlQIBCGAgINgxAkE4hBAwHG4ExUCQQgg4CAYcQKBOAQQcBzuRIVAEAIIOAhGnEAgDgEEHIc7USEQhAACDoIRJxCIQwABx+FOVAgEIYCAg2DECQTiEOB54La4Dwb38EB/W7AnJw4CbrqvTw52lkvqXBluvqROIY9rGvZzUIbFUbmiey2dOH2q3H2BJXWa7qFO+2cK3VT3LS/PyokPjsvq8GuR4mUNU3U9LMtI66qN2ZoP80WBwAYEEPAGULzfslH38soFkfwNXffqfmd/pa36MF/mkwKBOwgg4DuAeP/53odP6ch5UUfQA96+1hyoL/O5NNi39hYvIKAEEHDIw8BGyeGv53TU3RPSbenLfBbDZUbi4GQ77RABh+o+O0+9kZ9tRLzjHE3EFoNz4jGRif+NgEMdApevHQs7bd4sMZ1Ol7E2+5z3J4kAAg7R2zZ1zvJXQ7iq5MNicVGrEqq+V0LAIXr4Rr7odbW5bg52ddpiUiaeAAL2PQTsDisp9z3y9VTTXmOWsWuaUb1XBBCwb3f+VDyrLurcpOEbcWw/V96aOf6L3xNJAAH7dntePO/rwtk+ZmznpDEMSQAB+9O0nQZjlZixY7WZuOsIIOB1MBxfjrYIdTT2NIsZ2zN1zEMQQMC+FMd7/Pr6cbGPGdslX2yCE0hAwNnPwVtV1WGWXataNcl6mX555V26zr/r+ft1YHwBj3an92uFu/UP7qa3LMnfByH8feipbXwBi3zv2QYf8xCxQ/hwbUOI2CF8kL8rAU+7FAR8ybMNPuYhYofw4dqGELFD+CB/VwKedvEFPJV97NkGd/MQsUP4cG1BiNghfJC/KwFvu/gCfjD7VFux4t2S+g5WZBS7vuV6C/JfT6POa/jXobVJ3fgCXli4KZKd2iS/Bt/WmGVszxDk7wgQ/o7gfmcWX8CWzo6p45LJ9d9l1uQfFstihirkX48k/Ovx2qJ2GgK2pVOLqXe2yDPsRxYr5HKt5F+vf+Bfj9cWtdMQsCW494G3dSr92Ra5BvpIY5SxArkbuyH/MYltfsN/G0C1Pk5HwPPzqzqtPaxT6e9qtaBOZfNtMSxW6EL+2xOF//aMatZIR8CWuE1Fp2cONSJiO3iy6fmgU+c7YZP/nURu/w3/2ywCvkpLwNawF498KbPT+8NOp3XaZj5fWvgqILuNXZH/BlzgvwGUIG9lQbw04cSWTrXVF20BN9fdDexqp10wsfPTJqbNW7Wb/PV/MPy3OkRCfJaugMets9UXywXcynWnqi5dozeG6PeM9vVOyKvN45zq/Cb/H+vgCl636/y3AZK+gMcN6Pr2nOQ/7sk4v7vOPw41okIAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEekng/2YQf9qNUIDmAAAAAElFTkSuQmCC"/> </defs> </svg> <span class="gemini-type-t3">Get started with MediaPipe Framework</span> </span> </a> </div> <div class="gemini-card-image"> <img src="/static/images/edge/feature-4.jpg" alt="Feature 2"> </div> </div> </div> </section> <section class="gemini-tools-header gemini-layout-max-width gemini-layout-grid gemini-space-d120"> <div class="gemini-section-header gemini-space-d32"> <h2 class="gemini-type-h1" id="the-tools-and-frameworks-that-power-googles-apps" data-text="The tools and frameworks that power Google's apps" tabindex="-1">The tools and frameworks that power Google's apps</h2> </div> <div class="gemini-about-tools"> <p class="gemini-type-b1 gemini-space-d32">Explore the full AI edge stack, with products at every level — from low-code APIs down to hardware specific acceleration libraries.</p> <div class="gemini-separator gemini-space-d32"></div> <div class="gemini-diagram"> <div class="gemini-image"> <img src="/static/images/edge/tools-diagram.png"> </div> </div> </div> </section> <section class="gemini-tools-list gemini-layout-max-width gemini-space-d180"> <div class="gemini-background-wrapper gemini-background-dark"> <div class="gemini-large-section"> <div class="gemini-tool-header gemini-layout-grid gemini-space-d120"> <div class="gemini-section-cta gemini-left" style=""> <article class="gemini-cta " data-viewport="once" data-viewport-threshold="0.3" > <div class="gemini-section gemini-section__subtitle"> </div> <div class="gemini-section gemini-section__title"> <h2 class="gemini-tools-title gemini-type-h3 gemini-space-d16" id="mediapipe-tasks" data-text=" MediaPipe Tasks " tabindex="-1"> <img src="/static/images/edge/media-pipe-tasks.svg"> <span>MediaPipe Tasks</span> </h2> </div> <div class="gemini-section gemini-section__copy"> <p class="gemini-type-b1">Quickly build AI features into mobile and web apps using low-code APIs for common tasks spanning generative AI, computer vision, text, and audio.</p> </div> <div class="gemini-section gemini-section__buttons"> </div> </article> </div> <div class="gemini-right"> <div class="gemini-list-item"> <p class="gemini-space-d8 gemini-type-t2">Generative AI</p> <p class="gemini-type-b2">Integrate generative language and image models directly into your apps with ready-to-use APIs.</p> </div> <div class="gemini-list-item"> <p class="gemini-space-d8 gemini-type-t2">Vision</p> <p class="gemini-type-b2">Explore a large range of vision tasks spanning segmentation, classification, detection, recognition, and body landmarks.</p> </div> <div class="gemini-list-item"> <p class="gemini-space-d8 gemini-type-t2">Text & audio</p> <p class="gemini-type-b2">Classify text and audio across many categories including language, sentiment, and your own custom categories.</p> </div> </div> </div> <div class="gemini-layout-grid"> <div class="gemini-links-grid"> <p class="gemini-type-l1">Get started</p> <div class="gemini-tool-link"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-compact "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://ai.google.dev/edge/mediapipe/solutions/guide" data-category="content_click" data-label="https://ai.google.dev/edge/mediapipe/solutions/guide" data-action="Tasks documentation"> <div class="gemini-text-wrapper"> <span class="gemini-icon-wrapper"> <img src="/static/images/edge/tasks-documentation.svg" alt="tasks documentation icon"> </span> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t2" id="tasks-documentation" data-text="Tasks documentation" tabindex="-1">Tasks documentation</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-b2">Find all of our ready-made low-code MediaPipe Tasks with documentation and code samples.</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="gemini-tool-link"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-compact "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://ai.google.dev/edge/mediapipe/solutions/genai/llm_inference" data-category="content_click" data-label="https://ai.google.dev/edge/mediapipe/solutions/genai/llm_inference" data-action="Generative AI Tasks"> <div class="gemini-text-wrapper"> <span class="gemini-icon-wrapper"> <img src="/static/images/edge/generative-ai-tasks.svg" alt="Generative AI tasks icon"> </span> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t2" id="generative-ai-tasks" data-text="Generative AI tasks" tabindex="-1">Generative AI tasks</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-b2">Run LLMs and diffusion models on the edge with our MediaPipe generative AI tasks.</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="gemini-tool-link"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-compact "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://goo.gle/mediapipe-studio" data-category="content_click" data-label="https://goo.gle/mediapipe-studio" data-action="Try demos"> <div class="gemini-text-wrapper"> <span class="gemini-icon-wrapper"> <img src="/static/images/edge/try-demos.svg" alt="try demos icon"> </span> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t2" id="try-demos" data-text="Try demos" tabindex="-1">Try demos</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-b2">Explore our library of MediaPipe Tasks and try them yourself.</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="gemini-tool-link"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-compact "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://ai.google.dev/edge/mediapipe/solutions/model_maker" data-category="content_click" data-label="https://ai.google.dev/edge/mediapipe/solutions/model_maker" data-action="Model maker documentation"> <div class="gemini-text-wrapper"> <span class="gemini-icon-wrapper"> <img src="/static/images/edge/model-maker-documentation.svg" alt="Model maker documentation icon"> </span> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t2" id="model-maker-documentation" data-text="Model maker documentation" tabindex="-1">Model maker documentation</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-b2">Customize the models in our MediaPipe Tasks with your own data.</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="gemini-background-wrapper gemini-background-dark"> <div class="gemini-small-section gemini-layout-grid"> <div class="gemini-section-cta gemini-left" style=""> <article class="gemini-cta " data-viewport="once" data-viewport-threshold="0.3" > <div class="gemini-section gemini-section__subtitle"> </div> <div class="gemini-section gemini-section__title"> <h2 class="gemini-tools-title gemini-type-h3 gemini-space-d16" id="mediapipe-framework" data-text=" MediaPipe Framework " tabindex="-1"> <img src="/static/images/edge/media-pipe-tasks.svg"> <span>MediaPipe Framework</span> </h2> </div> <div class="gemini-section gemini-section__copy"> <p class="gemini-type-b1">A low level framework used to build high performance accelerated ML pipelines, often including multiple ML models combined with pre and post processing.</p> </div> <div class="gemini-section gemini-section__buttons"> </div> </article> </div> <div class="gemini-right"> <a class="gemini-btn gemini-tertiary gemini-type-t3 gc-analytics-event" data-category="content_click" data-label="https://ai.google.dev/edge/mediapipe/framework" data-action="Learn more" href="https://ai.google.dev/edge/mediapipe/framework" rel="" > <span>Get started</span> </a> </div> </div> </div> <div class="gemini-background-wrapper gemini-background-dark"> <div class="gemini-large-section"> <div class="gemini-tool-header gemini-layout-grid gemini-space-d120"> <div class="gemini-section-cta gemini-left" style=""> <article class="gemini-cta " data-viewport="once" data-viewport-threshold="0.3" > <div class="gemini-section gemini-section__subtitle"> </div> <div class="gemini-section gemini-section__title"> <h2 class="gemini-tools-title gemini-type-h3 gemini-space-d16" id="litert" data-text=" LiteRT " tabindex="-1"> <img src="/static/images/edge/lite-rt-logo.svg"> <span>LiteRT</span> </h2> </div> <div class="gemini-section gemini-section__copy"> <p class="gemini-type-b1">Deploy AI models authored in any framework across mobile, web, and microcontrollers with optimized hardware specific acceleration.</p> </div> <div class="gemini-section gemini-section__buttons"> </div> </article> </div> <div class="gemini-right"> <div class="gemini-list-item"> <p class="gemini-space-d8 gemini-type-t2">Multi-framework</p> <p class="gemini-type-b2">Convert models from JAX, Keras, PyTorch, and TensorFlow to run on the edge.</p> </div> <div class="gemini-list-item"> <p class="gemini-space-d8 gemini-type-t2">Cross-platform</p> <p class="gemini-type-b2">Run the same exact model on Android, iOS, web, and microcontrollers with native SDKs.</p> </div> <div class="gemini-list-item"> <p class="gemini-space-d8 gemini-type-t2">Lightweight & fast</p> <p class="gemini-type-b2">LiteRT’s efficient runtime takes up only a few megabytes and enables model acceleration across CPU, GPU, and NPUs.</p> </div> </div> </div> <div class="gemini-layout-grid"> <div class="gemini-links-grid"> <p class="gemini-type-l1">Get started</p> <div class="gemini-tool-link"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-compact "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://ai.google.dev/edge/litert/models/trained" data-category="content_click" data-label="https://ai.google.dev/edge/litert/models/trained" data-action="Pick a model"> <div class="gemini-text-wrapper"> <span class="gemini-icon-wrapper"> <img src="/static/images/edge/pick-a-model-task.svg" alt="Pick a model icon"> </span> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t2" id="pick-a-model" data-text="Pick a model" tabindex="-1">Pick a model</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-b2">Pick a new model, retrain an existing one, or bring your own.</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="gemini-tool-link"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-compact "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://ai.google.dev/edge/litert/models/convert_to_flatbuffer" data-category="content_click" data-label="https://ai.google.dev/edge/litert/models/convert_to_flatbuffer" data-action="Convert"> <div class="gemini-text-wrapper"> <span class="gemini-icon-wrapper"> <img src="/static/images/edge/convert-task.svg" alt="convert icon"> </span> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t2" id="convert" data-text="Convert" tabindex="-1">Convert</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-b2">Convert your JAX, Keras, PyTorch, or Tensorflow model into an optimized LiteRT model.</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="gemini-tool-link"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-compact "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://ai.google.dev/edge/litert#integrate-model" data-category="content_click" data-label="https://ai.google.dev/edge/litert#integrate-model" data-action="Deploy"> <div class="gemini-text-wrapper"> <span class="gemini-icon-wrapper"> <img src="/static/images/edge/deploy-task.svg" alt="deploy icon"> </span> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t2" id="deploy" data-text="Deploy" tabindex="-1">Deploy</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-b2">Run a LiteRT model on Android, iOS, web, and microcontrollers.</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="gemini-tool-link"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-compact "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://ai.google.dev/edge/litert/models/model_optimization" data-category="content_click" data-label="https://ai.google.dev/edge/litert/models/model_optimization" data-action="Quantize"> <div class="gemini-text-wrapper"> <span class="gemini-icon-wrapper"> <img src="/static/images/edge/quantize-task.svg" alt="Quantize icon"> </span> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t2" id="quantize" data-text="Quantize" tabindex="-1">Quantize</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-b2">Compress your model to reduce latency, size, and peak memory.</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="gemini-background-wrapper gemini-background-dark"> <div class="gemini-small-section gemini-layout-grid"> <div class="gemini-section-cta gemini-left" style=""> <article class="gemini-cta " data-viewport="once" data-viewport-threshold="0.3" > <div class="gemini-section gemini-section__subtitle"> </div> <div class="gemini-section gemini-section__title"> <h2 class="gemini-tools-title gemini-type-h3 gemini-space-d16" id="model-explorer" data-text=" Model Explorer " tabindex="-1"> <img src="/static/images/edge/model-explorer.svg"> <span>Model Explorer</span> </h2> </div> <div class="gemini-section gemini-section__copy"> <p class="gemini-type-b1">Visually explore, debug, and compare your models. Overlay performance benchmarks and numerics to pinpoint troublesome hotspots.</p> </div> <div class="gemini-section gemini-section__buttons"> </div> </article> </div> <div class="gemini-right"> <a class="gemini-btn gemini-tertiary gemini-type-t3 gc-analytics-event" data-category="content_click" data-label="https://ai.google.dev/edge/model-explorer" data-action="Learn more" href="https://ai.google.dev/edge/model-explorer" rel="" > <span>Get started</span> </a> </div> </div> </div> </section> <div class="gemini-layout-max-width gemini-space-d180"> <div class="gemini-background-wrapper gemini-background-dark-blue" style="--gemini-wrapper-padding-top: 120px 0"> <div class="gemini-section-cta gemini-space-d88" style=""> <article class="gemini-cta " data-viewport="once" data-viewport-threshold="0.3" > <div class="gemini-section gemini-section__subtitle"> </div> <div class="gemini-section gemini-section__title"> <h2 class="gemini-type-d4 gemini-space-d24" id="gemini-nano-in-android-chrome" data-text="Gemini Nano in Android &amp; Chrome" tabindex="-1">Gemini Nano in Android &amp; Chrome</h2> </div> <div class="gemini-section gemini-section__copy"> <p class="gemini-type-b1 gemini-space-d32">Build generative AI experiences using Google's most powerful, on-device model</p> </div> <div class="gemini-section gemini-section__buttons"> <a class="gemini-btn gemini-secondary gemini-type-btn gc-analytics-event" data-category="content_click" data-label="https://developer.android.com/ai/aicore" data-action="Learn more about Android AICore" href="https://developer.android.com/ai/aicore" rel="" > <span>Learn more about Android AICore</span> </a> <a class="gemini-btn gemini-secondary gemini-type-btn gc-analytics-event" data-category="content_click" data-label="https://developer.chrome.com/docs/ai" data-action="Learn more about Chrome Built-In AI" href="https://developer.chrome.com/docs/ai" rel="" > <span>Learn more about Chrome Built-In AI</span> </a> </div> </article> </div> <div class="gemini-nano-image-wrapper"> <div class="gemini-nano-image"> <picture> <img src="/static/images/edge/nano-characters.png" alt="nano characters"> </picture> </div> </div> </div> </div> <section class="gemini-blog gemini-layout-max-width"> <div class="gemini-section-cta gemini-space-d64" style=""> <article class="gemini-cta " data-viewport="once" data-viewport-threshold="0.3" > <div class="gemini-section gemini-section__subtitle"> </div> <div class="gemini-section gemini-section__title"> <h2 class="gemini-type-h1" id="recent-videos-and-blog-posts" data-text="Recent videos and blog posts" tabindex="-1">Recent videos and blog posts</h2> </div> <div class="gemini-section gemini-section__copy"> </div> <div class="gemini-section gemini-section__buttons"> </div> </article> </div> <div class="gemini-blog-layout gemini-layout-grid" style="--gemini-article-amount: 0"> <div class="article"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-large gemini-has-image "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://www.youtube.com/watch?v=EpKghZYqVW4" data-category="content_click" data-label="https://www.youtube.com/watch?v=EpKghZYqVW4" data-action="A walkthrough for Android’s on-device GenAI solutions "> <div class="gemini-media-wrapper"> <img src="/static/images/edge/ai-on-android-hero.jpg" alt="hero image for video"> </div> <div class="gemini-text-wrapper"> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t1 gemini-space-d40" id="a-walkthrough-for-android’s-on-device-genai-solutions" data-text="A walkthrough for Android’s on-device GenAI solutions " tabindex="-1">A walkthrough for Android’s on-device GenAI solutions </h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-l1">1 October 2024</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="article"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-large "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://android-developers.googleblog.com/2024/10/bring-your-ai-model-to-android-devices.html" data-category="content_click" data-label="https://android-developers.googleblog.com/2024/10/bring-your-ai-model-to-android-devices.html" data-action="How to bring your AI Model to Android devices"> <div class="gemini-text-wrapper"> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t1 gemini-space-d40" id="how-to-bring-your-ai-model-to-android-devices" data-text="How to bring your AI Model to Android devices" tabindex="-1">How to bring your AI Model to Android devices</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-l1">2 October 2024</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="article"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-large "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://android-developers.googleblog.com/2024/10/gemini-nano-experimental-access-available-on-android.html" data-category="content_click" data-label="https://android-developers.googleblog.com/2024/10/gemini-nano-experimental-access-available-on-android.html" data-action="Gemini Nano is now available on Android via experimental access"> <div class="gemini-text-wrapper"> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t1 gemini-space-d40" id="gemini-nano-is-now-available-on-android-via-experimental-access" data-text="Gemini Nano is now available on Android via experimental access" tabindex="-1">Gemini Nano is now available on Android via experimental access</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-l1">1 October 2024</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> <div class="article"> <div class="gemini-card-arrow gemini-theme-dark gemini-layout-large "> <div class="gemini-with-hovergemini-gradient-CTA gemini-gradient-CTA--blue "> <div class="gemini-gradient-CTA_wrapper"> <div class="gemini-gradient-CTA__inner gemini-gradient-CTA-padding--large"> <a class="gemini-card-inner gemini-reset-link" href="https://developers.googleblog.com/en/tensorflow-lite-is-now-litert" data-category="content_click" data-label="https://developers.googleblog.com/en/tensorflow-lite-is-now-litert" data-action="TensorFlow Lite is now LiteRT"> <div class="gemini-text-wrapper"> <div class="gemini-card-copy"> <div class="gemini-model-title gemini-space-d8"> <h3 class="gemini-type-t1 gemini-space-d40" id="tensorflow-lite-is-now-litert" data-text="TensorFlow Lite is now LiteRT" tabindex="-1">TensorFlow Lite is now LiteRT</h3> </div> <div class="gemini-model-copy"> <p class="gemini-type-l1">4 September 2024</p> </div> </div> <div class="gemini-arrow-link"> <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5.81436 5.81455L5.81436 7.64242L13.0545 7.6489L5.16617 15.5373L6.46254 16.8336L14.3509 8.94527L14.3574 16.1854L16.1853 16.1854V5.81455H5.81436Z" fill="#368EFE"/> </svg> </div> </div> </a> </div> </div> </div> </div> </div> </div> </section> </devsite-gemini-page> </div> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Google AI Edge" product-id="5336252" bucket="documentation" context="" version="t-devsite-webserver-20241114-r00-rc02.464921008191574316" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/touchicon-180-new.png" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],[],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[]</script> <script type="application/json" tag-management>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [], &#34;ga4p&#34;: [], &#34;gtm&#34;: [{&#34;id&#34;: &#34;GTM-TC2MQKS8&#34;, &#34;purpose&#34;: 0}], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;marketing&#34;, &#34;projectName&#34;: &#34;Google AI Edge&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;googledevai&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="ahHc+oQ/iYcx8mYynRFCv0Hnct7qqZ"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/js/app_loader.js', '[59,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai","https://googledevai-dot-devsite-v2-prod-3p.appspot.com",1,null,["/_pwa/googledevai/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/googledevai/images/favicon-new.png","/_static/googledevai/images/lockup-new.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyCNm9YxQumEXwGJgTDjxoxXK6m1F-9720Q","AIzaSyCc76DZePGtoyUjqKrLdsMGk_ry7sljLbY","ai.google.dev","AIzaSyB9bqgQ2t11WJsOX8qNsCQ6U-w91mmqF-I","AIzaSyAdYnStPdzjcJJtQ0mvIaeaMKj7_t6J_Fg",null,null,null,["Concierge__enable_pushui","Profiles__enable_profile_collections","Cloud__enable_cloud_shell","Search__enable_ai_eligibility_checks","TpcFeatures__enable_mirror_tenant_redirects","Profiles__enable_complete_playlist_endpoint","Cloud__enable_cloudx_ping","TpcFeatures__enable_required_headers","Cloud__enable_cloudx_experiment_ids","MiscFeatureFlags__developers_footer_dark_image","Experiments__reqs_query_experiments","EngEduTelemetry__enable_engedu_telemetry","MiscFeatureFlags__enable_variable_operator","MiscFeatureFlags__developers_footer_image","Profiles__enable_completecodelab_endpoint","MiscFeatureFlags__emergency_css","Search__enable_dynamic_content_confidential_banner","DevPro__enable_cloud_innovators_plus","MiscFeatureFlags__enable_explain_this_code","Profiles__enable_release_notes_notifications","Cloud__enable_cloud_dlp_service","Cloud__enable_free_trial_server_call","Cloud__enable_cloud_facet_chat","Profiles__enable_dashboard_curated_recommendations","MiscFeatureFlags__enable_firebase_utm","Cloud__enable_llm_concierge_chat","Cloud__enable_legacy_calculator_redirect","DevPro__enable_developer_subscriptions","Profiles__enable_public_developer_profiles","Profiles__enable_page_saving","Analytics__enable_clearcut_logging","CloudShell__cloud_code_overflow_menu","OnSwitch__enable","MiscFeatureFlags__enable_view_transitions","Cloud__enable_cloud_shell_fte_user_flow","BookNav__enable_tenant_cache_key","Profiles__enable_recognition_badges","CloudShell__cloud_shell_button","Search__enable_suggestions_from_borg","Profiles__enable_developer_profiles_callout","Search__enable_page_map","MiscFeatureFlags__enable_project_variables","Profiles__require_profile_eligibility_for_signin","Profiles__enable_awarding_url"],null,null,"AIzaSyA58TaKli1DculwmAmbpzLVGuWc8eCQgQc","https://developerscontentserving-pa.googleapis.com","AIzaSyDWBU60w0P9hEkr29kkksYs8Z7gvZ8u_wc","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[59,"googledevai","Google AI for Developers","ai.google.dev",null,"googledevai-dot-devsite-v2-prod-3p.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],null,null,null,null,[1,null,1],[1,1,null,1,1]],null,[73,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,1,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],[1,1]],[[null,null,null,null,null,["GTM-TC2MQKS8"],null,null,null,null,null,[["GTM-TC2MQKS8",1]],1]],null,4]]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10