---
version: "alpha"
name: "Lumina - Designing Clarity"
description: "Lumina Designing Feature Section is designed for highlighting product capabilities and value points. Key features include reusable structure, responsive behavior, and production-ready presentation. It is suitable for component libraries and responsive product interfaces."
colors:
  primary: "#E85D22"
  secondary: "#D4D2CB"
  tertiary: "#F0F024"
  neutral: "#D4D2CB"
  background: "#E85D22"
  surface: "#D4D2CB"
  text-primary: "#6B6963"
  text-secondary: "#1A1A1A"
  border: "#E2DFD8"
  accent: "#E85D22"
typography:
  display-lg:
    fontFamily: "Inter"
    fontSize: "72px"
    fontWeight: 300
    lineHeight: "72px"
    letterSpacing: "-0.025em"
  body-md:
    fontFamily: "Inter"
    fontSize: "12px"
    fontWeight: 300
    lineHeight: "16px"
  label-md:
    fontFamily: "Inter"
    fontSize: "14px"
    fontWeight: 400
    lineHeight: "20px"
rounded:
  md: "0px"
spacing:
  base: "4px"
  sm: "2px"
  md: "4px"
  lg: "8px"
  xl: "16px"
  gap: "6px"
  card-padding: "32px"
  section-padding: "32px"
components:
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#FFFFFF"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "0px"
  button-secondary:
    textColor: "{colors.text-primary}"
    typography: "{typography.body-md}"
    rounded: "{rounded.md}"
    padding: "1px"
  button-link:
    textColor: "{colors.text-primary}"
    typography: "{typography.body-md}"
    rounded: "{rounded.md}"
    padding: "0px"
---

## Overview

- **Composition cues:**
  - Layout: Grid
  - Content Width: Full Bleed
  - Framing: Glassy
  - Grid: Strong

## Colors

The color system uses dark mode with #E85D22 as the main accent and #D4D2CB as the neutral foundation.

