You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closes#86, #87, #88. Real transform/perspective origins with dual-pivot 3D, gradient-border painted + FilterFn::Noise (deterministic Skia grain) + zombie compat fields with validator warnings, spring easing on any preset via a generic motion-keyframe post-pass.
**Film grain (`noise` filter):** works in both `filter` and `backdrop-filter` chains. Deterministic — same `seed` produces identical grain on every frame.
Copy file name to clipboardExpand all lines: .claude/skills/rustmotion/rules/3d-perspective.md
+28Lines changed: 28 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -82,6 +82,34 @@ Utilise la propriété `"name": "keyframes"` avec les propriétés `rotate_x`, `
82
82
83
83
Les rotations >30° déforment le contenu et rendent le texte illisible. Rester dans −30..30.
84
84
85
+
### Pivot configurable : `transform-origin` et `perspective-origin`
86
+
87
+
Le pivot de rotation/scale est configurable via `style["transform-origin"]` (et `style["perspective-origin"]` pour le point de fuite de la perspective). Les deux propriétés acceptent :
**Tout preset accepte `spring`.** Ajouter un objet `spring` à n'importe quel preset applique la physique de ressort à ses keyframes de mouvement (translate/scale/rotate) — l'opacity garde son ease (pas de flash d'alpha en overshoot) :
-`bounce_in` / `elastic_in` : leurs springs intégrés sont les défauts ; un `spring` utilisateur les remplace.
36
+
-`scale_in` + spring : l'overshoot manuel est remplacé par celui du ressort.
37
+
- Oscillateurs continus (`pulse`, `shake`, `float`) : non affectés (leur forme est leur raison d'être).
38
+
- La `duration` reste la fenêtre de l'animation : le ressort est résolu en secondes réelles dans cette fenêtre et la valeur se cale sur la cible à la fin — choisir une duration suffisante (≥ 0.6s avec les défauts) pour laisser le ressort converger.
39
+
- Dialecte HTML : la DSL compacte accepte `spring:true` (défauts damping 15 / stiffness 100 / mass 1) ; la config fine passe par la forme JSON de `anim`.
Copy file name to clipboardExpand all lines: .claude/skills/rustmotion/rules/glassmorphism.md
+38-1Lines changed: 38 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ Sans bordure, la carte flotte sans contour visible.
19
19
Sans ombre, elle ne se détache pas du fond.
20
20
21
21
**Propriété correcte : `backdrop-filter`, pas `backdrop-blur`.**
22
-
`backdrop-blur`n'existe pas dans CssStyle — utiliser `backdrop-filter` avec `{ "fn": "blur", "radius": N }`.
22
+
`backdrop-blur`est accepté pour compat mais **jamais rendu** (le validateur émet un warning) — utiliser `backdrop-filter` avec `{ "fn": "blur", "radius": N }`. Idem pour `inner-shadow` → `box-shadow` avec `"inset": true`.
23
23
24
24
---
25
25
@@ -82,6 +82,43 @@ Le `box-shadow` inset blanc (`offset-y: -1`) simule un reflet de lumière en hau
82
82
83
83
---
84
84
85
+
## Grain « frosted glass » : le filtre `noise`
86
+
87
+
Le vrai verre dépoli a une micro-texture. Le filtre `noise` (déterministe : même `seed` = même grain à chaque frame) s'ajoute à la chaîne `backdrop-filter` après le blur :
|`seed`| 42 | n'importe quel entier — varier entre panels pour éviter un grain identique |
102
+
103
+
Le filtre marche aussi dans `filter` (grain sur le contenu de l'élément lui-même, style pellicule photo).
104
+
105
+
---
106
+
107
+
## Bordure gradient : `gradient-border`
108
+
109
+
Alternative premium à la bordure translucide unie — un anneau dégradé, border-radius aware, peint **à la place** de `border` quand les deux sont présents :
L'angle suit la même convention que les gradients `background`. Un dégradé blanc→transparent vertical simule la lumière qui accroche le haut de la carte.
119
+
120
+
---
121
+
85
122
## Fond : les éléments qui brillent à travers le verre
86
123
87
124
Le glassmorphisme n'a d'intérêt que s'il y a quelque chose à voir derrière. Placer des blobs colorés **derrière** la carte (`z-index: 0`) :
`scale_in` and `scale_out` support `overshoot` (default 0.08 = 8%). Char presets support `stagger`, `granularity`, `easing`, and `overshoot`.
38
+
39
+
**Tout preset standard accepte `spring`** — un objet `{ "damping", "stiffness", "mass" }` qui remplace la courbe de mouvement du preset (translate/scale/rotate) par une physique de ressort ; l'opacity garde son ease. Exemple : `{ "name": "slide_in_left", "spring": { "damping": 10 } }`. Détails dans easing-guidelines.md. (Char presets et `tilt_in` : hors scope v1.)
0 commit comments