// Process v6 — 4 steps, 2×2 grid, redesigned dioramas + animation level switcher
// V1 = mild (Audit-B, Production-B, Revize-C)
// V4 = full (Audit-C, Production-C, Revize-C)
const { useEffect: useProcessEffect, useRef: useProcessRef, useState: useProcessState } = React;

// ============ DIORAMAS ============

// Step 1: Audit — Winner creative + 4 metrics with bars (concept C)
function DioramaAudit({ level = 'B', inView = true }) {
  const metrics = [
    { label: 'CTR',   numeric: 5.8,  suffix: '%',     decimals: 1, fill: 0.85 },
    { label: 'ROAS',  numeric: 4.2,  suffix: 'x',     decimals: 1, fill: 0.92 },
    { label: 'SPEND', numeric: 24,   suffix: 'K Kč',  decimals: 0, fill: 0.45 },
    { label: 'FREQ',  numeric: 1.8,  suffix: '',      decimals: 1, fill: 0.40 },
  ];
  const showC = level === 'C';
  return (
    <div style={dioramaShell}>
      {/* Header */}
      <div style={{
        position: 'absolute', top: '14px', left: '16px', right: '16px',
        display: 'flex', alignItems: 'center', gap: '8px',
        fontFamily: 'var(--font-mono)', fontSize: '10px',
        color: 'var(--text-tertiary)', letterSpacing: '0.15em',
      }}>
        <span style={{
          width: '7px', height: '7px', borderRadius: '999px',
          background: 'var(--accent)',
          animation: 'recBlink 1.4s ease-in-out infinite',
          flexShrink: 0,
        }} />
        AUDIT · NEJVÝKONNĚJŠÍ KREATIVA
      </div>

      <div style={{
        position: 'absolute', top: '40px', bottom: '14px', left: '16px', right: '16px',
        display: 'grid',
        gridTemplateColumns: '92px 1fr',
        gap: '14px',
        alignItems: 'stretch',
      }}>
        {/* LEFT — winner 9:16 placeholder + breathing (B+) */}
        <div style={{
          background: 'linear-gradient(160deg, rgba(247,19,63,0.18), rgba(0,0,0,0.5))',
          border: '1px solid var(--accent)',
          borderRadius: '6px',
          position: 'relative',
          overflow: 'hidden',
          boxShadow: '0 0 24px rgba(247,19,63,0.18)',
          padding: '8px',
          animation: 'winnerBreath 4s ease-in-out infinite',
        }}>
          {/* scanlines drift (B+) */}
          <div style={{
            position: 'absolute', inset: 0,
            backgroundImage: 'repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.18) 2px, rgba(0,0,0,0.18) 3px)',
            opacity: 0.5, pointerEvents: 'none',
            animation: 'scanlineDrift 8s linear infinite',
          }} />
          {/* WINNER stamp — impact entry, then static */}
          <span style={{
            position: 'absolute', top: '8px', left: '8px',
            fontFamily: 'var(--font-mono)', fontSize: '8px',
            color: 'var(--accent)', letterSpacing: '0.18em',
            fontWeight: 700, zIndex: 1,
            transformOrigin: 'left center',
            animation: (inView && showC) ? 'stampImpact 700ms cubic-bezier(0.34, 1.56, 0.64, 1) both' : 'none',
          }}>● WINNER</span>
          {/* Center play triangle + ratio (C: pulsing) */}
          <div style={{
            position: 'absolute',
            top: '50%', left: '50%',
            transform: 'translate(-50%, -50%)',
            display: 'flex', flexDirection: 'column', gap: '4px', alignItems: 'center',
            zIndex: 1,
            animation: showC ? 'playPulse 3s ease-in-out infinite' : 'none',
          }}>
            <div style={{
              width: 0, height: 0,
              borderLeft: '11px solid rgba(255,255,255,0.65)',
              borderTop: '7px solid transparent',
              borderBottom: '7px solid transparent',
              marginLeft: '3px',
              filter: 'drop-shadow(0 0 6px rgba(247,19,63,0.5))',
            }} />
            <span style={{
              fontFamily: 'var(--font-mono)', fontSize: '8px',
              color: 'var(--text-tertiary)', letterSpacing: '0.1em',
            }}>9:16</span>
          </div>
          <span style={{
            position: 'absolute', bottom: '8px', left: '8px', right: '8px',
            fontFamily: 'var(--font-mono)', fontSize: '8px',
            color: 'var(--text-secondary)', letterSpacing: '0.04em',
            zIndex: 1,
          }}>hook_03.mp4</span>
        </div>

        {/* RIGHT — 4 metric rows + footer */}
        <div style={{
          display: 'flex', flexDirection: 'column',
          justifyContent: 'space-between',
        }}>
          <div style={{ display: 'flex', flexDirection: 'column', gap: '10px' }}>
            {metrics.map((m, i) => (
              <div key={i} style={{ display: 'flex', alignItems: 'center', gap: '10px' }}>
                <span style={{
                  fontFamily: 'var(--font-mono)', fontSize: '9px',
                  color: 'var(--text-tertiary)', letterSpacing: '0.14em',
                  minWidth: '44px', fontWeight: 600,
                }}>{m.label}</span>
                <div style={{
                  flex: 1, height: '6px',
                  background: 'rgba(255,255,255,0.06)',
                  borderRadius: '999px', overflow: 'hidden',
                }}>
                  <div style={{
                    height: '100%',
                    background: 'linear-gradient(to right, var(--accent), #FF8A4F)',
                    borderRadius: '999px',
                    width: inView ? `${m.fill * 100}%` : '0%',
                    transition: `width 900ms cubic-bezier(0.65, 0, 0.35, 1) ${200 + i * 130}ms`,
                  }} />
                </div>
                <span style={{
                  fontFamily: 'var(--font-display)', fontWeight: 700,
                  fontSize: '14px', color: 'var(--text-primary)',
                  letterSpacing: '-0.02em', minWidth: '52px',
                  textAlign: 'right',
                }}>
                  <CountUp to={m.numeric} duration={900} suffix={m.suffix} decimals={m.decimals} />
                </span>
              </div>
            ))}
          </div>
          <span style={{
            fontFamily: 'var(--font-mono)', fontSize: '10px',
            color: 'var(--accent)', letterSpacing: '0.04em',
            marginTop: '8px',
            fontWeight: 600,
          }}>⌇ Vyrobíme variace téhle.</span>
        </div>
      </div>
    </div>
  );
}

