# Component Patterns — BBC Golden Hour

Production-tested patterns from `bbc-deck-v2.html` and `emailer-modern.html`. Copy these, don't reinvent.

## 1. Eyebrow + headline + lede

The default content block. Almost every section opens this way.

```html
<header>
  <p class="bbc-eyebrow" style="color:var(--white); opacity:.5;">How we started</p>
  <h2 style="font-family:var(--font-display); font-weight:900; font-size:var(--type-h1);
             line-height:.85; text-transform:uppercase; color:var(--white); margin:16px 0 0;">
    We asked one question
    <span class="bbc-gradient-text">too many times.</span>
  </h2>
  <p style="font-family:var(--font-body); font-weight:300; font-size:var(--type-lede);
            line-height:1.4; color:var(--stone); max-width:540px; margin-top:24px;">
    The lede paragraph. One sentence, two at most. Sets up the rest of the section.
  </p>
</header>
```

## 2. Stat block (numbers grid)

The 100+, 20+, 300%, 200% pattern from the deck.

```html
<section class="bbc-stats" style="display:grid; grid-template-columns:repeat(2,1fr); gap:32px;">
  <div class="bbc-stat-divider" style="padding-top:14px;">
    <div class="bbc-gradient-text" style="font-family:var(--font-display); font-weight:500;
         font-size:clamp(36px,6vw,64px); line-height:1;">100+</div>
    <p style="margin-top:6px; font-family:var(--font-body); font-weight:400; font-size:var(--type-caption);
              letter-spacing:1.4px; text-transform:uppercase; color:var(--white);">
      Clients worldwide
    </p>
  </div>
  <!-- repeat for each stat -->
</section>
```

Rules:
- Stats always have a gradient-bordered top divider
- Number uses `--gradient-bumblebee` text-clip
- Number weight 500 (League Spartan), label DM Sans 400 uppercase

## 3. Glass card (dark surface)

For content blocks on dark/photographic backgrounds:

```html
<div class="bbc-glass-dark" style="padding:24px 32px;">
  <h3 style="font-family:var(--font-display); font-weight:700; font-size:var(--type-h3);
             text-transform:uppercase; color:var(--white); margin:0 0 12px;">
    Stage 01 · Discovery
  </h3>
  <p style="font-family:var(--font-body); font-weight:300; color:var(--white); opacity:.8; margin:0;">
    Card body copy goes here.
  </p>
</div>
```

Rules:
- Dark glass: `rgba(255,255,255,.12)` bg, `rgba(255,255,255,.85)` border, `blur(21px)`
- Light glass: `rgba(255,255,255,.4)` bg, solid `--white` border, same blur
- Always `border-radius: var(--r-btn)` (10px)

## 4. Buttons

Primary, urgent, hero, secondary — pick one per section.

```html
<a href="#" class="bbc-btn bbc-btn-gradient">Get the deck</a>
<a href="#" class="bbc-btn bbc-btn-ember">Book the call</a>
<a href="#" class="bbc-btn bbc-btn-outline">Learn more</a>
```

Hierarchy:
- `bbc-btn-gradient` — hero CTA (one per page max)
- `bbc-btn-ember` — solid urgent (e.g., "Book a call")
- `bbc-btn-gold` — primary action (gold→amber gradient, black text)
- `bbc-btn-outline` — secondary, on dark
- `bbc-btn-outline-light` — secondary, on light

Padding `14px 28px`, radius 10px, transform on hover, no harsh shadows.

## 5. Gradient divider bar

The thin gradient line between sections:

```html
<div style="height:3px; background:var(--gradient-brand); width:100%;"></div>
```

Or as a partial bar (deck pattern, ~40% width):

```html
<div style="height:3px; background:var(--gradient-brand); width:40%; max-width:600px;"></div>
```

## 6. Gradient strip (slide-3 style)

The angled gradient bar at the bottom of a section:

```html
<div style="height:38px; width:80%; background:var(--gradient-warm-rev);
            transform:skewY(-1deg); margin-top:48px;"></div>
```

