Layered shadow hierarchy model
- OK Elevation tiers
- OK Token mapping
- OK Theme calibration
Practical Guide
Build clean, scalable shadow stacks that improve hierarchy without muddying interfaces.
Layered shadow hierarchy model
Quick summary
Build clean, scalable shadow stacks that improve hierarchy without muddying interfaces.
Changelog: content updated 2026-03-01, references verified 2026-02-24.
Field Note
Shadow systems work best when modeled as elevation tokens with clear intent, not ad-hoc blur and opacity tweaks.
Define shadow tiers by elevation purpose so depth reads consistently.
Replace legacy one-off shadows with tokenized layers to clean visual noise.
Tune shadow opacity and spread so hierarchy stays visible without muddy halos.
Pre-publish QA questions
Channel Delivery Deep Dive
Storefront/social defaults, channel pitfalls, and share-safe implementation notes.
| Use case | Setting | Baseline | Target |
|---|---|---|---|
| Storefront catalog grid | Single ratio policy | 1000-1200 px long edge | Stable card layout and faster loads |
| Product detail imagery | Higher-detail variant + compression | 1600-2400 px long edge | Clear zoom without bloat |
| Social OG campaign art | 1200x630 with safe zones | Center-weighted composition | Consistent preview fidelity |
Before
Uneven ratios, over-sized exports, and repetitive channel-specific rework.
After
Preset-based resizing/compression with platform-safe crop rules.
Typical outcome
Cleaner storefronts and quicker campaign asset turnaround.
| Issue | Cause | Fix |
|---|---|---|
| Catalog cards look uneven | Mixed aspect ratios in source uploads | Apply one ratio standard per storefront template. |
| Social previews crop key message | No safe-zone composition | Use center-safe text/brand zones in OG templates. |
| Teams keep re-exporting manually | No reusable presets | Create named presets per channel and enforce them. |
| Elevation | Purpose | Usage |
|---|---|---|
| z1 | Subtle separation | Cards and inputs |
| z2 | Interactive emphasis | Hover states and popovers |
| z3 | High prominence | Modals and overlays |
Who this is for
What success looks like
Tested on
Scope and limits
Key takeaways
Common mistakes to avoid
30-minute action plan
Recommended tool stack
Related guides in this track
Use platform-safe Open Graph dimensions so social previews look clean and clickable.
6 min read
Audit live Open Graph and X metadata, debug broken social previews, and fix the highest-impact issues first.
9 min read
Prepare Shopify and WooCommerce images with consistent sizing, better quality, and faster load times.
8 min read
Turn one brand color into a production-ready palette with semantic tokens and accessibility checks.
9 min read
Execution depth
Fast Pass
15-20 min
Fix the highest-risk issue first and ship a validated minimum improvement.
Standard Rollout
45-60 min
Apply the full guide workflow with QA checks before publishing broadly.
Team Standardization
90+ min
Convert the workflow into reusable presets, checklists, and team operating rules.
| Troubleshooting Signal | Likely Cause | Recommended Fix |
|---|---|---|
| Product imagery looks inconsistent | Mixed dimensions and export settings | Standardize channel-specific presets and enforce them in workflow. |
| Social previews crop key content | Wrong canvas ratio or safe zone usage | Design with platform-safe dimensions and preview before posting. |
| Campaign assets take too long to ship | Manual one-off edits per channel | Use reusable templates plus batch resize/compress steps. |
Post-publish KPI checks
Detailed implementation blueprint
Map each destination channel to exact format, dimensions, and quality rules.
Done when: You have a complete destination spec sheet for all high-value channels.
Build reusable export presets to eliminate one-off manual edits.
Done when: Teams can generate channel-ready assets with minimal manual tweaking.
Add preflight checks that catch errors before campaigns go live.
Done when: First-publish success rate is high and preview errors are uncommon.
Operationalize the workflow for larger catalogs and faster campaign cycles.
Done when: Asset operations scale without quality drift or repeated rework.
Quality gate checklist
Advanced wins
Execution next step
Run a primary tool action, review one companion guide, then apply the rollout checklist.
Follow these rules when building or auditing a shadow elevation system. Breaking them leads to muddy depth, inconsistent components, and dark mode regressions.
More than five levels creates decision fatigue for developers and subtle differences users cannot perceive. Start with sm, md, lg, xl and only add a fifth if you have a distinct floating-action use case.
Light mode shadows above 15% opacity look heavy and compete with content. Stay in the 4-12% range for most levels and reserve higher values for the top elevation tier only.
Dark surfaces absorb shadows, making light mode values invisible. Multiply opacity by 2-3x and tighten spread so depth remains perceptible without bleeding.
Document which elevation level applies to each component type (cards = sm, dropdowns = md, modals = lg). Without role assignments, developers pick arbitrarily and hierarchy breaks.
A single box-shadow looks flat. Layer a tight, darker shadow for edge definition with a softer, wider shadow for ambient depth — this mimics how real-world light falls on surfaces.
Shadow levels that look distinct in isolation can collide on a real page where cards, modals, and dropdowns appear together. Always review elevation in assembled layouts, not just component previews.
A 4-level elevation system using layered box-shadows for natural depth.
:root {
/* Level 1: Subtle — cards, inputs */
--shadow-sm:
0 1px 2px rgba(0, 0, 0, 0.04),
0 1px 3px rgba(0, 0, 0, 0.06);
/* Level 2: Medium — dropdowns, tooltips */
--shadow-md:
0 2px 4px rgba(0, 0, 0, 0.04),
0 4px 12px rgba(0, 0, 0, 0.08);
/* Level 3: Elevated — modals, popovers */
--shadow-lg:
0 4px 8px rgba(0, 0, 0, 0.04),
0 8px 24px rgba(0, 0, 0, 0.1);
/* Level 4: Floating — floating action buttons */
--shadow-xl:
0 8px 16px rgba(0, 0, 0, 0.06),
0 16px 48px rgba(0, 0, 0, 0.12);
}
@media (prefers-color-scheme: dark) {
:root {
/* Tighter spread, higher opacity for dark surfaces */
--shadow-sm:
0 1px 2px rgba(0, 0, 0, 0.2),
0 1px 3px rgba(0, 0, 0, 0.3);
--shadow-md:
0 2px 4px rgba(0, 0, 0, 0.25),
0 4px 12px rgba(0, 0, 0, 0.35);
}
}
/* Usage */
.card { box-shadow: var(--shadow-sm); }
.dropdown { box-shadow: var(--shadow-md); }
.modal { box-shadow: var(--shadow-lg); }
Follow this sequence to build a consistent elevation system that works across light and dark themes.
Create 3-5 shadow tiers (sm, md, lg, xl) with clear visual hierarchy between each step.
Assign elevation levels to component types: cards, modals, dropdowns, floating actions.
Increase shadow opacity and reduce spread for dark surfaces where depth is harder to perceive.
Review elevation across page layouts to ensure depth hierarchy reads correctly in context.
A systematic shadow scale prevents inconsistent depth and simplifies dark mode support.
Consistent shadow usage creates clear visual hierarchy; random values create visual noise.
Shadow from a shared elevation scale — consistent depth across all components.
Random box-shadow values copy-pasted per component — no shared system.
Related workflow
Explore related tools to keep your workflow fast and consistent.