Skip to content

feat: liquid glass motion, ticket page fixes and clear glass - #53

Merged
Kiron-Q-Summit merged 5 commits into
mainfrom
feat/glass-motion
Nov 8, 2026
Merged

Kiron-Q-Summit merged 5 commits into
mainfrom
feat/glass-motion

Conversation

@Kiron-Q-Summit

Copy link
Copy Markdown
Collaborator

What & why

Fixes and the liquid glass motion system for the ticket page, the site header and the home Buy Now, reviewed and approved locally. The full homepage redesign stays paused.

Fixes (5946867)

  • Ticket carousel: the "n / 5" count no longer bounces (3-4-3). Arrows and dots hold their target while the smooth scroll travels; a swipe advances only in its direction with hysteresis; scrollend settles on the centered card. Rapid taps queue.
  • Card sharpness: off-screen cards drop their light animation (resting frame = first keyframe), the Save chip loses its live backdrop blur. About 60 fewer GPU layers on phones, which fell back to low-resolution tiles while swiping.
  • Compare: a button + listbox picker (WAI-ARIA select-only) replaces the native select: always opens downward and eases the page down to fit, closes on a second tap, outside tap or Escape keeping the pick, full keyboard support.

Glass motion (c21582f), DESIGN.md MOTION-6

  • Shared press (compression, light pulse from the touch point, spring back), unfold/fold (surfaces grow out of their trigger and fold back) and word-by-word dynamic type, timed from the team's reference videos. lib/motion/glass-press.ts, lib/motion/typewriter.ts, glass and type tokens.
  • Home Buy Now press; phone menu unfolds out of the menu button; compare list unfolds out of its field; What's included grows out of the picked tab; typewriter only for the ticket description lines.

Menu fix and clear glass (1b1d6e0)

  • Phone menu: glass, links and icon ran on three timelines (clip-path sliced the left-aligned links while opening from the right; links lagged the glass, leaving an empty sheet, and left before it on close, leaving an empty remnant; the icon swapped instantly). Now one timeline: the glass is its own layer (.nav-glass), links are never clipped and appear once it is open, leave before it folds, and the icon turns with it.
  • Clear liquid glass in the Buy Now's material for the header bar, the blue-tinted phone menu, the hero's Compare tickets link and the pinned compare names (left-aligned). The bar's glass moved to .nav-bar-glass because an element with backdrop-filter is a backdrop root and blocked the menu's blur; the compare sheet's blur moved to a pseudo layer for the same reason.

Refs: #

Checklist

  • Docs are current: every doc or diagram this change invalidates is updated in this PR (ADR index, arc42 sections, editor handbook). If nothing is affected, say so below.
  • Visual changes include a screenshot or preview URL.
  • CMS schema / sync changes (collections, globals, access, content-sync, endpoints, payload.config.ts) are called out below; they affect every editor.