// Step 2: AI produkce — 3 progress bars + level B (glitch + dot pulse), C (ETA loop + done glow)
function DioramaProduction({ level = 'B', inView = true }) {
  const variants = [
    { label: 'Variant A · video 9:16', pct: 100, state: 'DONE' },
    { label: 'Variant B · banner 1080×1080', pct: 64, state: 'RUN' },
    { label: 'Variant C · avatar UGC', pct: 32, state: 'RUN' },
  ];
  const showC = level === 'C';
  return (
    <div style={dioramaShell}>
      <div style={{
        position: 'absolute', top: '14px', left: '16px', right: '16px',
        display: 'flex', justifyContent: 'space-between', alignItems: 'center',
        fontFamily: 'var(--font-mono)', fontSize: '10px',
        color: 'var(--text-tertiary)', letterSpacing: '0.15em',
      }}>
        <span style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
          <span style={{
            width: '7px', height: '7px', borderRadius: '999px',
            background: 'var(--accent)',
            animation: 'dotPulseStrong 1.2s ease-in-out infinite',
          }} />
          3 VARIANTY PARALELNĚ
        </span>
        <span style={{
          color: 'var(--accent)',
          animation: showC ? 'etaLoop 4s ease-in-out infinite' : 'none',
        }}>
          <CountUp to={12} duration={1100} /> / 30 HOTOVO
        </span>
      </div>

      <div style={{
        position: 'absolute', top: '46px', left: '16px', right: '16px', bottom: '16px',
        display: 'flex', flexDirection: 'column', gap: '20px', justifyContent: 'center',
      }}>
        {variants.map((v, i) => (
          <div key={i} style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
            <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline' }}>
              <span style={{
                fontFamily: 'var(--font-mono)', fontSize: '11px',
                color: 'var(--text-secondary)', letterSpacing: '0.04em',
                animation: inView ? `glitchSettle 600ms steps(8) ${300 + i * 150}ms both` : 'none',
                display: 'inline-block',
              }}>{v.label}</span>
              <span style={{
                fontFamily: 'var(--font-mono)', fontSize: '10px',
                color: v.state === 'DONE' ? '#7AE3A8' : 'var(--accent)',
                letterSpacing: '0.1em', fontWeight: 600,
                animation: (showC && v.state === 'DONE') ? 'doneGlow 2.5s ease-in-out infinite' : 'none',
              }}>{v.pct}%</span>
            </div>
            <div style={{
              height: '5px', background: 'rgba(255,255,255,0.08)',
              borderRadius: '999px', overflow: 'hidden',
              position: 'relative',
            }}>
              <div style={{
                position: 'absolute', inset: 0,
                width: inView ? `${v.pct}%` : '0%',
                background: v.state === 'DONE'
                  ? 'linear-gradient(to right, #7AE3A8, #5AC78F)'
                  : 'linear-gradient(to right, var(--accent), #FF8A4F)',
                borderRadius: '999px',
                transition: `width 1100ms cubic-bezier(0.65, 0, 0.35, 1) ${200 + i * 200}ms`,
              }} />
              {v.state === 'RUN' && (
                <div style={{
                  position: 'absolute', top: 0, bottom: 0,
                  left: `${v.pct - 6}%`, width: '6%',
                  background: 'linear-gradient(to right, transparent, rgba(255,255,255,0.6), transparent)',
                  animation: 'shimmer 1.6s ease-in-out infinite',
                }} />
              )}
            </div>
          </div>
        ))}
      </div>
    </div>
  );
}

