Skip to content
Back to skills

Skill

ASecurity

Builds skeuomorphic CSS buttons whose depth comes only from stacked layers on one pill, a gradient body, inset shadows for the bevel and the inner glow, a brighter layer that fades in on hover and a soft bar of light along the top, in ten recipes from glossy and glowing to brushed metal, foil, inset, glass and satin. Use when someone asks for a glossy button, a 3D or tactile button, skeuomorphic UI, a glowing call to action, a glass or metal button, or button depth in CSS.

  • 258 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
ai-agentstypescriptreactnode

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add arla6ka/design.how --skill skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/arla6ka-skill-51d03772/badge)](https://www.skillsdirectory.com/skills/arla6ka-skill-51d03772)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: color-depth
description: Builds skeuomorphic CSS buttons whose depth comes only from stacked layers on one pill, a gradient body, inset shadows for the bevel and the inner glow, a brighter layer that fades in on hover and a soft bar of light along the top, in ten recipes from glossy and glowing to brushed metal, foil, inset, glass and satin. Use when someone asks for a glossy button, a 3D or tactile button, skeuomorphic UI, a glowing call to action, a glass or metal button, or button depth in CSS.
---

# Colour depth

Buttons that look like real objects, glossy or lit from inside, from gradients and inset shadows alone. See it live at https://design.how/vault/color-depth.

## What to build

Two pills reading "Get Started" sit side by side on a pale plate, 44px tall with a 15px medium label. The first is glossy orange: a vertical gradient from amber to burnt orange, a pale inner rim, a darker inset pooling at the bottom, a soft coloured drop shadow and, along the top, a 28px bar of white fading downward, blurred one pixel, that rises and brightens on hover. The second is violet and lit from within: a dark-to-bright purple body ringed by inset glows, and on hover a second, brighter body fades in over it.

Every recipe is the same element and one class. The depth is layered paint, not geometry: the body is a gradient, the bevel and the glow are stacks of inset box-shadows, ::before holds the hover state as a full second skin that only changes opacity, and ::after holds the highlight. Nothing is measured or drawn per frame, so a recipe drops onto any button.

Ten recipes share the pill: glossy, glow, brushed metal with a pointer-following highlight, holographic foil that drifts, layered, inset, glass that refracts its backdrop through an SVG displacement filter, a neon-like tube, duotone and satin. The metal and foil recipes read the pointer into custom properties on the next frame after a move.

## Workflow

1. Copy `assets/template/` into the project, for example to `components/color-depth/`. It is React and TypeScript: `params.ts`, `recipes.ts`, `styles.ts`, `glass-filter.tsx`, `depth-button.tsx`, `card.tsx`, plus `runtime/`, the small helpers they import.
2. Read the FIXED steps below before touching the code. They are what makes the effect; keep them.
3. Change only the VARIABLE values in the params file, or pass them as props where the card takes them.
4. Mount the card in a box with a fixed aspect ratio of 1344 / 336, so the page never shifts when it paints.
5. Read `references/perf.md` before changing the engine or mounting several visuals on one page.
6. Run `node scripts/check.mjs components/color-depth` on the copied folder, fix every line it prints, and rerun until it prints ok.

## FIXED

- Make one pill: inline-flex, 44px tall, 22px side padding, fully rounded, isolation isolate and overflow hidden, with ::before and ::after as full-size layers under the label.
- Give the recipe class a gradient body and a stack of inset box-shadows for the rim, the bottom shade and the inner glow, plus one soft outer shadow.
- Put the hover state in ::before as a second, brighter body at opacity 0 and fade it to 1 on hover.
- For the glossy highlight, put a blurred white-to-clear bar in ::after across the top and lift and brighten it on hover.
- For the glass recipe, set backdrop-filter to an SVG filter that displaces the backdrop per colour channel from a fixed gradient map.
- For metal and foil, write the pointer's position into custom properties on the next animation frame and centre them on leave.
- Under reduced motion, stop the foil drift and keep the pointer light centred.

## VARIABLE

| Name | Default | What it changes |
|-|-|-|
| `SHOWCASE` | glossy and glow | The recipes the card shows. |
| `RECIPES` | ten recipes | Each recipe's name, class, note and best backdrop, in recipes.ts. |
| `LABEL` | "Get Started" | The pill text, in recipes.ts. |
| `GROUND` | #f8f9fb | The plate colour. |
| `DESIGN_WIDTH` | 528 | The card width the pills are sized at. |

Files in this skill

  • SKILL.md3.9 KB
  • assets/template/card.tsx2 KB
  • assets/template/depth-button.tsx2.5 KB
  • assets/template/glass-filter.tsx2.7 KB
  • assets/template/params.ts410 B
  • assets/template/recipes.ts2.3 KB
  • assets/template/runtime/use-pause.ts1.6 KB
  • assets/template/styles.ts12.3 KB
  • references/perf.md2.3 KB
  • scripts/check.mjs5.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.