Docs impact: apps/web/DESIGN.md (new MOTION-6 with rule index and motion table rows, COMP-1 .is-glass, COMP-6 header and menu, TICKETS-1 pickers, names, What's included), tokens in tokens.css and scripts/check/design.mjs.

Editor impact: none. No CMS schema or content change; prices, content and buy links unchanged.

Visual: Cloudflare preview https://feat-glass-motion-q-web.q-summit.workers.dev/ . Approved by Kiron on localhost (desktop and phone).

Checks run locally

check:design, check:md, check:spell, check:lint, check:events, check:docs, check:cms-styles, prettier, web astro check + tsc, web tests, build:fixture, budgets, CMS-mode build against the production CMS: pass. Headless Edge (desktop 1440, phone 390 with touch, keyboard, reduced motion): carousel swipes/arrows/dots without bounce, all 20 compare pairs via the pickers, picker close paths, sticky names, menu rapid toggles and reversals (no orphaned text in ~1,200 sampled frames), typewriter on rapid switches, Buy Now press and navigation.

🤖 Generated with Claude Code

Kiron-Q-Summit and others added 3 commits November 8, 2026 16:50
…ss Buy Now

Carousel: arrows and dots set a target the count holds while the smooth
scroll travels, a swipe only advances the count in its direction once
the next card is clearly closer, and scrollend settles it on the centered
card. Rapid taps queue (1 -> 4) instead of bouncing (3-4-3).

Cards: off-screen cards drop their light animation (not just pause it),
with a resting frame equal to the first keyframe, and the Save chip loses
its live backdrop blur. About 60 fewer GPU layers and a third less layer
area on phones, which fell back to low-resolution tiles while swiping.

Compare: a button + listbox picker (WAI-ARIA select-only) replaces the
native select: always opens downward and eases the page down to fit,
closes on a second tap, outside tap or Escape keeping the pick, full
keyboard support, softer open and close, reduced motion respected. The
pinned names sit centered in their columns under the glass header.

Home: Buy Now becomes clear liquid glass over the video, with a rim,
halo, white focus ring and pressed state. Label and link unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MOTION-6: one press, unfold/fold and word-by-word type pattern for the
glass parts, timed from the team's reference videos.

- Home Buy Now: same clear glass; a press compresses it on the first
  frame, runs a light pulse from the touch point and springs it back.
- Header: the phone menu unfolds out of the menu button with a light
  sweep and staggered links, folds back into it, reversible mid-way.
- Compare: clearer sheet and picker fields in the Buy Now material; the
  list unfolds out of its field and folds back; names left-aligned on a
  clear glass bar that blurs the rows (the sheet's blur moved to a pseudo
  layer so it is no backdrop root).
- What's included: the summary grows out of the picked tab, the sheet
  unrolls in place, contents and description follow (Web Animations,
  interruptible).
- lib/motion/glass-press.ts and typewriter.ts, glass and type tokens.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Menu (measured: glass, links and icon ran on three timelines). The
sheet's clip-path sliced left-aligned link text while it opened from the
right; links were delayed up to 250ms after the glass, leaving an empty
sheet, and faded before it on close, leaving an empty glass remnant; the
icon swapped instantly by display. Now the glass is its own layer
(.nav-glass) that unfolds out of the button by transform, links are never
clipped and appear once the glass is open and leave before it folds, and
the icon turns on the same timeline. Reversible mid-way, hidden only after
the fold.

Clear glass in the home Buy Now's material for the header bar, the
blue-tinted phone menu, the hero's Compare tickets link and the pinned
compare names: thin fills, stronger blur with lifted brightness and
saturation, hairline rims and a soft cyan halo. The bar's glass moved to
.nav-bar-glass so the menu (inside it) can blur the page: an element with
backdrop-filter is a backdrop root.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
q-web-cms Skipped Skipped Nov 8, 2026 7:27pm UTC

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
q-web 6851bf6 Commit Preview URL

Branch Preview URL
Nov 08 2026, 07:28 PM

@github-actions

github-actions Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

Warning

The baseline auto-commit did not land (push failed or nothing to commit), so the diff is accurate but not yet committed. See the run log; re-running reconciles.

Visual review vs main

0 added · 11 changed · 410 same · 0 failed

Open report · 6851bf6

Review the pixel diffs below.

Baselines are staged on this PR. Merging adopts them.

11 changed
  • home-hero · default 390, 768, 1280
  • home-hero · german 390, 768, 1280
  • home-hero · long-copy 390, 768, 1280
  • tickets-ticket-compare · default 390
  • tickets-ticket-included · default 768

Job log

The production build minifies CSS times (150ms becomes .15s) while the
dev server keeps them as written. The typewriter, the What's included
unfold, the menu's and the compare picker's hide timers read the tokens
with parseFloat, so on the preview they ran 1000x too fast: all words at
once, no unfold, folds cut short. lib/motion/css-time.ts reads both
forms (unit tested), lib/motion/time.ts reads a token through it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Kiron-Q-Summit
Kiron-Q-Summit merged commit 5ad7539 into main Nov 8, 2026
6 checks passed
@Kiron-Q-Summit
Kiron-Q-Summit deleted the feat/glass-motion branch November 8, 2026 19:31

This branch was previously deployed

1 inactive deployment
Preview — 6851bf62 Deployed Nov 8, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant