Doop
Doop is an open-source multiplayer design canvas and design MCP for Claude Code, Codex, and any AI agent. Design side by side with agents — free in beta.
Design CSS card shadows by moving a light: real light physics, exported as stacked box-shadows
Translation pending
DesignJavaScript · CSSGitHub @renderghostOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Design CSS shadows with direct light manipulation.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Design CSS card shadows by moving a light, not by pushing sliders. The shadow is
worked out from the light's position, height, size and colour temperature, then
exported as stacked box-shadow layers in plain values.
npm install
npm run dev # http://localhost:5173
npm test
npm run build # → dist/
| Action | What it does | Control |
|---|---|---|
| Move a light | Take hold of a light and drag it | Drag a light |
| Light distance | Slides the light along its line to the card | ⇧ Drag a light |
| Light size | Bigger lights cast softer shadows | ⌃ ⇧ Drag a light |
| Card elevation | Lifts the card off the page, or lowers it | ⇧ Drag the card |
| Edit a light | Opens its panel: drag a value left or right, or click to type | Click a light or its button |
Add up to three lights with + in the toolbar; remove them from their panel.
Keys: C CSS · S save a sample · L show or hide the lights and geometry
(they keep lighting the scene) · F full screen ·
H hide the interface · ? controls.
World units are CSS pixels. The card floats at height e above the page and
each light is a sphere of radius R at (x, y, z), no more than 820 px from the
card.
k = z / (z − e). The offset is −(x, y)·(k − 1), the spread is
the growth in size, and the blur is the penumbra, R·e / (z − e).(1 − x / √(x² + e²)) / 2, to within 0.001.:hover lifts the card and :active presses it down to 1 px above
the page, however high it was. The light stays put, and every state has the same layer list, so the browser can transition
between them.The physics lives in src/lib/physics.js. The CSS export
is built in src/lib/css.js.