Design-forward frontend guidance for art direction, token systems, and motion; updated for Chrome 147 element-scoped view transitions and Tailwind v4 / Tailwind Plus.
The gap between a shipped page and a memorable page is art direction. Frontend Frontier is a skill for engineers who refuse to default to generic SaaS aesthetics. It covers choosing a visual thesis, building a tokenized design system, wiring up a coherent motion layer, and evaluating craft quality against manual-grade references.
When to use
Starting a greenfield marketing site, landing page, or product homepage that needs a distinctive look
Redesigning or upgrading an existing UI that looks like "every other AI SaaS"
Building a component library where tokens, motion, and depth need to feel intentional
Reviewing pull requests for design coherence, motion quality, and token compliance
Creating a hero scene that combines 3D, shaders, or heavy animation with readable UI
Choosing between editorial, cinematic, brutalist, or experimental visual directions
When NOT to use
Pure backend API work with no visual output — this skill is frontend-only
Simple CRUD admin dashboards where stock component libraries suffice — prefer Tailwind Design System or shadcn defaults
Documentation-heavy sites where readability beats spectacle — keep motion minimal
Accessibility-first audits — reach for the Accessible UI skill instead
Performance profiling without a design goal — use Web Performance
Platform & tooling updates (research)
Practical, versioned notes on browser and tooling signals that affect art direction and motion. Every claim below links to an authoritative source cited in research.
Chrome (Mar 27, 2026)
Element-scoped view transitions (Chrome 147) — Chrome 147 exposes element-scoped transitions via Element.startViewTransition, which scopes snapshotting and the ::view-transition pseudo-tree to a subtree instead of the whole document. This enables concurrent and nested transitions, fixes many z-index and clipping issues from document-scoped transitions, and keeps the rest of the page interactive. See the Chrome guide and blog announcement: https://developer.chrome.com/docs/css-ui/view-transitions/element-scoped-view-transitions and https://developer.chrome.com/blog/element-scoped-view-transitions (Mar 27, 2026).
Practical note: prefer element-scoped transitions for independently updating components (modals, list reorders, nested route panels). When nesting, follow the docs for view-transition-name, containment, and clipping to avoid visual leakage.
// Support both Element.startViewTransition and document.startViewTransition
async function runScopedTransition(root, mutate) {
if (!root) return mutate();
const start = root.startViewTransition;
if (typeof start === 'function') {
try {
return root.startViewTransition(mutate);
} catch (e) {
// fall through to document-level or JS choreography
}
}
if (typeof document.startViewTransition === 'function') {
return document.startViewTransition(mutate);
}
// fallback: JS animation choreography (Motion, GSAP, or CSS transitions)
return mutate();
}
Tailwind (v4.x)
Tailwind v4.1 adds utilities useful for art direction: text-shadow utilities, mask utilities, colored drop-shadows, pointer-aware device variants (pointer/any-pointer), items-baseline-last, safe alignment, and more. See the announcement on the Tailwind blog (v4.1).
Tailwind v4.0 reworked the framework toward a CSS-first approach that exposes theme values as native CSS variables and improves container/query and runtime performance. Map Tailwind utilities to your canonical CSS variables or author tokens directly so framework, vanilla, and third-party integrations share the same token values.
Tailwind Plus (vanilla-JS Elements)
Tailwind Plus (the Tailwind UI product family) introduced vanilla-JS support for its UI blocks via headless custom elements (@tailwindplus/elements). Use the provided Elements in CDN or build contexts and map component classes or element CSS variables back to your token CSS variables so tokens remain authoritative across framework and vanilla integrations. See the Tailwind Plus blog and Elements docs for examples.
Design tooling
Figma variables and token tooling: use variables to test font scaling and token variations in design so accessibility regressions surface in design review rather than code review.
Core concepts
Art direction modes
Every project starts by picking one primary visual thesis. Do not mix modes without intent.
Mode
Character
Best for
Editorial technical
Dense type hierarchy, restrained color, data-forward
Ambient — slow loops, shader drift, environmental life that exists without user input
Interaction — hover, press, open, focus — immediate feedback tied to user actions
Narrative — scroll-driven and route-change choreography that guides the user through a story
One strong hero move beats many small distractions. If a page has a heavy 3D or shader hero, quiet the rest of the UI motion.
When route or layout transitions are involved, prefer browser-level view transition APIs (use element-scoped view transitions for nested or concurrent transitions). Use JS-driven narrative choreography only when you need fine-grained control that the native API does not provide.
Token system
Before building any component, define tokens for: color, spacing, radii, shadows, border weights, type scale, z-index, blur, motion duration/easing, and (new) text-shadow and mask tokens where your design needs them.
Tailwind v4's CSS-first approach exposes theme values as native CSS variables. Prefer mapping Tailwind utilities to these variables (or author tokens directly in CSS using @theme) so tokens remain the single source of truth across components and third‑party bundles.
Workflow
1. Choose your art direction mode
Evaluate the product, audience, and competitive landscape. Pick one primary mode from the table above. Write it down in your project brief or design doc.
2. Set up the token system with Tailwind v4 @theme
Tailwind v4 encourages defining tokens as native CSS variables so they can be consumed by vanilla JS bundles, web components, and third‑party widgets.
Map new utilities (text-shadow, masks, colored drop-shadows, pointer-aware variants) to tokens instead of sprinkling class utilities directly across components.
If migrating, follow the Tailwind upgrade guide and release notes. Install the latest packages and run your visual regression suite against a modern-browser matrix.
Example token block (canonical and copy-pasteable):
When using route changes, prefer view transitions for layout swaps and reserve motion libraries for layered or sequenced narrative effects that need replay or complex timing.
4. Layer in GSAP for scroll choreography (when needed)
Prefer native scroll-triggered APIs when available; use GSAP or a polyfill only when you need cross-browser consistency or richer sequencing.
5. Review against craft benchmarks
Compare your output against manual-grade references: userinterface.wiki, Rauno's site, Devouring Details, Interface Craft, UI Playbook. Ask: does this feel authored, or generated?
<section className="relative overflow-hidden bg-surface px-space-xl py-space-3xl">
<motion.div
initial={{ opacity: 0, y: 32 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.7, ease: [0.16, 1, 0.3, 1] }}
className="mx-auto max-w-3xl text-center"
>
<h1 className="font-display text-6xl text-text-primary text-balance">
Intelligence you can trust
</h1>
<p className="mt-space-md text-lg text-text-secondary">
Enterprise AI infrastructure that scales with your ambition.
</p>
</motion.div>
</section>
Example 2 — Neo-brutalist card
High contrast, raw borders, no soft shadows:
<div className="border-2 border-text-primary:bg-surface p-space-lg">
<h3 className="font-mono text-sm uppercase tracking-widest text-accent">
Module 04
</h3>
<p className="mt-space-sm font-sans text-xl font-bold text-text-primary">
Break every assumption about what a card should look like.
</p>
</div>
Tailwind Plus — mapping Elements to tokens (copy-pasteable)
If you use Tailwind Plus Elements (@tailwindplus/elements) in a vanilla context, ensure the elements pick up your token variables rather than hard-coded colors or sizes. The Elements library provides headless custom elements (<el-dropdown>, <el-menu>, etc.) which you style via classes or CSS. Example pattern:
Map utilities or component variables to tokens so both Tailwind utilities and Elements styles use the same values. Example using a small CSS shim that Elements will inherit:
.el-theme { /* shim class applied to a root container */
--tp-accent: var(--color-accent);
--tp-surface: var(--color-surface);
--tp-gap: var(--space-md);
--tp-radius: var(--radius-md);
}
/* Optional: provide utility aliases for tokens if your build expects Tailwind variables */
.el-theme .btn-primary {
background-color: var(--tp-accent);
border-radius: var(--tp-radius);
}
Use Elements markup in your HTML and apply the shim class on a wrapper so the elements pick up the token values:
This keeps tokens authoritative and prevents design drift when mixing Tailwind utilities, framework components, and vanilla Elements.
Decision tree
Need a distinctive landing page? → Start here with art direction mode selection
Need component animation? → Use Motion (Framer Motion skill)
Need scroll choreography? → Use GSAP + ScrollTrigger skill (or prefer native scroll-triggered APIs)
Need 3D hero scene? → Use React Three Fiber skill
Need token system only? → Use Tailwind Design System skill
Need performance audit? → Use Web Performance skill
Multiple concerns? → Start here, then delegate to specific skills
Edge cases and gotchas
Heavy animation + readability conflict — Above-the-fold copy and CTA must remain readable while motion runs. Test by pausing the animation: if the page makes no sense frozen, the hierarchy is wrong.
prefers-reduced-motion — Every ambient and narrative animation must degrade to static under prefers-reduced-motion: reduce. Interaction motion can simplify but should not vanish entirely (users still need feedback).
Mobile performance — Canvas, heavy blur, backdrop-filter, and large shadow animations are expensive on mobile. Profile on a real mid-range device, not just DevTools throttling.
Token drift — When tokens are not enforced, arbitrary values creep in within weeks. Use Tailwind's safelist/lint rules or a custom lint rule to flag raw values in design-critical properties.
Art direction scope creep — Mixing two modes (e.g., editorial + cinematic) almost always produces mud. Pick one, commit, and only borrow from another mode for a specific justified element.
Font loading flash — Display fonts cause layout shift if not preloaded. Use font-display: swap with a closely-matched system fallback and preload the font file.
Web components collisions — If your design system exposes custom elements, register them with a scoped registry to avoid cross-library tag collisions when multiple component sets coexist on a page.
Sanitizing HTML — Use the browser Sanitizer API for user or third-party HTML where available; keep a safe fallback sanitizer for other browsers.
Evaluation criteria
A single art direction mode is chosen and documented
Token system covers color, spacing, radii, shadow, type, motion, text-shadow/mask where used
Tokens are defined in @theme before any component styling
Motion follows the three-layer model (ambient, interaction, narrative)
Hero focal point is singular and does not compete with other animations
prefers-reduced-motion fallbacks are implemented
Mobile performance is profiled on a real device
No raw hex values, arbitrary spacing, or accidental radius drift
Above-the-fold copy is readable while motion runs
Output is compared against at least one craft reference
Tailwind Plus (Tailwind UI → Tailwind Plus): Tailwind Plus provides UI blocks and vanilla-JS Elements (@tailwindplus/elements) — map element variables to your tokens when using these elements to keep tokens authoritative across frameworks. (Tailwind Plus docs: https://tailwindcss.com/plus/ui-blocks/documentation/elements).
Next edits
Add one new tactic based on Tailwind Plus vanilla-JS integration (component mapping example) — done.
Rewrite the platform notes with explicit links and dates (completed).
Add a short agent prompt for upgrading a repo to Tailwind v4 (keep running checklist).
Quick upgrade prompt (agent-ready)
Upgrade this repo to Tailwind v4. Checklist:
Review Tailwind's official upgrade guide and release notes:
Pin and install the target packages in a feature branch:
# choose the exact versions used in your project matrix
npm install tailwindcss@4.1.0 @tailwindcss/cli@latest
Update config and plugin changes per the upgrade guide; run unit tests.
Run visual regression tests across a modern-browser matrix (include Chrome 147+ to validate view transitions where used).
If you use Tailwind Plus Elements, include @tailwindplus/elements and map element variables to your tokens as shown in the Tailwind Plus docs.
Agent docs
4 attached
Codex — Frontend Frontier
Environment
This skill operates in a sandboxed environment with file I/O only. No browser preview is available — generate code that is self-contained and testable via build tooling.
When this skill is active
Always ask for or determine the art direction mode before writing any UI code.
Default to Tailwind v4 @theme tokens — never use arbitrary values for color, spacing, or radii.
Use Motion (motion/react) for component-level animation.
Use GSAP + ScrollTrigger for scroll choreography and timeline sequences.
Emit CSS custom properties from @theme, not JS-only token objects.
Tool usage
Use file read/write to scaffold token files, component files, and layout files.
Generate a globals.css with a complete @theme block before any component code.
Place components in components/ with one primary export per file.
Place hooks in hooks/ and utilities in lib/.
Testing expectations
Every animation component should have a prefers-reduced-motion branch.
Verify that token values compile: run pnpm build or npx tailwindcss --input globals.css --output /dev/null as a smoke test.
Snapshot test static renders to catch regressions in class usage.
Common failure modes
Generating UI without choosing an art direction mode first.
Using raw hex colors or arbitrary Tailwind values instead of tokens.
Forgetting gsap.context() cleanup in React useEffect.
Shipping blur or shadow animations without profiling mobile performance.
Mixing two art direction modes without justification.
Output format
Code files: one file per concern (tokens, components, hooks).
Always include the @theme block in full when creating a new project.
Annotate which art direction mode was chosen at the top of the main layout file.
Activity
ActiveDaily · 9:00 AM10 sources
Automation & run history
Automation status and run history. Only the owner can trigger runs or edit the schedule.
Scrape tracked sources for new art-direction references, motion-library API changes, design-system tooling releases, and frontier CSS/JS features. If a new Tailwind, Motion, or Three.js release dropped, summarize breaking changes and update recommended patterns.
Latest refresh trace
Reasoning steps, source results, and the diff that landed.
Apr 18, 2026 · 9:28 AM
triggerAutomation
editoropenai/gpt-5-mini
duration100.4s
statussuccess
Revision: v14
Minor revisions: clarified platform/tooling notes, expanded Tailwind Plus mapping guidance, and added a concrete upgrade checklist for Tailwind v4. Kept core guidance and examples intact; all new claims reference tracked sources (Chrome and Tailwind blog docs).
Platform/tooling updates: clarified Chrome view-transitions links and simplified detection code. Tailwind Plus: added mapping guidance and CDN example. Quick upgrade prompt: added precise install commands and release-tag link.
Practical, versioned notes on browser and tooling signals that affect art direction and motion. Every claim below links to an authoritative source cited in research.
- Chrome (Mar 27, 2026)
− - Element-scoped view transitions (Chrome 147) — Chrome 147 (docs published Mar 27, 2026) exposes element-scoped transitions via Element.startViewTransition, which scopes snapshotting and the ::view-transition pseudo-tree to a subtree instead of the whole document. This enables concurrent and nested transitions, fixes many z-index and clipping issues from document-scoped transitions, and keeps the rest of the page interactive. See the Chrome guide: https://developer.chrome.com/docs/css-ui/view-transitions/element-scoped-view-transitions and the blog announcement: https://developer.chrome.com/blog/element-scoped-view-transitions (Mar 27, 2026).
+ - Element-scoped view transitions (Chrome 147) — Chrome 147 exposes element-scoped transitions via Element.startViewTransition, which scopes snapshotting and the ::view-transition pseudo-tree to a subtree instead of the whole document. This enables concurrent and nested transitions, fixes many z-index and clipping issues from document-scoped transitions, and keeps the rest of the page interactive. See the Chrome guide and blog announcement: https://developer.chrome.com/docs/css-ui/view-transitions/element-scoped-view-transitions and https://developer.chrome.com/blog/element-scoped-view-transitions (Mar 27, 2026).
- Practical note: prefer element-scoped transitions for independently updating components (modals, list reorders, nested route panels). When nesting, follow the docs for view-transition-name, containment, and clipping to avoid visual leakage.
// fall through to document-level or JS choreography
}
@@ −57 +52 @@
```
- Tailwind (v4.x)
− - Tailwind v4.1 (Apr 3, 2025) adds utilities useful for art direction: text-shadow utilities, mask utilities, colored drop-shadows, pointer-aware device variants (pointer/any-pointer), `items-baseline-last`, `safe` alignment, and more. See the announcement:https://tailwindcss.com/blog/tailwindcss-v4-1(Apr3,2025).
+ - Tailwind v4.1 adds utilities useful for art direction: text-shadow utilities, mask utilities, colored drop-shadows, pointer-aware device variants (pointer/any-pointer), `items-baseline-last`, `safe` alignment, and more. See the announcementontheTailwindblog(v4.1).
- Tailwind v4.0 reworked the framework toward a CSS-first approach that exposes theme values as native CSS variables and improves container/query and runtime performance. Map Tailwind utilities to your canonical CSS variables or author tokens directly so framework, vanilla, and third-party integrations share the same token values.
- Tailwind Plus (vanilla-JS Elements)
− - Tailwind Plus announced vanilla-JS support for its UI blocks via `@tailwindplus/elements` on July 25, 2025. Elements are headless custom elements youcanincludeviaCDNandstyle with utilities or CSS.Whenusing Elements in non-framework contexts, map component classes or element variables back to your token CSS variables so tokens remain authoritative across framework and vanilla integrations. (https://tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus—Jul25,2025).
+ - Tailwind Plus (the Tailwind UI product family)introduced vanilla-JS support for its UI blocks via headless custom elements (`@tailwindplus/elements`).UsetheprovidedElementsinCDN or buildcontextsand map component classes or element CSS variables back to your token CSS variables so tokens remain authoritative across framework and vanilla integrations. See the Tailwind Plus blogandElementsdocsforexamples.
- Design tooling
- Figma variables and token tooling: use variables to test font scaling and token variations in design so accessibility regressions surface in design review rather than code review.
Research engine
Frontend Frontier now combines 6 tracked sources with 1 trusted upstream skill packs. Instead of waiting on a single fixed link, it tracks canonical feeds, discovers new docs from index-like surfaces, and folds those deltas into sandbox-usable guidance.
Broadest appeal, strong upstream corpus, and directly useful for anyone shipping UI in anger.
Discovery process
1. Track canonical signals
Monitor 5 feed-like sources for release notes, changelog entries, and durable upstream deltas.
2. Discover net-new docs and leads
Scan 1 discovery-oriented sources such as docs indexes and sitemaps, then rank extracted links against explicit query hints instead of trusting nav order.
3. Transplant from trusted upstreams
Fold implementation patterns from Frontend Frontier so the skill inherits a real operating model instead of boilerplate prose.
4. Keep the sandbox honest
Ship prompts, MCP recommendations, and automation language that can actually be executed in Loop's sandbox instead of abstract advice theater.
Tailwind Plus — mapping Elements to tokens (copy-pasteable)
Quick upgrade prompt (agent-ready)
status
success
triggerAutomation
editoropenai/gpt-5-mini
duration100.4s
Diff▶
+10−12
+Generated: 2026-04-18T09:27:05.014Z
+Summary: Minor revisions: clarified platform/tooling notes, expanded Tailwind Plus mapping guidance, and added a concrete upgrade checklist for Tailwind v4. Kept core guidance and examples intact; all new claims reference tracked sources (Chrome and Tailwind blog docs).
−Generated:2026-04-16T09:52:45.163Z
+What changed: Platform/tooling updates: clarified Chrome view-transitions links and simplified detection code. Tailwind Plus: added mapping guidance and CDN example. Quick upgrade prompt: added precise install commands and release-taglink.
−Summary: Updated platform notes with exact dates and authoritative links for Chrome element-scoped view transitions (Mar 27, 2026), Tailwind v4.1 (Apr 3, 2025), and Tailwind Plus vanilla-JS Elements (Jul 25, 2025). Added a more robust feature-detection snippet for Element.startViewTransition and clarified upgrade checklist commands.
−What changed: - Platform & tooling updates: replaced general notes with sourced links and exact dates; added robust feature-detection snippet for element-scoped transitions.
−- Research-backed changes: added precise citations and dates for Tailwind v4.1 and Tailwind Plus vanilla-JS support.
−- Quick upgrade prompt: added explicit install command and release tag reference.
+- Add an automated linter that flags raw token values in CSS/JS to prevent token drift; run on a small repo to evaluate false positives.
−- Add a smallautomatedlinter(AST)thatdetectsnon-tokenCSSvalues in Tailwindtemplates and reportviolationsduringCI.
+- Create a migration script thatmapsTailwindv3utilityusagestov4token-basedvariables in acodebase and testonasampleapp.
−- Prototype a transition adapter that normalizes element.startViewTransition signatures (function vs object) and falls back to a choreographed Motion sequence for non-supporting browsers.
Signals:
+- บล็อก (Chrome Developer Blog)
+- เอกสาร (Chrome Developer Blog)
+- กรณีศึกษา (Chrome Developer Blog)
−- Blog(TailwindCSS Blog)
+- ใหม่ในChrome(ChromeDeveloper Blog)
−- Vanilla JavaScript support for Tailwind Plus (Tailwind CSS Blog)
−- Compass: A starter kit for online courses (Tailwind CSS Blog)
−- Tailwind CSS v4.1: Text shadows, masks, and tons more (Tailwind CSS Blog)
Update history8▶
17h ago4 sources
Minor revisions: clarified platform/tooling notes, expanded Tailwind Plus mapping guidance, and added a concrete upgrade checklist for Tailwind v4. Kept core guidance and examples intact; all new claims reference tracked sources (Chrome and Tailwind blog docs).
2d ago4 sources
Updated platform notes with exact dates and authoritative links for Chrome element-scoped view transitions (Mar 27, 2026), Tailwind v4.1 (Apr 3, 2025), and Tailwind Plus vanilla-JS Elements (Jul 25, 2025). Added a more robust feature-detection snippet for Element.startViewTransition and clarified upgrade checklist commands.
4d ago4 sources
Updated platform notes with explicit, sourced references: Chrome element-scoped view transitions (Chrome 147, Mar 27, 2026), Tailwind v4.0 (Jan 22, 2025) and v4.1 (Apr 3, 2025) features, and Tailwind Plus vanilla-JS Elements (Jul 25, 2025). Improved feature-detection snippets and clarified migration guidance to be copy‑pasteable.
5d ago4 sources
Updated platform notes and migration guidance: aligned Tailwind upgrade steps with official v4.1 release notes, clarified element-scoped view transitions (Chrome 147) with doc links, and confirmed Tailwind Plus Elements CDN usage and token-mapping pattern.
Apr 11, 20264 sources
Updated platform notes to reflect Chrome 147 element-scoped view transitions and Tailwind v4/v4.1 features; added concrete Tailwind Plus Elements integration pattern and mapping example to keep tokens authoritative when using vanilla components.
Apr 9, 20264 sources
Updated platform notes with Chrome 147 element-scoped view transitions (concurrent/nested transitions), included Tailwind v4.1 utilities (text-shadow, masks, pointer-aware variants, colored drop-shadow) and Tailwind Plus vanilla-JS/@tailwindplus/elements details. Added precise migration checklist and authoritative links to Chrome and Tailwind posts.
Apr 7, 20264 sources
Updated platform and tooling guidance to reflect Tailwind CSS v4 (CSS-first config, Node 20 requirement, new Vite plugin, PostCSS/CLI package changes) and Chrome element-scoped view transitions (concurrent/nested transitions). Added concrete migration checklist, Vite plugin snippet, feature-detection pattern for element-scoped view transitions, and Tailwind Plus vanilla-JS guidance.
Apr 5, 20264 sources
Frontend Frontier agent run was interrupted: Free credits temporarily have rate limits in place due to abuse. We are working on a resolution. Try again later, or pay for credits which continue to have unrestricted access. Pur