Quick map of the page
- Head
- Complete SEO & social cards (OpenGraph + Twitter), canonical,
hreflangalternates. - JSON-LD
WebSiteschema. - CSP nonces on third-party scripts (keep those if you have a CSP).
- Fonts preconnect + Google Sans families; one compiled CSS:
about_google-7.0.13/styles/default/All.min.css. - GTM bootstraps (
GTM-WQZB4J) + dataLayer initializer. - RSS link.
- Complete SEO & social cards (OpenGraph + Twitter), canonical,
- Header
- “Skip to content” link, responsive glue header, logo, primary nav (About / Products / Company Info / News).
- Hero
- “Ambient” muted looping video with a custom play/pause control (not the native controls).
- Promos & modules
- Big headline tout (“Everything we announced…”), button to the blog.
- Video module (YouTube iframe loader + image preview with play overlay).
- Product cards (Pixel 10 / 10 Pro / 10 Pro XL) using
<picture>+srcsetfromgstaticwithfcrop64params. - Foldable hero with full-bleed image.
- Carousel sections (“See what’s new in AI on Pixel”) with slide navigation.
- Social promo carousel (four short silent videos + “See more” linking to YouTube shorts).
- Newsletter callout card (“Get the latest news…”).
- Footer
- Four link columns (Resources, Outreach & initiatives, Research & technology, More about us), global links (Privacy, Terms, Help), and a locale
<select>.
- Four link columns (Resources, Outreach & initiatives, Research & technology, More about us), global links (Privacy, Terms, Help), and a locale
- Utilities
- Cookie notification bar (
data-glue-cookie-notification-bar-category="2A"). - A “hats” survey widget with a public API token in
data-api-token(intended for client-side use on this site).
- Cookie notification bar (
Notable implementation patterns (and a few fixes)
- Ambient/hero video The markup uses custom controls; for autoplay to actually start on mobile you need boolean attributes, not
"false"strings:<!-- Better: autoplay is boolean; combine muted + playsinline for iOS --> <video class="glue-ambient-video__container" autoplay muted loop playsinline preload="auto" aria-label="The latest Pixel devices"> <source src=".../mbg25-about-hero.mp4" type="video/mp4" /> </video>Then toggle via JS to “pause” rather than removingautoplay. - Responsive images Everywhere uses
<picture>with multiplesrcsets andfcrop64crop windows. If you copy this pattern, addloading="lazy"to non-critical images and keep meaningfulalt. - Tracking & UTMs Links include
utm_*anddata-trackingJSON blobs for analytics. If you don’t need analytics parity, strip thedata-trackingattributes and UTMs. - Accessibility
- Good: skip link, ARIA labels on buttons, headline hierarchy.
- Check: contrast in light-blue sections; ensure the video buttons receive focus and have visible focus styles.
- Performance tips
- You already preconnect to fonts; consider preloading only the weights you use.
- Defer non-critical JS (
asyncis used, continue the pattern). - Use a lite YouTube embed (poster + iframe on click) wherever possible; this template already defers the iframe via the “preview container”.
- CSP & nonces You’re attaching
nonce="a6kQUysB3eDI0E_tczP68Q"on external<script>s. If you have a Content-Security-Policy, make sure the nonce value is generated per request on your server. - Cookie banner / consent The glue cookie bar is set to category 2A; confirm that matches your consent categories and region logic.
- Internationalization Proper
rel="alternate" hreflang="…"set and a footer language switcher that navigates to locale URLs (not an in-page toggle). If you add locales, update both. - “Hats” survey token The
data-api-tokenunder.js-hatsis a public token for that survey. If you don’t run the survey, remove the div or the token.
Minimal, portable hero section (HTML + tiny JS)
<section class="hero">
<video class="hero__video" autoplay muted playsinline loop preload="auto" aria-label="Pixel highlights">
<source src="https://www.gstatic.com/marketing-cms/99/73/2ba747bb499fbfa498897b0dcea7/mbg25-about-hero.mp4" type="video/mp4">
</video>
<button class="hero__toggle" aria-pressed="true" aria-label="Pause background video">
<span class="icon icon--pause" aria-hidden="true">❚❚</span>
<span class="sr-only">Pause</span>
</button>
<div class="hero__copy">
<h1>Everything we announced at Made by Google</h1>
<p>Meet the newest members of the Pixel family …</p>
<a class="btn" href="https://blog.google/products/pixel/made-by-google-2025">Let’s go</a>
</div>
</section>
<script>
(function () {
const btn = document.querySelector('.hero__toggle');
const vid = document.querySelector('.hero__video');
btn.addEventListener('click', () => {
const playing = !vid.paused && !vid.ended;
if (playing) { vid.pause(); btn.setAttribute('aria-pressed','false'); btn.setAttribute('aria-label','Play background video'); }
else { vid.play().catch(()=>{}); btn.setAttribute('aria-pressed','true'); btn.setAttribute('aria-label','Pause background video'); }
});
}());
</script>
(Style with position: absolute overlays, add focus-visible outline, etc.)
If you’re planning to…
- Re-use this as a template: strip the GTM,
data-trackingJSON, and UTMs; keep structured data; audit fonts (fewer weights); lazy-load below-the-fold images; convert autoplay attributes to booleans. - Scrape content: main hero copy and product names live inside
.page-promo-band.glue-cardtitles. - Debug an issue: common culprits are autoplay not starting (see boolean attributes), CSP nonce mismatches, or fonts blocking (remove unnecessary font families).
If you tell me your goal (e.g., “make a lighter landing page with the hero and three cards” or “convert the carousel to plain CSS/JS”), I’ll give you a trimmed, copy-paste-ready version.