## 7. Skewed circle (signature shape)

Use for image masks, accent shapes — never perfect circles:

```html
<div style="width:240px; height:240px; border-radius:62% 38% 55% 45% / 48% 52% 48% 52%;
            background:var(--gradient-warm); box-shadow:var(--shadow-card);">
</div>
```

Or via the utility class:

```html
<div class="bbc-skewed" style="width:240px; height:240px; background:var(--gradient-warm);"></div>
```

## 8. Grain layer

Required on every dark surface:

```html
<section style="position:relative; isolation:isolate; background:var(--deep); overflow:hidden;">
  <div class="bbc-grain"></div>
  <!-- everything goes inside, with z-index:2 to sit above grain -->
  <div style="position:relative; z-index:2;">
    <!-- content -->
  </div>
</section>
```

The `bbc-grain` utility uses `grain.png` from `assets/grain/`. Place that file alongside the HTML.

## 9. Cover slide / hero section

The first frame of every deck or emailer:

```html
<section style="position:relative; isolation:isolate; min-height:600px; padding:56px 32px 90px;
                background:var(--deep) url('assets/backgrounds/s1-bg.jpg') center/cover no-repeat;
                color:var(--white); display:flex; flex-direction:column; justify-content:flex-start;">
  <div class="bbc-grain"></div>

  <div style="position:relative; z-index:2; text-align:center;">
    <p class="bbc-eyebrow-wide" style="color:var(--white); opacity:.3; margin-bottom:48px;">
      The Bumblebee Branding Company
    </p>

    <h1 style="font-family:var(--font-display); font-weight:900; font-size:var(--type-hero);
               line-height:.85; color:var(--white); text-transform:uppercase; max-width:530px; margin:0 auto;">
      We don't build brands.
      <br>
      <span class="bbc-gradient-text">We build systems<br>that make them inevitable.</span>
    </h1>

    <p style="margin:32px auto 0; max-width:316px; font-family:var(--font-body); font-weight:400;
              font-size:var(--type-lede); color:var(--warm-text);">
      From chaos to system. From guesswork to growth.
    </p>
  </div>

  <p style="position:relative; z-index:2; margin-top:auto; padding-top:80px; font-family:var(--font-body);
            font-weight:400; font-size:var(--type-caption); letter-spacing:2px; opacity:.3;
            color:var(--white); text-align:center; mix-blend-mode:plus-lighter;">
    thebumblebee.in | ahead@thebumblebee.in
  </p>
</section>
```

## 10. Closing slide

Mirror of cover. Logo + contact + tagline.

```html
<section style="position:relative; isolation:isolate; min-height:500px; padding:64px 32px;
                background:var(--gradient-warm-rev); color:var(--white); text-align:center;">
  <div class="bbc-grain"></div>

  <div style="position:relative; z-index:2;">
    <img src="assets/logo/BBC New Color 1-01.png" alt="BBC" style="height:80px; margin:0 auto 48px;">

    <h2 style="font-family:var(--font-display); font-weight:900; font-size:var(--type-h1);
               line-height:.85; text-transform:uppercase; color:var(--white); margin:0;">
      Choose to <span style="font-style:italic; font-family:var(--font-elegant); font-weight:600;">bee</span> ahead.
    </h2>

    <p style="margin:24px auto 0; max-width:460px; font-family:var(--font-body); font-weight:300;
              font-size:var(--type-lede); color:var(--white); opacity:.85;">
      thebumblebee.in &nbsp;·&nbsp; ahead@thebumblebee.in
    </p>
  </div>
</section>
```

## 11. Image treatment

All photographic images carry the BBC treatment:

- Grain layer above the image (`mix-blend-mode:overlay; opacity:.20`)
- Often combined with a vignette or partial gradient overlay
- Founders/team carricatures from `assets/team/` — never use stock photography for people

## 12. Logo placement

- **Top-left** of every interior slide/page (60–80px height)
- **Center, large** on cover and closing
- **Bottom-strip** with contact info, opacity 0.3, mix-blend-mode plus-lighter