// Step 3: Revize — REAL diff with arrow, level C: BEFORE fades, moving >>> chevrons, AFTER lift
function DioramaRevize({ level = 'C', inView = true }) {
  const showC = level === 'C';
  const showB = level === 'B' || level === 'C';
  return (
    <div style={dioramaShell}>
      <div style={{
        position: 'absolute', top: '14px', left: '16px',
        fontFamily: 'var(--font-mono)', fontSize: '10px',
        color: 'var(--text-tertiary)', letterSpacing: '0.15em',
      }}>● REVIZE · KOLO 01/01</div>

      <div style={{
        position: 'absolute', top: '40px', bottom: '14px', left: '16px', right: '16px',
        display: 'grid', gridTemplateColumns: '1fr 28px 1fr', gap: '8px',
        alignItems: 'stretch',
      }}>
        {/* BEFORE — fades on level C */}
        <div style={{
          background: 'linear-gradient(135deg, rgba(80,80,90,0.18), rgba(0,0,0,0.4))',
          border: '1px solid var(--border)',
          borderRadius: '6px',
          padding: '12px',
          display: 'flex', flexDirection: 'column', justifyContent: 'space-between',
          position: 'relative',
          animation: (inView && showC) ? 'beforeFade 1200ms ease-out 1400ms both' : 'none',
        }}>
          <span style={{
            fontFamily: 'var(--font-mono)', fontSize: '9px',
            color: 'var(--text-tertiary)', letterSpacing: '0.18em',
            fontWeight: 600,
          }}>PŘED</span>
          <div style={{ display: 'flex', flexDirection: 'column', gap: '6px', alignItems: 'flex-start' }}>
            <div style={{
              fontFamily: 'var(--font-display)', fontSize: '10px',
              color: 'var(--text-tertiary)', fontWeight: 500,
            }}>logo</div>
            <div style={{
              fontFamily: 'var(--font-display)', fontSize: '11px',
              color: 'var(--text-secondary)', fontWeight: 600,
            }}>slabý hook</div>
            <div style={{
              padding: '3px 8px', borderRadius: '3px',
              background: 'rgba(255,255,255,0.1)',
              fontFamily: 'var(--font-mono)', fontSize: '8px',
              color: 'var(--text-tertiary)', letterSpacing: '0.08em',
            }}>CTA</div>
          </div>
        </div>

        {/* ARROW: chain of >>> chevrons flowing left → right */}
        <div style={{
          position: 'relative',
          display: 'flex', alignItems: 'center', justifyContent: 'center',
          gap: '2px',
          fontFamily: 'var(--font-mono)', fontSize: '16px',
          fontWeight: 700,
          animation: showB ? 'arrowGlowPulse 2.4s ease-in-out 700ms infinite' : 'none',
        }}>
          {[0, 1, 2].map(idx => (
            <span key={idx} style={{
              color: 'var(--accent)',
              opacity: inView ? 1 : 0,
              animation: inView
                ? `chevronFlow 1.4s ease-in-out ${300 + idx * 180}ms infinite`
                : 'none',
              display: 'inline-block',
            }}>›</span>
          ))}
        </div>

        {/* AFTER — slide-in entry + glow pulse + lift */}
        <div style={{
          background: 'linear-gradient(135deg, rgba(247,19,63,0.18), rgba(0,0,0,0.4))',
          border: '1px solid var(--accent)',
          borderRadius: '6px',
          padding: '12px',
          display: 'flex', flexDirection: 'column', justifyContent: 'space-between',
          position: 'relative',
          boxShadow: '0 0 24px rgba(247,19,63,0.15)',
          animation: !inView ? 'none' : (showB
            ? 'afterContentSlide 600ms cubic-bezier(0.22, 1, 0.36, 1) 800ms both, afterGlowPulse 4s ease-in-out 1500ms infinite' + (showC ? ', afterLift 4s ease-in-out 1500ms infinite' : '')
            : 'afterContentSlide 600ms cubic-bezier(0.22, 1, 0.36, 1) 800ms both'),
          opacity: inView ? 1 : 0,
        }}>
          <span style={{
            fontFamily: 'var(--font-mono)', fontSize: '9px',
            color: 'var(--accent)', letterSpacing: '0.18em',
            fontWeight: 700,
          }}>PO</span>
          <div style={{ display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'flex-start' }}>
            <div style={{
              fontFamily: 'var(--font-display)', fontSize: '14px',
              color: 'var(--text-primary)', fontWeight: 700,
              letterSpacing: '-0.02em',
              padding: '2px 4px', borderRadius: '3px',
              animation: (inView && showB) ? 'diffFlash 800ms ease-out 1700ms both' : 'none',
              border: '1px solid transparent',
            }}>LOGO</div>
            <div style={{
              fontFamily: 'var(--font-display)', fontSize: '15px',
              color: 'var(--text-primary)', fontWeight: 700,
              letterSpacing: '-0.02em',
              padding: '2px 4px', borderRadius: '3px',
              animation: (inView && showB) ? 'diffFlash 800ms ease-out 2000ms both' : 'none',
              border: '1px solid transparent',
            }}>SILNÝ HOOK</div>
            <div style={{
              padding: '4px 10px', borderRadius: '3px',
              background: 'var(--accent)',
              fontFamily: 'var(--font-mono)', fontSize: '8px',
              color: '#fff', letterSpacing: '0.08em',
              fontWeight: 600,
              animation: (inView && showB) ? 'diffFlash 800ms ease-out 2300ms both' : 'none',
            }}>CTA →</div>
          </div>
        </div>
      </div>
    </div>
  );
}

