# SignatureGradient

> The signature Digital Crew gradient — indigo → pink → amber (`dc-andre`, `dc-camille`, `dc-amber`) — in its four forms.

## Facts

- **Product**: Crew OS
- **Family**: Motion
- **Kind**: Showcase page (tokens and patterns)
- **Source**: `digitalcrew-orchestrator: app/globals.css`
- **Live preview**: /design/components/signature-gradient/preview.html
- **Page**: /design/components/signature-gradient

## Guidelines

- `.dc-gradient-border`: a 300%-wide gradient moving on a 5s ease loop behind 2px of padding, around the Digital Worker onboarding card; still under reduced motion.
- `.dc-gradient-border-idle`: the same stops at 55%, static.
- `.dc-gradient-text`: one gradient word in an onboarding heading ("Let's build your *Digital Crew*").
- `.dc-gradient-border-sober` + `.dc-gradient-sober`: the calm report panel — a 135° border at 28–45% and a 160° wash at 4–10% (16% in dark).

**Use it** only for the onboarding and its report. It is the crew's colours broken out of the ink; don't use it for buttons, backgrounds or body text, and don't invent new gradients.

## Example

```html
<div id="root" class="p-6"></div>
<script>
(function () {
  var h = React.createElement, DC = window.DigitalCrew, I = DC.Icons;
function App() {
  return h("div", { className: "grid grid-cols-2 gap-5" },
    h("div", { className: "grid gap-2" },
      h("span", { className: "text-xs text-muted-foreground" }, ".dc-gradient-border — 300% gradient moving on a 5s loop (still under reduced motion)"),
      h("div", { className: "dc-gradient-border rounded-2xl p-[2px]" },
        h("div", { className: "rounded-[14px] bg-card p-5" },
          h("p", { className: "text-lg font-semibold" }, "Let's build your ", h("span", { className: "dc-gradient-text" }, "Digital Crew")),
          h("p", { className: "mt-1 text-sm text-muted-foreground" }, "A great team starts with knowing you.")))),
    h("div", { className: "grid gap-2" },
      h("span", { className: "text-xs text-muted-foreground" }, ".dc-gradient-border-idle — the same stops at 55%, static"),
      h("div", { className: "dc-gradient-border-idle rounded-2xl p-[2px]" },
        h("div", { className: "rounded-[14px] bg-card p-5" },
          h("p", { className: "text-lg font-semibold" }, "Personal"),
          h("p", { className: "mt-1 text-sm text-muted-foreground" }, "For your own projects, side hustles and daily life.")))),
    h("div", { className: "grid gap-2" },
      h("span", { className: "text-xs text-muted-foreground" }, ".dc-gradient-border-sober + .dc-gradient-sober — the report panel"),
      h("div", { className: "dc-gradient-border-sober rounded-2xl p-px" },
        h("div", { className: "dc-gradient-sober rounded-2xl bg-card p-5" },
          h("p", { className: "text-sm font-semibold" }, "Your crew report"),
          h("p", { className: "mt-1 text-sm text-muted-foreground" }, "3 Digital Workers matched to your goals · ready in 2 min")))),
    h("div", { className: "grid content-start gap-2" },
      h("span", { className: "text-xs text-muted-foreground" }, "The stops as tokens"),
      h("div", { className: "flex h-10 overflow-hidden rounded-lg" },
        h("div", { className: "flex-1", style: { background: "var(--dc-andre)" } }),
        h("div", { className: "flex-1", style: { background: "var(--dc-camille)" } }),
        h("div", { className: "flex-1", style: { background: "var(--dc-amber)" } })),
      h("code", { className: "font-mono text-xs text-muted-foreground" }, "dc-andre #6366f1 · dc-camille #ec4899 · dc-amber #f59e0b")));
}
  ReactDOM.createRoot(document.getElementById("root")).render(h(DC.TooltipProvider, { delayDuration: 80 }, h(App)));
})();
</script>
```

## More in Motion

- [ActionFocusSession](/design/components/action-focus-session.md): The focus timebox for one task in the actions cockpit: a live billable clock with approve, start, pause, run and done, and a burst of sparkles on completion.
- [CardResize](/design/components/card-resize.md): A container that tweens its width and height when its content changes (`.t-resize`).
- [ChapterScrubber](/design/components/chapter-scrubber.md): A rail of ticks, one per chapter, that swell like a dock under the pointer, with a card previewing the hovered chapter.
- [ContainerScroll](/design/components/container-scroll.md): A hero block where a device-like frame starts tilted back in 3D and straightens as the page scrolls, with the title drifting up.
- [FeatureSlideshow](/design/components/feature-slideshow.md): A step-by-step feature explainer: an accordion of steps on the left that advances on a timer, a progress line on the open step, and a large media slot on the right.
- [FirstBentoAnimation](/design/components/first-bento-animation.md): A self-playing chat vignette for the bento grid: a user asks for a meeting slot, the Digital Crew avatar shows typing dots, then the reply streams in as a `Reasoning` block.
- [FourthBentoAnimation](/design/components/fourth-bento-animation.md): A scheduling vignette for the bento grid: a week ruler, three task bars that spring into place, and a time cursor that follows the pointer.
- [HyperText](/design/components/hyper-text.md): A monospaced, uppercase text effect: letters scramble through random characters, then lock in from left to right.
- [InfiniteSlider](/design/components/infinite-slider.md): A JavaScript-driven endless strip (Framer Motion) that renders its children twice and slides them in a loop, optionally slowing on hover.
- [JoyfulTaskCheckbox](/design/components/joyful-task-checkbox.md): A task checkbox with a small, restrained completion moment: one soft bloom, two sparks, then stillness.
- [Lottie](/design/components/lottie.md): The lottie-react player, exported as-is, for the Lottie animations that ship with Crew OS (`animations/*.json`).
- [Marquee](/design/components/marquee.md): An endless CSS scroll of repeated content, horizontal or vertical, speed set with two CSS variables.
- [MotionScale](/design/components/motion-scale.md): The shared motion scale made visible: the same distance travelled on each duration token and each easing, with a Replay button.
- [NumberFlowCounter](/design/components/number-flow-counter.md): A small dark pill that shows one number at a time and rolls its digits to the next value every two seconds (NumberFlow).
- [OrbitingCircles](/design/components/orbiting-circles.md): Places its children on a circular orbit around the centre of the parent and spins them, with an optional faint ring for the path.
- [ShimmerText](/design/components/shimmer-text.md): A status line with a light band sweeping across its glyphs — Max's "Thinking…" and live tool lines (`.t-shimmer`).
- [SkeletonReveal](/design/components/skeleton-reveal.md): A skeleton that cross-blurs into the loaded content, so the swap reads as one motion (`.t-skel`).
- [StreamingText](/design/components/streaming-text.md): Streamed words resolving through a soft cross-blur, one after another (`.t-stream-w` → `.is-in`).
- [ThirdBentoAnimation](/design/components/third-bento-animation.md): An insight vignette for the bento grid: a smooth area line draws itself, a dot pulses at its midpoint and a dark pill above it ticks through values.
- [UniboxMotion](/design/components/unibox-motion.md): The Unibox's shared motion vocabulary: every surface moves on the same few springs, so the whole inbox feels like one physical material.