- **Primary (#E85D22):** Main accent and emphasis color.
- **Secondary (#D4D2CB):** Supporting accent for secondary emphasis.
- **Tertiary (#F0F024):** Reserved accent for supporting contrast moments.
- **Neutral (#D4D2CB):** Neutral foundation for backgrounds, surfaces, and supporting chrome.

- **Usage:** Background: #E85D22; Surface: #D4D2CB; Text Primary: #6B6963; Text Secondary: #1A1A1A; Border: #E2DFD8; Accent: #E85D22

## Typography

Typography relies on Inter across display, body, and utility text.

- **Display (`display-lg`):** Inter, 72px, weight 300, line-height 72px, letter-spacing -0.025em.
- **Body (`body-md`):** Inter, 12px, weight 300, line-height 16px.
- **Labels (`label-md`):** Inter, 14px, weight 400, line-height 20px.

## Layout

Layout follows a grid composition with reusable spacing tokens. Preserve the grid, full bleed structural frame before changing ornament or component styling. Use 4px as the base rhythm and let larger gaps step up from that cadence instead of introducing unrelated spacing values.

Treat the page as a grid / full bleed composition, and keep that framing stable when adding or remixing sections.

- **Layout type:** Grid
- **Content width:** Full Bleed
- **Base unit:** 4px
- **Scale:** 2px, 4px, 8px, 16px, 24px, 32px, 48px, 64px
- **Section padding:** 32px, 64px, 112px
- **Card padding:** 32px
- **Gaps:** 6px, 8px, 16px, 32px

## Elevation & Depth

Depth is communicated through glass, border contrast, and reusable shadow or blur treatments. Keep those recipes consistent across hero panels, cards, and controls so the page reads as one material system.

Surfaces should read as glass first, with borders, shadows, and blur only reinforcing that material choice.

- **Surface style:** Glass
- **Borders:** 1px #E2DFD8; 1px #D4D2CB
- **Shadows:** rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px, rgba(0, 0, 0, 0.06) 0px 1px 1px -0.5px, rgba(0, 0, 0, 0.06) 0px 3px 3px -1.5px, rgba(0, 0, 0, 0.06) 0px 6px 6px -3px, rgba(0, 0, 0, 0.06) 0px 12px 12px -6px, rgba(0, 0, 0, 0.06) 0px 24px 24px -12px
- **Blur:** 12px

## Shapes

Shapes rely on a tight radius system anchored by 9999px and scaled across cards, buttons, and supporting surfaces. Icon geometry should stay compatible with that soft-to-controlled silhouette.

Use the radius family intentionally: larger surfaces can open up, but controls and badges should stay within the same rounded DNA instead of inventing sharper or pill-only exceptions.

- **Corner radii:** 9999px
- **Icon treatment:** Linear
- **Icon sets:** Solar

## Components

Anchor interactions to the detected button styles.

### Buttons
- **Primary:** background #E85D22, text #FFFFFF, radius 0px, padding 0px, border 0px solid rgb(229, 231, 235).
- **Secondary:** text #6B6963, radius 0px, padding 1px, border 0px 0px 1px solid #D4D2CB.
- **Links:** text #6B6963, radius 0px, padding 0px, border 0px solid rgb(229, 231, 235).

### Iconography
- **Treatment:** Linear.
- **Sets:** Solar.

## Do's and Don'ts

Use these constraints to keep future generations aligned with the current system instead of drifting into adjacent styles.

### Do
- Do use the primary palette as the main accent for emphasis and action states.
- Do keep spacing aligned to the detected 4px rhythm.
- Do reuse the Glass surface treatment consistently across cards and controls.
- Do keep corner radii within the detected 9999px family.

### Don't
- Don't introduce extra accent colors outside the core palette roles unless the page needs a new semantic state.
- Don't mix unrelated shadow or blur recipes that break the current depth system.
- Don't exceed the detected moderate motion intensity without a deliberate reason.

## Motion

Motion feels controlled and interface-led across text, layout, and section transitions. Timing clusters around 150ms and 300ms. Easing favors ease and cubic-bezier(0.4. Hover behavior focuses on text and color changes. Scroll choreography uses GSAP ScrollTrigger for section reveals and pacing.

**Motion Level:** moderate

**Durations:** 150ms, 300ms

**Easings:** ease, cubic-bezier(0.4, 0, 0.2, 1)

**Hover Patterns:** text, color

**Scroll Patterns:** gsap-scrolltrigger

## WebGL

Reconstruct the graphics as a full-bleed background field using webgl, renderer, alpha, antialias, dpr clamp, custom shaders. The effect should read as retro-futurist, technical, and meditative: dot-matrix particle field with green on black and sparse spacing. Build it from dot particles + soft depth fade so the effect reads clearly. Animate it as slow breathing pulse. Interaction can react to the pointer, but only as a subtle drift. Preserve dom fallback.

**Id:** webgl

**Label:** WebGL

**Stack:** ThreeJS, WebGL

**Insights:**
  - **Scene:**
    - **Value:** Full-bleed background field
  - **Effect:**
    - **Value:** Dot-matrix particle field
  - **Primitives:**
    - **Value:** Dot particles + soft depth fade
  - **Motion:**
    - **Value:** Slow breathing pulse
  - **Interaction:**
    - **Value:** Pointer-reactive drift
  - **Render:**
    - **Value:** WebGL, Renderer, alpha, antialias, DPR clamp, custom shaders

**Techniques:** Dot matrix, Breathing pulse, Pointer parallax, Shader gradients, DOM fallback

**Code Evidence:**
  - **HTML reference:**
    - **Language:** html
    - **Snippet:**
      ```html
      <!-- WebGL Background -->
      <canvas id="webgl-canvas" class="fixed top-0 left-0 w-screen h-screen z-0 pointer-events-none opacity-60"></canvas>

      <!-- Main Wrapper (z-10 relative to sit above WebGL) -->
      ```
  - **JS reference:**
    - **Language:** js
    - **Snippet:**
      ```
      // 1. GSAP Masked Reveal and Initial State Animations
      document.addEventListener("DOMContentLoaded", () => {
          gsap.registerPlugin(ScrollTrigger);

          // Masked word reveal
          const revealTexts = document.querySelectorAll('.reveal-text');
          gsap.to(revealTexts, {
              y: '0%',
      …
      ```
  - **Scene setup:**
    - **Language:** js
    - **Snippet:**
      ```
      gsap.to('#anim-arrow', { opacity: 1, duration: 1, delay: 1.5, ease: 'none' });
          gsap.to('#anim-card', { opacity: 1, y: 0, duration: 1, delay: 1.5, ease: 'power3.out' });
      });

      // 2. WebGL Background Animation (Three.js)
      const initWebGL = () => {
          const canvas = document.getElementById('webgl-canvas');
      …
      ```

## ThreeJS

Reconstruct the Three.js layer as a full-bleed background field with layered spatial depth that feels retro-futurist and technical. Use alpha, antialias, dpr clamp renderer settings, perspective, ~75deg fov, plane geometry, shadermaterial materials, and ambient + key + rim lighting. Motion should read as slow orbital drift, with poster frame + dom fallback.

**Id:** threejs

**Label:** ThreeJS

**Stack:** ThreeJS, WebGL

**Insights:**
  - **Scene:**
    - **Value:** Full-bleed background field with layered spatial depth
  - **Render:**
    - **Value:** alpha, antialias, DPR clamp
  - **Camera:**
    - **Value:** Perspective, ~75deg FOV
  - **Lighting:**
    - **Value:** ambient + key + rim
  - **Materials:**
    - **Value:** ShaderMaterial
  - **Geometry:**
    - **Value:** plane
  - **Motion:**
    - **Value:** Slow orbital drift

**Techniques:** Shader materials, Timeline beats, alpha, antialias, DPR clamp, Poster frame + DOM fallback

**Code Evidence:**
  - **HTML reference:**
    - **Language:** html
    - **Snippet:**
      ```html
      <!-- WebGL Background -->
      <canvas id="webgl-canvas" class="fixed top-0 left-0 w-screen h-screen z-0 pointer-events-none opacity-60"></canvas>

      <!-- Main Wrapper (z-10 relative to sit above WebGL) -->
      ```
  - **JS reference:**
    - **Language:** js
    - **Snippet:**
      ```
      // 1. GSAP Masked Reveal and Initial State Animations
      document.addEventListener("DOMContentLoaded", () => {
          gsap.registerPlugin(ScrollTrigger);

          // Masked word reveal
          const revealTexts = document.querySelectorAll('.reveal-text');
          gsap.to(revealTexts, {
              y: '0%',
      …
      ```
  - **Scene setup:**
    - **Language:** js
    - **Snippet:**
      ```
      gsap.to('#anim-arrow', { opacity: 1, duration: 1, delay: 1.5, ease: 'none' });
          gsap.to('#anim-card', { opacity: 1, y: 0, duration: 1, delay: 1.5, ease: 'power3.out' });
      });

      // 2. WebGL Background Animation (Three.js)
      const initWebGL = () => {
          const canvas = document.getElementById('webgl-canvas');
      …
      ```