// Step 4: Handover — scrolling file tree (loop, masked edges)
function DioramaHandover() {
  const files = [
    { name: 'campaign-launch/', folder: true, depth: 0 },
    { name: 'video/', folder: true, depth: 1 },
    { name: '01_hook_9x16.mp4', depth: 2, size: '12 MB' },
    { name: '02_hook_1x1.mp4', depth: 2, size: '8 MB' },
    { name: '03_hook_16x9.mp4', depth: 2, size: '14 MB' },
    { name: 'banners/', folder: true, depth: 1 },
    { name: '01_static_1080.png', depth: 2, size: '1.2 MB' },
    { name: '02_motion_1080.gif', depth: 2, size: '4 MB' },
    { name: '03_static_1200x628.png', depth: 2, size: '0.9 MB' },
    { name: 'avatars/', folder: true, depth: 1 },
    { name: 'ugc_v1.mp4', depth: 2, size: '22 MB' },
    { name: 'ugc_v2.mp4', depth: 2, size: '18 MB' },
  ];
  return (
    <div style={dioramaShell}>
      <div style={{
        position: 'absolute', top: '14px', left: '16px',
        fontFamily: 'var(--font-mono)', fontSize: '10px',
        color: 'var(--text-tertiary)', letterSpacing: '0.15em',
        zIndex: 2,
      }}>● MASTER FILES</div>
      <div style={{
        position: 'absolute', top: '14px', right: '16px',
        fontFamily: 'var(--font-mono)', fontSize: '10px',
        color: 'var(--accent)', letterSpacing: '0.12em',
        fontWeight: 600,
        zIndex: 2,
      }}>Bez další úpravy.</div>

      {/* Scrolling list with edge mask */}
      <div style={{
        position: 'absolute', top: '40px', left: '16px', right: '16px', bottom: '14px',
        overflow: 'hidden',
        maskImage: 'linear-gradient(to bottom, transparent, black 14%, black 86%, transparent)',
        WebkitMaskImage: 'linear-gradient(to bottom, transparent, black 14%, black 86%, transparent)',
      }}>
        <div style={{
          display: 'flex', flexDirection: 'column', gap: '5px',
          animation: 'handoverScroll 18s linear infinite',
        }}>
          {[...files, ...files].map((f, i) => (
            <div key={i} style={{
              display: 'flex', alignItems: 'center', gap: '8px',
              paddingLeft: `${f.depth * 14}px`,
              fontFamily: 'var(--font-mono)', fontSize: '11px',
              flexShrink: 0,
            }}>
              <span style={{
                color: f.folder ? 'var(--accent)' : 'var(--text-tertiary)',
                fontSize: '10px',
                minWidth: '8px',
              }}>{f.folder ? '▾' : '·'}</span>
              <span style={{
                color: f.folder ? 'var(--text-primary)' : 'var(--text-secondary)',
                fontWeight: f.folder ? 600 : 400,
                flex: 1,
              }}>{f.name}</span>
              {f.size && (
                <span style={{
                  color: 'var(--text-tertiary)', fontSize: '9px',
                  letterSpacing: '0.05em',
                }}>{f.size}</span>
              )}
            </div>
          ))}
        </div>
      </div>
    </div>
  );
}

const dioramaShell = {
  position: 'relative',
  height: '220px',
  background: 'rgba(10, 10, 12, 0.6)',
  border: '1px solid var(--border-subtle)',
  borderRadius: '10px',
  overflow: 'hidden',
};

// ============ STEP CARD ============

function StepCard({ num, title, desc, Diorama, dioramaProps, delay }) {
  const [hover, setHover] = useProcessState(false);
  const [inView, setInView] = useProcessState(false);
  const cardRef = useProcessRef(null);

  useProcessEffect(() => {
    const el = cardRef.current; if (!el) return;
    const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
    if (reduced) { setInView(true); return; }
    // already in viewport on mount?
    const r = el.getBoundingClientRect();
    const vh = window.innerHeight || document.documentElement.clientHeight;
    if (r.top < vh * 0.85 && r.bottom > 0) {
      // start with delay matching Reveal
      const t = setTimeout(() => setInView(true), delay + 200);
      return () => clearTimeout(t);
    }
    const io = new IntersectionObserver(entries => {
      entries.forEach(e => {
        if (e.isIntersecting) {
          setInView(true);
          io.unobserve(el);
        }
      });
    }, { threshold: 0.25 });
    io.observe(el);
    return () => io.disconnect();
  }, [delay]);

  return (
    <Reveal delay={delay} y={28}>
      <div
        ref={cardRef}
        onMouseEnter={() => setHover(true)}
        onMouseLeave={() => setHover(false)}
        style={{
          background: hover ? 'var(--surface-hover)' : 'var(--surface)',
          border: '1px solid ' + (hover ? 'var(--border-strong)' : 'var(--border)'),
          borderRadius: '14px',
          padding: '32px',
          display: 'flex', flexDirection: 'column', gap: '24px',
          transform: hover ? 'translateY(-4px)' : 'translateY(0)',
          boxShadow: hover ? '0 20px 40px -20px rgba(0,0,0,0.8)' : 'none',
          transition: 'background 400ms cubic-bezier(0.65, 0, 0.35, 1), border-color 400ms, transform 500ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 500ms cubic-bezier(0.22, 1, 0.36, 1)',
          position: 'relative',
          overflow: 'hidden',
        }}
      >
        <span aria-hidden="true" style={{
          position: 'absolute',
          top: '-18px', right: '-8px',
          fontFamily: 'var(--font-display)', fontWeight: 800,
          fontSize: '180px', lineHeight: 1,
          color: hover ? 'rgba(247,19,63,0.08)' : 'rgba(247,19,63,0.05)',
          letterSpacing: '-0.05em',
          pointerEvents: 'none',
          userSelect: 'none',
          transition: 'color 500ms cubic-bezier(0.65, 0, 0.35, 1)',
        }}>{num.padStart(2, '0')}</span>

        <span style={{
          alignSelf: 'flex-start',
          fontFamily: 'var(--font-mono)', fontSize: '11px',
          padding: '5px 12px', borderRadius: '6px',
          background: 'rgba(255,255,255,0.06)',
          border: '1px solid var(--border-subtle)',
          color: 'var(--text-secondary)', letterSpacing: '0.1em',
          textTransform: 'uppercase',
          position: 'relative', zIndex: 1,
        }}>Krok {num}</span>
        <div style={{ position: 'relative', zIndex: 1 }}>
          <h3 style={{
            fontFamily: 'var(--font-display)', fontWeight: 600,
            fontSize: '32px', letterSpacing: '-0.02em',
            color: 'var(--text-primary)',
            margin: '0 0 12px',
          }}>{title}</h3>
          <p style={{
            fontFamily: 'var(--font-body)', fontSize: '15px',
            color: 'var(--text-secondary)', lineHeight: 1.55,
            margin: 0, maxWidth: '38ch',
          }}>{desc}</p>
        </div>
        <div style={{ position: 'relative', zIndex: 1 }}>
          <Diorama inView={inView} {...(dioramaProps || {})} />
        </div>
      </div>
    </Reveal>
  );
}

