π¨ Quick Visual Reference β 3D Curve Layer System
π¨ Quick Visual Reference β 3D Curve Layer System
Layer Visual Hierarchy
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HERO COMPOSITION β
β β
β ββββββββββββββββββββββββββββββββββββββββ β
β β V I S I O N β β VISION text β
β β β± β² β β
β β L0 β β L1 β β
β β (back) (front) β β
β ββββββββββββββββββββββββββββββββββββββββ β
β β β
β β ............ into β separator β
β β β
β β ββββββββββββ β
β β β PHOTO β β
β β β β β L2 wraps around β
β ββββββ€ β β
β β β β
β ββββββββββββ β
β β
β βββββββββββββββββββββββββββ β
β β INTELLIGENCE β β L3 on top β
β βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Layer Properties Comparison
| Property | L0 (Back) | L1 (Front) | L2 (Mid) | L3 (Top) |
|---|---|---|---|---|
| Z-Index | 0 | 2 | 4 | 6 |
| Stroke Width | 16px | 20px | 17px | 22px |
| Opacity | 0.72 | 0.92 | 0.80 | 0.95 |
| Brightness | 0.75 (darker) | 1.1 (lighter) | 0.95 (neutral) | 1.15 (brightest) |
| Saturation | 0.7 (muted) | 1.2 (vivid) | 0.9 (slight) | 1.3 (max) |
| Shadow Blur | 3px | 8px | 6px | 14px |
| Shadow Offset | 1-2px | 4px | 3px | 6px |
| Glow Size | 4px | 12px | 8px | 16px |
| Animation | β | breathe (6s) | β | breathe (5s) |
Color Gradient Progression
Light Mode
L0: #1a1b6e ββββββββββββββββββββββ
β
L1: #6d28d9 ββββββββββββββββββββββ« gradient flow
β
L2: #c026d3 ββββββββββββββββββββββ«
β
L3: #f43f82 ββββββββββββββββββββββ
Dark Mode
L0: #003d22 ββββββββββββββββββββββ
β
L1: #00994d ββββββββββββββββββββββ« emerald to cyan
β
L2: #00ff88 ββββββββββββββββββββββ«
β
L3: #7fffd4 ββββββββββββββββββββββ
Clipping Zones (Visual Map)
βββββββββββββββββββββββββββββββββββββββββββ 0%
β ββββββββββββββ¬βββββββββββββββ β
β β L0 β L1 β β β top 46%
β β (left) β (right) β β
β ββββββββββββββ΄βββββββββββββββ β
β β 46%
ββββββββββββββββββββββββββββββββββββββββββββ€
β L2 starts here β
β ββββββββββ β β 42%
β β photo β ..... into β
β β β β
β ββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββ€ 72%
β ββββββββββββββββββββ β
β β INTELLIGENCE β β L3 β
β ββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ 100%
Clipping formulas:
- L0:
inset(0 50% 54% 0)β top-left quadrant - L1:
inset(0 0 54% 50%)β top-right quadrant - L2:
inset(42% 0 0 26%)β middle-bottom, left-offset - L3:
inset(72% 0 0 0)β bottom strip
Visual Effect Breakdown
π Layer L0 (Behind VISION left)
Appearance:
β Darker, desaturated (in shadow)
β Thinner stroke (further away)
β Minimal glow
Perception:
β User sees it "behind" the letters V-I-S
β Depth cue: less prominent = more distant
π Layer L1 (In front of VISION right)
Appearance:
β Bright, saturated (in light)
β Thick stroke (closer to viewer)
β Strong drop shadow on letters
β Pulsing glow (breathing animation)
Perception:
β User sees it "in front" of letters I-O-N
β Depth cue: casts shadow = physically above
π Layer L2 (Around photo, behind βintoβ)
Appearance:
β Medium brightness (transition zone)
β Tapered stroke (squeezing through gap)
β Gradient overlay (twist effect)
Perception:
β Weaves around photo edge
β Disappears behind "into" text
β Suggests 3D navigation through space
π Layer L3 (Over INTELLIGENCE)
Appearance:
β Maximum brightness & saturation
β Thickest stroke (closest to viewer)
β Dramatic shadow cast on green block
β Specular highlights (top/bottom)
β Halo glow around curve
Perception:
β Clearly "in front" of everything
β Strong visual presence
β Definitive depth hierarchy
Hover State Changes
DEFAULT:
L0: 16px / 0.72 opacity
L1: 20px / 0.92 opacity
L2: 17px / 0.80 opacity
L3: 22px / 0.95 opacity
ON HOVER:
L0: 14px / 0.60 opacity β recedes
L1: 22px / 1.00 opacity β advances
L2: 17px / 0.80 opacity β unchanged
L3: 24px / 1.00 opacity β advances
Effect:
β Foreground layers "pop out"
β Background layers "fade back"
β Exaggerated depth perception
Parallax Movement (on mouse move)
Movement strength β z-index:
L0 (z:0): Β±0.0px (static)
L1 (z:2): Β±1.0px (subtle)
L2 (z:4): Β±2.0px (medium)
L3 (z:6): Β±3.0px (pronounced)
Effect:
β Closer layers track cursor more
β Creates "3D scene" illusion
β Reinforces depth hierarchy
Debug Mode Visualization
When debugMode: true in JS config:
βββββββββββββββββββββββββββββββββββββββββββ
β [RED OVERLAY] = occluded region β
β [TRANSPARENT] = visible curve segment β
β β
β βββββββββββββββββββββββββββββ β
β ^ ^ β
β ββ hidden behind ββ hidden behind β
β "V" letter "O" letter β
βββββββββββββββββββββββββββββββββββββββββββ
Performance Considerations
| Feature | Performance Impact | When to Use |
|---|---|---|
| Static clipping | β Negligible | Always |
| Breathing animation | β Low | Always |
| Hover depth change | β Low | Always |
| Mouse parallax | β οΈ Medium | Desktop only |
| Dynamic occlusion (JS) | β οΈ Medium-High | Optional enhancement |
| Pixel-perfect detection | β High | Debug/polish only |
Implementation Checklist
CSS (Required)
- 4 layer system with z-index stack
- Gradient color progression
- Variable stroke width
- Multi-layer drop shadows
- Breathing animation keyframes
- Hover state transitions
- Dark mode color inversion
HTML/SVG (Required)
- 4 duplicate SVG curve elements
- Each with unique class (l0, l1, l2, l3)
- Gradient definitions for body/spine
JavaScript (Optional)
- Negative space analyzer
- Dynamic occlusion renderer
- Mouse parallax enhancer
- Resize/scroll recalculation
Quick Test Commands
# Check if all layers are rendering
document.querySelectorAll('.mp-hero-curve').length
# Should return: 4
# Toggle debug mode
CONFIG.debugMode = true;
# Check z-index stack
Array.from(document.querySelectorAll('.mp-hero-curve')).map(el =>
getComputedStyle(el).zIndex
);
# Should return: ["0", "2", "4", "6"]
# Measure stroke widths
Array.from(document.querySelectorAll('.mp-hero-curve__body')).map(el =>
getComputedStyle(el).strokeWidth
);
# Should return: ["16px", "20px", "17px", "22px"]
Troubleshooting
| Issue | Solution |
|---|---|
| Curves not stacking properly | Check z-index values in CSS |
| Clipping not working | Verify clip-path inset values |
| No depth perception | Ensure drop-shadow filters are applied |
| Animation stuttering | Reduce breathing frequency or disable |
| Dark mode colors wrong | Check CSS variable overrides |
| JS occlusion not working | Verify script is loaded after DOM ready |
Last Updated: 2026-04-18
Version: 2.0 β Visual Reference Guide