> ## Documentation Index
> Fetch the complete documentation index at: /llms.txt
> Use this file to discover all available pages before exploring further.

# Spotlight Card

> A card with a scripted cursor spotlight and lit border.

# Spotlight Card

A card with a scripted cursor spotlight and lit border.

**Spotlight Card**

```html spotlight-card.html
<!--
  Spotlight Card - catalog component for HyperFrames.

  Paste the markup and CSS into a composition. Drive the timeline integration
  from a paused GSAP timeline so renders remain deterministic.
-->

<div class="hf-catalog-spotlight-card">
  <div class="mesh"></div>
  <div class="card">
    <div class="spot"></div>
    <div>
      <h3>Spotlight Card</h3>
      <p>A card with a scripted cursor spotlight and lit border.</p>
    </div>
  </div>
</div>

<style>
  .hf-catalog-spotlight-card {
    --hf-accent: var(--accent, #18181b);
    --hf-ink: #111827;
    --hf-muted: #6b7280;
    --hf-surface: #ffffff;
    color: var(--hf-ink);
    font-family: Inter, system-ui, sans-serif;
  }
  .hf-catalog-spotlight-card {
    position: relative;
    width: 760px;
    height: 428px;
    overflow: hidden;
    border-radius: 30px;
    background: #080b12;
    box-shadow: 0 28px 80px rgba(15, 23, 42, 0.2);
  }
  .hf-catalog-spotlight-card .mesh {
    position: absolute;
    inset: -22%;
    filter: blur(44px);
    opacity: 0.88;
    background:
      radial-gradient(
        circle at var(--hf-x1, 20%) var(--hf-y1, 30%),
        rgba(255, 255, 255, 0.45) 0 18%,
        transparent 32%
      ),
      radial-gradient(
        circle at var(--hf-x2, 76%) var(--hf-y2, 52%),
        rgba(255, 255, 255, 0.18) 0 16%,
        transparent 34%
      ),
      radial-gradient(
        circle at var(--hf-x3, 46%) var(--hf-y3, 78%),
        rgba(255, 255, 255, 0.08) 0 18%,
        transparent 34%
      );
  }
  .hf-catalog-spotlight-card .card {
    position: absolute;
    inset: 74px 92px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 26px;
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    display: grid;
    place-items: center;
    text-align: center;
    overflow: hidden;
  }
  .hf-catalog-spotlight-card .spot {
    position: absolute;
    width: 260px;
    height: 260px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.5), transparent 65%);
    transform: translate(var(--hf-spot-x, 0px), var(--hf-spot-y, 0px));
    mix-blend-mode: screen;
  }
  .hf-catalog-spotlight-card .particle {
    position: absolute;
    left: 50%;
    top: 54%;
    width: 12px;
    height: 20px;
    border-radius: 3px;
    background: var(--c);
    transform: translate(var(--hf-px, 0px), var(--hf-py, 0px)) rotate(var(--hf-pr, 0deg));
    opacity: var(--hf-po, 0);
  }
  .hf-catalog-spotlight-card h3 {
    margin: 0;
    font-size: 44px;
    letter-spacing: -0.04em;
  }
  .hf-catalog-spotlight-card p {
    margin: 8px 0 0;
    color: rgba(255, 255, 255, 0.7);
  }
</style>

<!--
  Timeline integration:
  tl.fromTo('.hf-catalog-spotlight-card .mesh', { '--hf-x1': '18%', '--hf-y1': '28%', '--hf-x2': '78%', '--hf-y2': '46%', '--hf-x3': '44%', '--hf-y3': '80%' }, { '--hf-x1': '34%', '--hf-y1': '42%', '--hf-x2': '62%', '--hf-y2': '60%', '--hf-x3': '58%', '--hf-y3': '64%', duration: 4, ease: 'sine.inOut' }, startTime); tl.fromTo('.hf-catalog-spotlight-card .spot', { '--hf-spot-x': '-120px', '--hf-spot-y': '-70px' }, { '--hf-spot-x': '190px', '--hf-spot-y': '90px', duration: 3, ease: 'sine.inOut' }, startTime); const particles_spotlight_card = gsap.utils.toArray('.hf-catalog-spotlight-card .particle'); if (particles_spotlight_card.length) { tl.fromTo(particles_spotlight_card, { '--hf-po': 0, '--hf-px': '0px', '--hf-py': '0px', '--hf-pr': '0deg' }, { '--hf-po': 1, '--hf-px': (i) => (Math.cos(i * 0.83) * 250) + 'px', '--hf-py': (i) => (-120 - Math.sin(i * 0.61) * 120) + 'px', '--hf-pr': (i) => (180 + i * 37) + 'deg', duration: 0.8, stagger: 0.015, ease: 'power2.out' }, startTime + 0.2); }
-->
```

Copy npx hyperframes add spotlight-card to the clipboard

That writes one file: `compositions/components/spotlight-card.html`.

## Paste it into your composition

Open `compositions/components/spotlight-card.html` and copy what is inside into your own composition.
The file opens with a comment header that walks you through it.

A component has no size or duration of its own. It takes both from the composition
you paste it into.

{/* hf:generated-footer */}

Tagged `effect`.

## Related topics

* [Browse the complete Catalog](/catalog.md)
* [Add assets and Catalog items in the browser editor](/studio/assets-and-blocks.md)
* [Put blocks together into one video](/concepts/compositions.md)