// ============ ANIMATION CONFIG (per variant) ============
const ANIM_VARIANTS = {
  v1: { audit: 'B', production: 'B', revize: 'C', label: 'V1 · střídmé' },
  v4: { audit: 'C', production: 'C', revize: 'C', label: 'V4 · plné' },
};

function Process() {
  const [animVariant, setAnimVariant] = useProcessState('v1');
  const cfg = ANIM_VARIANTS[animVariant];

  const steps = [
    { num: '1', title: 'Audit + brief', desc: 'Projdeme tvoje nejúspěšnější kreativy a najdeme, co u tebe funguje.', D: DioramaAudit, props: { level: cfg.audit } },
    { num: '2', title: 'AI produkce', desc: 'Vyrobíme první vlnu výstupů paralelně. Varianty, ne jednu verzi.', D: DioramaProduction, props: { level: cfg.production } },
    { num: '3', title: 'Revize', desc: 'Jedna runda připomínek. Doladíme podle reálného feedbacku.', D: DioramaRevize, props: { level: cfg.revize } },
    { num: '4', title: 'Handover', desc: 'Master soubory ve všech rozměrech kampaně. Připravené ke spuštění.', D: DioramaHandover, props: {} },
  ];

  return (
    <section data-screen-label="04 Proces" style={{
      maxWidth: '1280px', margin: '0 auto',
      padding: '160px 32px',
      position: 'relative',
    }}>
      {/* Variant switcher (top-right) */}
      <div style={{
        position: 'absolute', top: '180px', right: '32px',
        display: 'flex', gap: '6px', zIndex: 5,
      }}>
        {Object.keys(ANIM_VARIANTS).map(v => (
          <button key={v} onClick={() => setAnimVariant(v)} style={{
            fontFamily: 'var(--font-mono)', fontSize: '10px',
            background: animVariant === v ? 'var(--accent)' : 'transparent',
            color: animVariant === v ? '#fff' : 'var(--text-tertiary)',
            border: '1px solid ' + (animVariant === v ? 'var(--accent)' : 'var(--border)'),
            padding: '5px 10px', borderRadius: '999px', cursor: 'pointer',
            textTransform: 'uppercase', letterSpacing: '0.1em',
            fontWeight: 600,
            transition: 'all 300ms cubic-bezier(0.65, 0, 0.35, 1)',
          }} title={ANIM_VARIANTS[v].label}>{v}</button>
        ))}
      </div>

      <NumberedHeader
        num="04"
        title="Jak to děláme."
        sub="Čtyři kroky. Žádný account manager mezi tebou a člověkem, co to dělá."
      />
      <div
        key={animVariant}
        style={{
          display: 'grid',
          gridTemplateColumns: 'repeat(2, 1fr)',
          gap: '14px',
        }}>
        {steps.map((s, i) => (
          <StepCard
            key={s.num}
            num={s.num}
            title={s.title}
            desc={s.desc}
            Diorama={s.D}
            dioramaProps={s.props}
            delay={i * 120}
          />
        ))}
      </div>
    </section>
  );
}

window.Process = Process;
