Install
$ agentstack add skill-phazurlabs-sumi-shadow-elevation-density ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Shadow, Elevation and Density
Mental model
Elevation is a lie the interface tells consistently. It works only when every element agrees on where the light is and how far off the surface it sits.
Three rules carry most of the weight:
- One light source. Top-center, slightly left in LTR. Every element at the
same elevation casts the same direction of shadow. Two light sources destroy spatial coherence faster than any other single mistake.
- Layer, don't darken. A realistic shadow is two or three stacked shadows —
a tight dark one for contact, a wide soft one for ambience. A single large blurred shadow reads as a sticker, not a raised surface.
- Never pure black.
oklch(0 0 0 / a)at low alpha, or better, a shadow
tinted toward the surface's own hue. Pure black at high alpha is the single most common reason a UI looks cheap.
Density is the same discipline applied to space rather than depth: pick one of three modes and hold it, because a screen that mixes compact and comfortable reads as unfinished rather than flexible.
Shadow anatomy, for reading the values below: x-offset y-offset blur spread color. Y-offset places it, blur softens it, spread tightens or expands it. Higher elevation means larger y-offset, larger blur, lower alpha.
Constants
Every reference file in this skill writes against these tokens. They must be in context for the recipes to be usable.
:root {
--shadow-0: none;
--shadow-1: 0 1px 2px oklch(0 0 0 / 0.06), 0 1px 3px oklch(0 0 0 / 0.10);
--shadow-2: 0 2px 4px oklch(0 0 0 / 0.04), 0 4px 8px oklch(0 0 0 / 0.06), 0 12px 24px oklch(0 0 0 / 0.06);
--shadow-3: 0 4px 8px oklch(0 0 0 / 0.04), 0 8px 16px oklch(0 0 0 / 0.06), 0 20px 40px oklch(0 0 0 / 0.10);
--shadow-4: 0 8px 16px oklch(0 0 0 / 0.06), 0 16px 32px oklch(0 0 0 / 0.08), 0 32px 64px oklch(0 0 0 / 0.12);
--z-base: 0;
--z-raised: 1;
--z-dropdown: 100;
--z-sticky: 200;
--z-fixed: 300;
--z-drawer: 400;
--z-modal-backdrop: 500;
--z-modal: 510;
--z-popover: 600;
--z-toast: 700;
--z-tooltip: 800;
--z-drag: 900;
--z-max: 9999;
}
The z-index scale uses 100-step intervals so sub-layers fit between named levels without renumbering. --z-max is for debug overlays only; reaching for it in product code means a stacking context is wrong somewhere above.
Index
| Concern | Level / mode | Reference | |---|---|---| | Resting surface, card at rest | --shadow-1 | shadow-system-recipes.md | | Raised card, hover state | --shadow-2 | shadow-system-recipes.md | | Dropdown, popover, sticky header | --shadow-3 | shadow-system-recipes.md | | Modal, drawer, command palette | --shadow-4 | shadow-system-recipes.md | | Minimal system (Linear, Vercel) | — | shadow-system-recipes.md | | Layered system (Stripe) | — | shadow-system-recipes.md | | Material system (Google) | — | shadow-system-recipes.md | | Brand-tinted / colored shadows | — | shadow-system-recipes.md | | Dark-mode ambient glow | — | shadow-system-recipes.md | | Neumorphic | — | shadow-system-recipes.md | | Z-index conflicts, stacking contexts | — | elevation-hierarchy.md | | Surface layer architecture | — | elevation-hierarchy.md | | Compact / comfortable / spacious | — | density-modes.md | | Component-specific density rules | — | density-modes.md | | Radius scale, nested radius rule | — | border-radius-systems.md | | Sharp / rounded / pill systems | — | border-radius-systems.md | | Frosted glass, acrylic, blur | — | glassmorphism-effects.md | | Animating elevation on hover | — | shadow-animation.md | | Depth without shadow; materials | — | depth-and-materials.md |
Reference architecture
| File | Covers | Lines | |---|---|---| | references/shadow-system-recipes.md | 11 complete shadow systems | 1016 | | references/glassmorphism-effects.md | 10 glass and blur recipes | 1101 | | references/border-radius-systems.md | radius scale, nested rule, 5 systems | 934 | | references/density-modes.md | full token specs for 3 modes | 923 | | references/elevation-hierarchy.md | z-index, stacking, surfaces | 608 | | references/depth-and-materials.md | depth cues, surface materials | 145 | | references/shadow-animation.md | transitioning elevation | 86 |
What every reference file contains
- The philosophy — what the treatment is for and when it is wrong
- Complete CSS custom properties, ready to paste
- Named variants with the condition that selects each
- Light and dark values, not light only
- Component-specific application notes
- Performance cost, where the technique has one
- Anti-patterns specific to that treatment
Routing
For a shadow system — minimal (Linear/Vercel), layered (Stripe), Material, colored/brand-tinted, dark-mode ambient glow, and neumorphic, each as complete CSS: read references/shadow-system-recipes.md.
For stacking and z-index — the scale, stacking-context management, surface layer architecture, elevation-to-shadow mapping, and the common z-index bugs: read references/elevation-hierarchy.md.
For density — full token specifications for compact, comfortable and spacious, the side-by-side comparison, implementation strategies and component-specific rules: read references/density-modes.md.
For corner radius — the scale, the nested radius rule, component conventions, and five named systems from sharp/corporate to fully rounded: read references/border-radius-systems.md.
For glass and blur — glassmorphism fundamentals and ten recipes including frosted glass (Apple) and acrylic (Windows): read references/glassmorphism-effects.md.
For animating elevation — what to transition, what it costs, and the compositor-friendly alternatives to animating box-shadow directly: read references/shadow-animation.md.
For depth without shadow — overlap, scale, blur, parallax, borders, and the surface material treatments: read references/depth-and-materials.md.
Performance
box-shadow is painted, not composited. Animating it forces repaint on every frame. Transition opacity on a stacked pseudo-element instead, or accept the cost only on small elements. backdrop-filter is expensive on large surfaces and on low-end Android; always ship a solid-color fallback behind an @supports query.
Cross-References
ui-visual-design-system— where elevation sits in the wider visual languageplatform-visual-standards— iOS and Material 3 have their own elevation modelsanimation-recipe-library— the easing tokens shadow transitions usedesign-systems-architecture— how these tokens fit the three-tier modelfigma-design-tool-workflows— setting these up as Figma effect styles
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: phazurlabs
- Source: phazurlabs/sumi
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.