// Maple Pavers Explorer — HERO section.
// Five LOCKUP treatments of the 3-step flow:
//   1) Enter address (or upload)  2) Pick materials & style  3) Render + first estimate
//   — ALL IN 90 SECONDS. Each ends with the address on-ramp + one clear CTA.
(function () {
  const { Button, Badge } = window.MaplePaversDesignSystem_8de4d8;
  const { Icon, Overline, Stars, PHOTO, ASSET, PHONE, startQuote } = window.MP;

  const ADDRS = ['123 Maple Ave, Toronto', '88 Forest Hill Rd', '12 Lakeshore Blvd, Etobicoke', '45 Bayview Cres, Markham'];

  const STEPS = [
    { icon: 'map-pin', short: 'Your address', t: 'Enter your address', d: 'Or upload a photo of your home.', tileDesc: 'Enter your property address.', img: 't-address.jpg' },
    { icon: 'layers', short: 'Your style', t: 'Pick materials & style', d: 'Choose your paver look and colour.', tileDesc: 'Choose the perfect paver style.', img: 't-style.jpg' },
    { icon: 'tag', short: 'Render + price', t: 'Get your render + estimate', d: 'A finished preview and a first price.', tileDesc: 'See your AI render and instant price.', img: 't-render.jpg' },
  ];

  function usePlaceholder(active) {
    const [txt, setTxt] = React.useState(ADDRS[0]);
    React.useEffect(() => {
      if (!active) return;
      let cancelled = false; const timers = [];
      const wait = (ms) => new Promise((r) => timers.push(setTimeout(r, ms)));
      (async function loop() {
        while (!cancelled) {
          for (const a of ADDRS) {
            for (let i = 1; i <= a.length; i++) { if (cancelled) return; setTxt(a.slice(0, i)); await wait(52); }
            await wait(1400);
            for (let i = a.length; i >= 0; i--) { if (cancelled) return; setTxt(a.slice(0, i)); await wait(24); }
            await wait(280);
          }
        }
      })();
      return () => { cancelled = true; timers.forEach(clearTimeout); };
    }, [active]);
    return txt;
  }

  function AddressField() {
    const [val, setVal] = React.useState('');
    const [focus, setFocus] = React.useState(false);
    const ph = usePlaceholder(!focus && !val);
    return (
      <div style={{ display: 'flex', alignItems: 'center', gap: 8, border: '1.5px solid', borderColor: focus ? 'var(--terracotta)' : 'var(--border-default)', borderRadius: 'var(--radius)', padding: '11px 13px', background: 'var(--white)', transition: 'border-color var(--dur)' }}>
        <Icon name="map-pin" size={17} color="var(--terracotta)" />
        <input value={val} onChange={(e) => setVal(e.target.value)} onFocus={() => setFocus(true)} onBlur={() => setFocus(false)}
          placeholder={focus ? 'Enter your address…' : ph}
          style={{ flex: 1, border: 0, outline: 'none', fontFamily: 'var(--font-body)', fontSize: 16, background: 'transparent', color: 'var(--text-body)', minWidth: 0 }} />
        <button onClick={startQuote} aria-label="Start" className="mp-press" style={{ border: 0, cursor: 'pointer', width: 38, height: 38, borderRadius: 'var(--radius-sm)', background: 'var(--terracotta)', color: '#fff', display: 'flex', alignItems: 'center', justifyContent: 'center', flex: 'none' }}>
          <Icon name="upload" size={17} />
        </button>
      </div>
    );
  }

  function CtaBtn({ children }) {
    return (
      <button onClick={startQuote} className="mp-press mp-cta-cue" style={{ width: '100%', border: 0, cursor: 'pointer', background: 'var(--terracotta)', color: '#fff', borderRadius: 'var(--radius)', padding: '15px', fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 14, letterSpacing: '0.08em', textTransform: 'uppercase', display: 'flex', alignItems: 'center', justifyContent: 'center', gap: 10 }}>
        <Icon name="sparkles" size={17} /> {children} <Icon name="arrow" size={17} />
      </button>
    );
  }

  // "ALL IN 90 SECONDS" punchline lockup
  function Ninety({ onDark, center }) {
    return (
      <div style={{ display: 'flex', alignItems: 'center', justifyContent: center ? 'center' : 'flex-start', gap: 8 }}>
        <span style={{ height: 1, width: 22, background: onDark ? 'rgba(248,240,229,0.4)' : 'var(--border-default)' }} />
        <span style={{ fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 11.5, letterSpacing: '0.14em', textTransform: 'uppercase', whiteSpace: 'nowrap', color: onDark ? 'var(--clay)' : 'var(--terracotta)' }}>All in 90 seconds</span>
        <span style={{ height: 1, width: 22, background: onDark ? 'rgba(248,240,229,0.4)' : 'var(--border-default)' }} />
      </div>
    );
  }

  function HeroTop({ h, sub }) {
    return (
      <div style={{ position: 'relative', height: h, overflow: 'hidden' }}>
        <div style={{ position: 'absolute', inset: 0, backgroundImage: `url(${PHOTO}hero-driveway.png)`, backgroundSize: 'cover', backgroundPosition: 'center' }} />
        <div style={{ position: 'absolute', inset: 0, background: 'linear-gradient(0deg, rgba(20,18,16,0.66), rgba(20,18,16,0.1))' }} />
        <div style={{ position: 'absolute', top: 18, left: 22, right: 22 }}>
          <Overline onDark color="var(--beige-150)">Family-Owned Since 1992</Overline>
          <h1 style={{ fontFamily: 'var(--font-display)', fontWeight: 700, fontSize: 30, lineHeight: 1.05, color: 'var(--beige-150)', margin: '8px 0 0' }}>{sub}</h1>
        </div>
      </div>
    );
  }

  const Card = ({ children, pull = -46 }) => (
    <div style={{ margin: `${pull}px 18px 34px`, position: 'relative', background: 'var(--color-surface)', borderRadius: 'var(--radius-lg)', boxShadow: 'var(--shadow-md)', border: '1px solid var(--border-subtle)', padding: '20px 18px' }}>{children}</div>
  );

  // ── L1 — Horizontal numbered row (chips + connectors) ──
  function StepsRow() {
    return (
      <section style={{ background: 'var(--color-bg)' }}>
        <HeroTop h={188} sub={<>From address<br />to estimate.</>} />
        <Card>
          <Ninety center />
          <div style={{ display: 'flex', alignItems: 'flex-start', margin: '16px 0 18px' }}>
            {STEPS.map((s, i) => (
              <React.Fragment key={s.short}>
                <div style={{ flex: 1, display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 7, textAlign: 'center' }}>
                  <span style={{ width: 36, height: 36, borderRadius: 'var(--radius-full)', background: 'var(--terracotta)', color: '#fff', display: 'flex', alignItems: 'center', justifyContent: 'center', fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 14 }}>{i + 1}</span>
                  <span style={{ fontFamily: 'var(--font-body)', fontSize: 11.5, fontWeight: 700, color: 'var(--text-strong)', lineHeight: 1.2 }}>{s.short}</span>
                </div>
                {i < STEPS.length - 1 && <Icon name="chevron-right" size={16} color="var(--taupe)" style={{ marginTop: 10, flex: 'none' }} />}
              </React.Fragment>
            ))}
          </div>
          <div style={{ marginBottom: 11 }}><AddressField /></div>
          <CtaBtn>Design My Driveway</CtaBtn>
        </Card>
      </section>
    );
  }

  // ── L2 — Vertical numbered list (icon + title + desc) ──
  function StepsList() {
    return (
      <section style={{ background: 'var(--color-bg)' }}>
        <HeroTop h={196} sub={<>Three taps to<br />your new driveway.</>} />
        <Card>
          <div style={{ display: 'flex', flexDirection: 'column', gap: 14, marginBottom: 16 }}>
            {STEPS.map((s, i) => (
              <div key={s.t} style={{ display: 'flex', gap: 13, alignItems: 'center' }}>
                <span style={{ width: 40, height: 40, borderRadius: 'var(--radius)', background: 'var(--terracotta-100)', color: 'var(--terracotta)', display: 'flex', alignItems: 'center', justifyContent: 'center', flex: 'none', position: 'relative' }}>
                  <Icon name={s.icon} size={20} />
                  <span style={{ position: 'absolute', top: -5, left: -5, width: 19, height: 19, borderRadius: 'var(--radius-full)', background: 'var(--terracotta)', color: '#fff', fontSize: 10.5, fontWeight: 700, fontFamily: 'var(--font-body)', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>{i + 1}</span>
                </span>
                <div>
                  <div style={{ fontFamily: 'var(--font-body)', fontSize: 13.5, fontWeight: 700, color: 'var(--text-strong)' }}>{s.t}</div>
                  <div style={{ fontFamily: 'var(--font-body)', fontSize: 12, color: 'var(--text-muted)', lineHeight: '17px' }}>{s.d}</div>
                </div>
              </div>
            ))}
          </div>
          <div style={{ marginBottom: 12 }}><Ninety /></div>
          <div style={{ marginBottom: 11 }}><AddressField /></div>
          <CtaBtn>Design My Driveway</CtaBtn>
        </Card>
      </section>
    );
  }

  // ── L3 — Video-card image tiles (matches the supplied sample) ──
  function StepsTiles() {
    return (
      <section style={{ background: 'var(--color-bg)' }}>
        <HeroTop h={188} sub={<>Premium pavers,<br />priced in 90 seconds.</>} />
        <div style={{ margin: '-46px 18px 18px', position: 'relative', background: 'var(--beige-100)', borderRadius: 'var(--radius-lg)', boxShadow: 'var(--shadow-md)', border: '1px solid var(--border-subtle)', padding: '14px 13px' }}>
          <div style={{ display: 'flex', gap: 8, marginBottom: 12 }}>
            {STEPS.map((s, i) => (
              <div key={s.short} className="mp-tile mp-tile-in" style={{ flex: 1, background: 'var(--beige-50)', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-md)', padding: '8px 8px 12px', display: 'flex', flexDirection: 'column', gap: 9, animationDelay: (i * 0.1) + 's' }}>
                <div style={{ position: 'relative', width: '100%', paddingBottom: '100%', borderRadius: 'var(--radius)', overflow: 'hidden' }}>
                  <img src={PHOTO + s.img} alt={s.short} style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', display: 'block' }} />
                </div>
                <div style={{ textAlign: 'center' }}>
                  <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: 6, marginBottom: 5 }}>
                    <span style={{ height: 1, width: 11, background: 'var(--taupe)' }} />
                    <span style={{ fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 9, letterSpacing: '0.1em', textTransform: 'uppercase', color: 'var(--terracotta)' }}>Step {i + 1}</span>
                    <span style={{ height: 1, width: 11, background: 'var(--taupe)' }} />
                  </div>
                  <div style={{ fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 13, color: 'var(--text-strong)', lineHeight: 1.15 }}>{s.short}</div>
                  <p style={{ fontFamily: 'var(--font-body)', fontSize: 10.5, lineHeight: '15px', color: 'var(--text-muted)', margin: '4px 0 0' }}>{s.tileDesc}</p>
                </div>
              </div>
            ))}
          </div>
          <CtaBtn>Design My Driveway</CtaBtn>
        </div>
      </section>
    );
  }

  // ── L4 — Connected timeline with a 90s end-flag ──
  function StepsTimeline() {
    return (
      <section style={{ background: 'var(--color-bg)' }}>
        <HeroTop h={196} sub={<>The last driveway<br />you'll ever buy.</>} />
        <Card>
          <div style={{ position: 'relative', display: 'flex', justifyContent: 'space-between', margin: '6px 4px 16px' }}>
            <div style={{ position: 'absolute', top: 17, left: 18, right: 18, height: 2, background: 'var(--beige-300)' }} />
            {STEPS.map((s, i) => (
              <div key={s.short} style={{ position: 'relative', display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 8, width: 92 }}>
                <span style={{ width: 36, height: 36, borderRadius: 'var(--radius-full)', background: 'var(--terracotta)', color: '#fff', display: 'flex', alignItems: 'center', justifyContent: 'center', border: '3px solid var(--color-surface)' }}>
                  <Icon name={s.icon} size={17} />
                </span>
                <span style={{ fontFamily: 'var(--font-body)', fontSize: 10.5, fontWeight: 700, color: 'var(--text-strong)', textAlign: 'center', lineHeight: 1.2 }}>{s.short}</span>
              </div>
            ))}
          </div>
          <div style={{ display: 'flex', justifyContent: 'center', marginBottom: 16 }}>
            <span style={{ display: 'inline-flex', alignItems: 'center', gap: 7, whiteSpace: 'nowrap', background: 'var(--graphite)', color: 'var(--beige-150)', borderRadius: 'var(--radius-full)', padding: '7px 14px', fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 11.5, letterSpacing: '0.1em', textTransform: 'uppercase' }}>
              <Icon name="clock" size={14} color="var(--clay)" /> All in 90 seconds
            </span>
          </div>
          <div style={{ marginBottom: 11 }}><AddressField /></div>
          <CtaBtn>Design My Driveway</CtaBtn>
        </Card>
      </section>
    );
  }

  // ── L5 — Render preview + numbered step captions (evolves the example-renders card) ──
  function StepsRender() {
    return (
      <section style={{ background: 'var(--color-bg)' }}>
        <HeroTop h={184} sub={<>See it before<br />you buy it.</>} />
        <Card>
          <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 12 }}>
            <h2 style={{ fontFamily: 'var(--font-display)', fontWeight: 600, fontSize: 19, color: 'var(--text-strong)', margin: 0 }}>How it works</h2>
            <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6, flex: 'none', whiteSpace: 'nowrap', fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 11, letterSpacing: '0.06em', color: 'var(--terracotta)' }}><Icon name="clock" size={13} /> 90 SECONDS</span>
          </div>
          <div className="mp-thumb-in" style={{ position: 'relative', height: 116, borderRadius: 'var(--radius)', overflow: 'hidden', marginBottom: 14 }}>
            <img src={PHOTO + 'house-render.png'} alt="Example render" style={{ width: '100%', height: '100%', objectFit: 'cover' }} />
            <div style={{ position: 'absolute', top: 0, bottom: 0, left: '56%', width: 2, background: 'var(--beige-150)' }} />
            <span style={{ position: 'absolute', bottom: 8, left: 8 }}><Badge variant="on-dark" size="sm">Before</Badge></span>
            <span style={{ position: 'absolute', bottom: 8, right: 8 }}><Badge variant="solid" size="sm">After + $</Badge></span>
          </div>
          <div style={{ display: 'flex', flexDirection: 'column', gap: 9, marginBottom: 15 }}>
            {STEPS.map((s, i) => (
              <div key={s.t} style={{ display: 'flex', alignItems: 'center', gap: 11 }}>
                <span style={{ width: 22, height: 22, borderRadius: 'var(--radius-full)', background: 'var(--terracotta)', color: '#fff', display: 'flex', alignItems: 'center', justifyContent: 'center', fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 11, flex: 'none' }}>{i + 1}</span>
                <span style={{ fontFamily: 'var(--font-body)', fontSize: 13, color: 'var(--text-body)' }}><strong style={{ fontWeight: 700 }}>{s.t}.</strong> <span style={{ color: 'var(--text-muted)' }}>{s.d}</span></span>
              </div>
            ))}
          </div>
          <div style={{ marginBottom: 11 }}><AddressField /></div>
          <CtaBtn>Design My Driveway</CtaBtn>
        </Card>
      </section>
    );
  }

  // ════════════════════════════════════════════════════════════════════════
  // V6 — Image + thumbnail rail (from Maple Pavers Explorer.html design pack)
  // Big crossfading hero image with an animated caption; thumbs below jump
  // between steps. Auto-advances every DWELL ms.
  // ════════════════════════════════════════════════════════════════════════
  const RAIL_DWELL = 3600;
  // Rail-specific headline + support copy. Keeps STEPS[].t untouched so the
  // older variants (steps-tiles / steps-list / etc.) still read sensibly.
  const RAIL_COPY = [
    { title: 'Add Your Driveway', long: 'Type in your address or snap a photo of your driveway to get started.' },
    { title: 'Pick Materials & Style', long: 'Select from premium styles and materials and see your finished driveway with a real estimate automatically.' },
    { title: 'See Your New Driveway', long: 'A realistic preview of your driveway with a real estimate in under 90 seconds — for free.' },
  ];

  function useCycle(n, dwell) {
    const [active, setActive] = React.useState(0);
    const [tick, setTick] = React.useState(0);
    const ref = React.useRef();
    React.useEffect(() => {
      ref.current = setTimeout(() => { setActive((a) => (a + 1) % n); setTick((t) => t + 1); }, dwell);
      return () => clearTimeout(ref.current);
    }, [active, tick, n, dwell]);
    const go = (i) => { clearTimeout(ref.current); setActive(i); setTick((t) => t + 1); };
    return [active, go];
  }

  // Text-only header for the rail variant. `onDark` flips colors for the
  // photo-backed background treatment.
  function HeroShell({ onDark }) {
    // Credential strip (Option C): two glassy pill chips on row 1
    // (★ 4.9 Google + HomeStars Best 2025), heritage caps on row 2.
    const chipBase = {
      display: 'inline-flex', alignItems: 'center', gap: 5,
      padding: '3px 9px',
      borderRadius: 999,
      fontFamily: 'var(--font-body)', fontSize: 10.5, fontWeight: 700,
      whiteSpace: 'nowrap',
      lineHeight: 1.4,
    };
    const chipNeutral = {
      ...chipBase,
      background: onDark ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.04)',
      border: onDark ? '1px solid rgba(255,255,255,0.2)' : '1px solid rgba(0,0,0,0.1)',
      color: onDark ? 'var(--beige-150)' : 'var(--text-strong)',
    };
    const chipTerra = {
      ...chipBase,
      background: 'var(--terracotta)',
      border: '1px solid var(--terracotta)',
      color: '#ffffff',
    };
    return (
      <div style={{ position: 'relative', padding: '18px 22px 0', zIndex: 1 }}>
        <div style={{
          display: 'flex', alignItems: 'center', gap: 8, rowGap: 6,
          marginBottom: 6, flexWrap: 'wrap',
          textShadow: onDark ? '0 1px 6px rgba(0,0,0,0.55)' : 'none',
        }}>
          <span style={chipNeutral}>
            <span style={{ color: '#f4c542', fontSize: 10 }}>★</span>
            <span>4.9 Google</span>
          </span>
          <span style={chipTerra}>HomeStars Best 2025</span>
          <span style={{
            ...chipNeutral,
            flexDirection: 'column', alignItems: 'flex-start',
            gap: 0, padding: '3px 9px',
            fontSize: 8.5, letterSpacing: '0.14em', textTransform: 'uppercase',
            lineHeight: 1.15,
          }}>
            <span>Family-Owned</span>
            <span>Since 1992</span>
          </span>
        </div>
        <h1 style={{
          fontFamily: 'var(--font-display)', fontWeight: 700, fontSize: 32,
          lineHeight: 1.05, letterSpacing: '-0.01em',
          color: onDark ? 'var(--beige-150)' : 'var(--text-strong)',
          textShadow: onDark ? '0 2px 12px rgba(0,0,0,0.55)' : 'none',
          margin: '6px 0 0',
        }}>
          Get the driveway<br />your home deserves.
        </h1>
        <p style={{
          fontFamily: 'var(--font-body)', fontSize: 14, lineHeight: 1.45,
          fontWeight: 500,
          color: onDark ? '#ffffff' : 'var(--text-muted)',
          textShadow: onDark ? '0 1px 8px rgba(0,0,0,0.7)' : 'none',
          margin: '10px 0 0',
        }}>
          Design yours and get a free estimate automatically.
        </p>
      </div>
    );
  }

  function HeroRail() {
    const [active, go] = useCycle(3, RAIL_DWELL);
    return (
      <section style={{
        position: 'relative',
        // Dark overlay covers the upper portion (headline + card) for text
        // contrast, then fades to fully transparent below the card so the
        // hero photo shows through unfiltered for the closing strip.
        background: `linear-gradient(180deg, rgba(20,18,16,0.62) 0%, rgba(20,18,16,0.48) 38%, rgba(20,18,16,0.45) 70%, rgba(20,18,16,0) 86%, rgba(20,18,16,0) 100%), url(${PHOTO}hero-background.jpg) center / cover no-repeat var(--graphite)`,
        backgroundAttachment: 'scroll',
        paddingBottom: 36,
      }}>
        <HeroShell onDark />
        <div style={{ margin: '10px 18px 0', background: 'var(--color-surface)', borderRadius: 'var(--radius-lg)', boxShadow: 'var(--shadow-md)', border: '1px solid var(--border-subtle)', padding: 13, position: 'relative', zIndex: 1 }}>
          <div style={{ position: 'relative', height: 195, borderRadius: 'var(--radius)', overflow: 'hidden' }}>
            {STEPS.map((s, i) => (
              <img key={i} className="mp-step-img" src={PHOTO + s.img} alt={s.t} style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', opacity: i === active ? 1 : 0 }} />
            ))}
            {/* Whole-image tint to help text legibility without killing the photo */}
            <div style={{ position: 'absolute', inset: 0, background: 'rgba(20,18,16,0.18)' }} />
            {/* Bottom gradient — extends higher, fades earlier so the caption block sits on solid dark */}
            <div style={{ position: 'absolute', inset: 0, background: 'linear-gradient(0deg, rgba(20,18,16,0.92) 18%, rgba(20,18,16,0.45) 48%, transparent 75%)' }} />
            <div className="mp-cap-in" key={'r' + active} style={{ position: 'absolute', left: 16, right: 16, bottom: 14 }}>
              <span style={{ fontFamily: 'var(--font-body)', fontWeight: 800, fontSize: 10.5, letterSpacing: '0.14em', textTransform: 'uppercase', color: 'var(--terracotta)', textShadow: '0 1px 6px rgba(0,0,0,0.6)' }}>Step {active + 1}</span>
              <h3 style={{ fontFamily: 'var(--font-display)', fontWeight: 600, fontSize: 23, color: 'var(--beige-150)', margin: '4px 0 0' }}>{RAIL_COPY[active].title}</h3>
              <p style={{ fontFamily: 'var(--font-body)', fontSize: 13, lineHeight: '19px', color: 'rgba(248,240,229,0.86)', margin: '6px 0 0' }}>{RAIL_COPY[active].long}</p>
            </div>
          </div>
          {/* thumbnail rail — all steps, active enlarged */}
          <div style={{ display: 'flex', gap: 8, marginTop: 10, alignItems: 'stretch' }}>
            {STEPS.map((s, i) => {
              const on = i === active;
              return (
                <button key={i} onClick={() => go(i)} aria-label={s.t} style={{ flex: '0 0 auto', width: on ? '54%' : '21%', boxSizing: 'border-box', minWidth: 0, padding: 0, border: '2px solid', borderColor: on ? 'var(--terracotta)' : 'transparent', borderRadius: 'var(--radius-sm)', overflow: 'hidden', cursor: 'pointer', height: on ? 58 : 50, alignSelf: 'center', position: 'relative', transition: 'width 0.45s var(--ease-standard), height 0.45s var(--ease-standard), border-color 0.3s' }}>
                  <div style={{ position: 'absolute', inset: 0, backgroundImage: `url(${PHOTO}${s.img})`, backgroundSize: 'cover', backgroundPosition: 'center', opacity: on ? 1 : 0.6 }} />
                  <span style={{ position: 'absolute', top: 4, left: 5, fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 11, color: '#fff', textShadow: '0 1px 3px rgba(0,0,0,0.7)' }}>{i + 1}</span>
                </button>
              );
            })}
          </div>
          <div style={{ marginTop: 16 }}><CtaBtn>Design My Driveway</CtaBtn></div>
        </div>
      </section>
    );
  }

  window.MP.register('hero', {
    label: 'Hero',
    options: [
      { id: 'rail', name: '6 · Image + thumbnail rail', Render: HeroRail },
      { id: 'steps-tiles', name: '1 · Image tiles', Render: StepsTiles },
      { id: 'steps-render', name: '2 · Render + step captions', Render: StepsRender },
      { id: 'steps-list', name: '3 · Vertical numbered list', Render: StepsList },
      { id: 'steps-row', name: '4 · Horizontal numbered row', Render: StepsRow },
      { id: 'steps-timeline', name: '5 · Connected timeline', Render: StepsTimeline },
    ],
  });
})();
