skills/collage-web-design/SKILL.md
Collage as a web design aesthetic — overlapping elements, mixed media, cut-out shapes, scrapbook layouts, and editorial magazine spreads adapted for the web. CSS techniques for layered compositions using z-index stacking, clip-path, mix-blend-mode, parallax layering, and grid-breaking layouts. Activate on 'collage web', 'editorial layout', 'magazine layout', 'overlapping elements', 'scrapbook', 'cut-out aesthetic', 'mixed media web', 'layered composition', 'grid-breaking', 'editorial web design', 'fashion website layout', 'David Carson'. NOT for photo collage/gallery grids (use collage-layout-expert), maximalist density (use maximalist-web-design), neobrutalism (use neobrutalist-web-designer).
npx skillsauth add curiositech/windags-skills collage-web-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Creates web experiences with overlapping, layered, grid-breaking compositions inspired by editorial magazine spreads, scrapbooks, and mixed-media art. This is not about photo gallery grids — it is about the aesthetic of intentional visual overlap, cut-out shapes, blend modes, and typography-as-imagery that breaks the rectangular monotony of standard web layouts.
Background Analysis:
├── Dark background (< 40% lightness)
│ ├── Text over image → mix-blend-mode: difference (always readable)
│ ├── Image over image → mix-blend-mode: screen (brightens overlap)
│ └── Accent color → mix-blend-mode: lighten (preserves vibrancy)
├── Light background (> 60% lightness)
│ ├── Image overlay → mix-blend-mode: multiply (darkens where overlap)
│ ├── Text emphasis → mix-blend-mode: color-burn (high contrast)
│ └── Subtle blend → mix-blend-mode: soft-light (gentle interaction)
└── Mixed/variable background
└── Test all blends → Use normal as fallback for accessibility
If primary content (text, CTA, navigation):
z-index: 100+
│
├── If overlapping decorative elements
│ └── Decorative z-index: 1-50, pointer-events: none
│
└── If background elements
└── Background z-index: -1 to 0
If equal importance elements:
Use transform: translateZ() for 3D layering instead
│
└── More important visually = higher translateZ value
Overlap Assessment:
├── Text over image?
│ ├── High contrast image → Add semi-transparent background
│ ├── Low contrast image → Use mix-blend-mode: difference
│ └── Busy image → Clip-path image to create clear text areas
├── Image over image?
│ ├── Similar tones → Use contrasting blend mode (multiply/screen)
│ ├── Different subjects → Partial overlap (30-60% maximum)
│ └── Same subject → Full blend with multiply/overlay
└── Element over interactive content?
└── pointer-events: none on overlay OR restructure layout
Screen Width < 768px:
├── Heavy overlaps (>50% area coverage)
│ └── Convert to vertical stack, remove overlaps
├── Light overlaps (<30% area coverage)
│ ├── Maintain 1-2 subtle overlaps for personality
│ └── Reduce rotation angles to 1-2 degrees
├── Blend modes
│ └── Disable (set to normal) — mobile performance + accessibility
└── Clip-paths
├── Simple shapes → Keep
└── Complex polygons → Simplify or remove
Symptom: Nothing stands out, text disappears, users can't find key content Detection: If >70% of viewport has overlapping elements, you've hit this Fix: Establish clear focal hierarchy — 1 primary element, 2-3 supporting, rest background
Symptom: Text becomes unreadable on certain backgrounds, dark-on-dark or light-on-light
Detection: Test by setting all blend modes to normal — if text disappears, you have contrast loss
Fix: Add CSS fallbacks: mix-blend-mode: multiply; @supports not (mix-blend-mode: multiply) { background: rgba(255,255,255,0.9); }
Symptom: Elements flicker, appear/disappear on hover, or stack incorrectly across components
Detection: If z-index values exceed 1000 or you use z-index: 99999, you have z-index chaos
Fix: Implement consistent z-index scale: decorative (1-50), content (51-100), modals (101-200)
Symptom: Collage becomes unusable on mobile — text covered, buttons unreachable
Detection: If mobile bounce rate >20% higher than desktop, check overlap accessibility
Fix: Use @media (max-width: 768px) to flatten overlaps into readable linear flow
Symptom: Screen readers can't access content, text selection broken, focus indicators disappear
Detection: If clip-path applied to containers with interactive content or text
Fix: Apply clip-path only to <img> tags and decorative elements, never to text containers
Scenario: Fashion brand wants editorial magazine spread as hero section
Step 1 - Analyze Reference: Magazine spread has: large model photo (60% width), overlapping text block (30% width), small accent photo (20% width), handwritten annotation
Step 2 - Choose Blend Mode:
Light background → Primary image uses mix-blend-mode: multiply for text overlay
Accent photo uses mix-blend-mode: screen for ghostly effect
Step 3 - Z-Index Hierarchy:
.hero-main-image { z-index: 1; } /* Foundation */
.hero-accent-image { z-index: 2; } /* Supporting */
.hero-text-block { z-index: 3; } /* Key content */
.hero-annotation { z-index: 4; } /* Accent detail */
Step 4 - Overlap Testing:
Text block overlaps 40% with main image — add subtle background: background: rgba(247, 243, 238, 0.95);
Expert catches: Novice would apply blend mode to text container → illegible. Expert applies blend mode to images only, ensures text has background for contrast.
Step 5 - Mobile Restructure:
@media (max-width: 768px) {
.hero-main-image { position: static; width: 100%; }
.hero-text-block { position: static; transform: none; background: white; }
.hero-accent-image { width: 60%; transform: rotate(2deg); }
}
pointer-events: nonemix-blend-mode correctly (not causing contrast loss)This skill should NOT be used for:
collage-layout-expert instead (different "collage" meaning)maximalist-web-design for density without artistic overlapweb-design-expert for structured layoutsneobrutalist-web-designer for bold geometric approachesvaporwave-glassomorphic-ui-designer for translucent layeringDelegate to other skills when:
maximalist-web-designweb-design-experttypography-expertvaporwave-glassomorphic-ui-designertools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.