/* global React, INK, CREAM, PULSE, GENS, GradText, CTAButton, Reveal, useReveal, SB_EASE, ED_ACCENTS */
// Editing Suite feature page — one section per tool, alternating lean, real UI panels.
const { useState: esS, useEffect: esE } = React;

const EDBadge = ({ label, ac = '#813CED', bg = CREAM }) =>
  <div style={{ display: 'inline-flex', alignItems: 'center', gap: 8, marginBottom: 18, borderRadius: 9999, padding: '7px 14px', background: bg, boxShadow: 'inset 0 0 0 1px rgba(28,27,27,0.1)' }}>
    <span style={{ width: 7, height: 7, borderRadius: '50%', background: ac }} />
    <span style={{ fontSize: 11.5, fontWeight: 700, color: INK }}>{label}</span>
  </div>;

const EDPanelCard = ({ children, pad = 16 }) =>
  <div style={{ borderRadius: 20, background: '#fff', boxShadow: '0 24px 48px rgba(28,27,27,0.14), inset 0 0 0 1px rgba(28,27,27,0.08)', padding: pad }}>{children}</div>;

const EDSectionShell = ({ label, ac, h1, h2, sub, note, panel, flip = false, lean = 'right', bg = '#fff' }) => (
  <section style={{ background: bg, padding: '110px 56px' }}>
    <div style={{ maxWidth: 1140, margin: '0 auto', display: 'grid', gridTemplateColumns: flip ? '1.1fr 0.9fr' : '0.9fr 1.1fr', gap: 64, alignItems: 'center' }}>
      <div style={{ order: flip ? 2 : 1 }}>
        <Reveal delay={90}>
          <h2 style={{ font: '800 52px/1 var(--font-sans)', letterSpacing: '-0.03em', color: INK, margin: '0 0 18px', textWrap: 'balance' }}>{h1}<br /><GradText>{h2}</GradText></h2>
        </Reveal>
        <Reveal delay={170}><p style={{ fontSize: 17, lineHeight: 1.55, color: 'var(--text-secondary)', margin: '0 0 28px', maxWidth: 420 }}>{sub}</p></Reveal>
        <Reveal delay={250}><CTAButton>Join for free</CTAButton></Reveal>
        {note && <Reveal delay={330}><div style={{ marginTop: 26, fontSize: 13, color: 'var(--text-tertiary)' }}>{note}</div></Reveal>}
      </div>
      <Reveal delay={160} y={28} style={{ order: flip ? 1 : 2 }}>
        <div style={{ transform: lean === 'left' ? 'rotate(-1.3deg) perspective(1400px) rotateY(4deg)' : 'rotate(1.3deg) perspective(1400px) rotateY(-4deg)', transformOrigin: 'center' }}>{panel}</div>
      </Reveal>
    </div>
  </section>
);

// shared before/after split with draggable handle
const EDSplit = ({ before, after, labelB = 'Before', labelA = 'After', h = 380, beforeFilter }) => {
  const [pos, setPos] = esS(50);
  return (
    <div style={{ position: 'relative', borderRadius: 13, overflow: 'hidden', height: h, background: 'rgb(246,243,242)' }}>
      <img loading="lazy" decoding="async" src={after} alt={labelA} style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 12%' }} />
      <div style={{ position: 'absolute', inset: 0, clipPath: `inset(0 ${100 - pos}% 0 0)` }}>
        <img loading="lazy" decoding="async" src={before} alt={labelB} style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 12%', filter: beforeFilter || 'none' }} />
      </div>
      <div style={{ position: 'absolute', top: 0, bottom: 0, left: `${pos}%`, width: 2, background: '#fff', boxShadow: '0 0 12px rgba(0,0,0,0.35)' }}>
        <span style={{ position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%,-50%)', width: 30, height: 30, borderRadius: '50%', background: '#fff', boxShadow: '0 4px 14px rgba(28,27,27,0.3)', display: 'grid', placeItems: 'center' }}>
          <svg width="13" height="13" viewBox="0 0 16 16" fill="none"><path d="M5.5 4L2 8l3.5 4M10.5 4L14 8l-3.5 4" stroke={INK} strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" /></svg></span>
      </div>
      <span style={{ position: 'absolute', left: 9, bottom: 9, fontSize: 9, fontWeight: 700, letterSpacing: '0.06em', textTransform: 'uppercase', color: '#fff', background: 'rgba(20,16,23,0.6)', backdropFilter: 'blur(6px)', borderRadius: 9999, padding: '3px 8px' }}>{labelB}</span>
      <span style={{ position: 'absolute', right: 9, bottom: 9, fontSize: 9, fontWeight: 700, letterSpacing: '0.06em', textTransform: 'uppercase', color: '#fff', background: 'rgba(20,16,23,0.6)', backdropFilter: 'blur(6px)', borderRadius: 9999, padding: '3px 8px' }}>{labelA}</span>
      <input type="range" min="4" max="96" value={pos} onChange={(e) => setPos(+e.target.value)} aria-label="Before / after"
        style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', opacity: 0, cursor: 'ew-resize', margin: 0 }} />
    </div>);
};

// ---------- § 01 Inpaint ----------
const InpaintPanel = () => {
  const [ref, on] = useReveal(0.35);
  const [phase, setPhase] = esS('brush'); // brush → done → loop
  esE(() => {
    if (!on) return;
    const t = setInterval(() => setPhase(p => p === 'brush' ? 'done' : 'brush'), 3400);
    return () => clearInterval(t);
  }, [on]);
  const done = phase === 'done';
  return (
    <EDPanelCard>
      <div ref={ref} style={{ position: 'relative', borderRadius: 13, overflow: 'hidden', height: 360, background: 'rgb(246,243,242)', marginBottom: 12 }}>
        <img loading="lazy" decoding="async" src="assets/edits/brushed.png" alt="" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 12%' }} />
        <img loading="lazy" decoding="async" src="assets/edits/object.webp" alt="" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 12%',
          opacity: done ? 1 : 0, transition: `opacity 0.7s ${SB_EASE}` }} />
        <span style={{ position: 'absolute', left: 10, bottom: 10, fontSize: 9.5, fontWeight: 700, color: '#fff', background: 'rgba(28,27,27,0.55)', backdropFilter: 'blur(6px)', borderRadius: 9999, padding: '4px 10px' }}>
          {done ? 'Edit applied — only where you painted' : 'Brush where it goes'}</span>
      </div>
      <div style={{ display: 'flex', gap: 9, alignItems: 'center' }}>
        <span style={{ position: 'relative', width: 44, height: 44, borderRadius: 10, overflow: 'hidden', flexShrink: 0, boxShadow: 'inset 0 0 0 1px rgba(28,27,27,0.12)', background: '#fff' }}>
          <img loading="lazy" decoding="async" src="assets/edits/necklace.png" alt="Reference object" style={{ width: '100%', height: '100%', objectFit: 'cover' }} />
        </span>
        <div style={{ flex: 1, borderRadius: 11, background: 'rgb(235,231,231)', display: 'flex', alignItems: 'center', padding: '0 13px', height: 44, fontSize: 12, fontWeight: 500, color: INK }}>
          add this necklace
        </div>
        <span style={{ display: 'inline-flex', alignItems: 'center', gap: 5, borderRadius: 11, height: 44, padding: '0 16px', background: PULSE, color: '#fff', fontSize: 10.5, fontWeight: 800, letterSpacing: '0.05em' }}>APPLY ✦</span>
      </div>
    </EDPanelCard>);
};

// ---------- § 02 Expression ----------
const EDExprPanel = () => {
  const [sel, setSel] = esS(1);
  return (
    <EDPanelCard>
      <div style={{ position: 'relative', borderRadius: 13, overflow: 'hidden', height: 360, background: 'rgb(246,243,242)', marginBottom: 12 }}>
        <img loading="lazy" decoding="async" src="assets/edits/base.webp" alt="" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 12%' }} />
        <img loading="lazy" decoding="async" src="assets/edits/expression.webp" alt="" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 12%',
          opacity: sel === 1 ? 1 : 0, transition: `opacity 0.55s ${SB_EASE}` }} />
        <span style={{ position: 'absolute', left: 10, bottom: 10, fontSize: 9.5, fontWeight: 700, color: '#fff', background: 'rgba(28,27,27,0.55)', backdropFilter: 'blur(6px)', borderRadius: 9999, padding: '4px 10px' }}>
          {sel === 1 ? 'Playful laugh — her face, still her' : 'Original'}</span>
      </div>
      <div style={{ display: 'flex', gap: 6, flexWrap: 'wrap' }}>
        {['Original', 'Playful laugh', 'Soft smile', 'Wink', 'Seductive', 'Surprised'].map((n, i) =>
          <span key={n} onClick={() => setSel(i > 1 ? 1 : i)} style={{ borderRadius: 9999, padding: '7px 13px', fontSize: 11, fontWeight: sel === i ? 700 : 600, cursor: 'pointer', transition: 'all 0.18s',
            background: sel === i ? INK : 'rgb(246,243,242)', color: sel === i ? '#fff' : 'rgba(28,27,27,0.6)',
            boxShadow: sel === i ? 'none' : 'inset 0 0 0 1px rgba(28,27,27,0.08)' }}>{n}</span>)}
      </div>
    </EDPanelCard>);
};

// ---------- § 03 Recolor ----------
const RecolorPanel = () => (
  <EDPanelCard>
    <EDSplit before="assets/edits/object.webp" after="assets/edits/color.webp" labelB="Before" labelA="Recolored" />
    <div style={{ display: 'flex', gap: 9, alignItems: 'center', marginTop: 12 }}>
      <div style={{ flex: 1, borderRadius: 11, background: 'rgb(235,231,231)', display: 'flex', alignItems: 'center', padding: '0 13px', height: 44, fontSize: 12, fontWeight: 500, color: INK }}>
        make the top red
      </div>
      <span style={{ display: 'inline-flex', alignItems: 'center', gap: 5, borderRadius: 11, height: 44, padding: '0 16px', background: PULSE, color: '#fff', fontSize: 10.5, fontWeight: 800, letterSpacing: '0.05em' }}>APPLY ✦</span>
    </div>
  </EDPanelCard>
);

// ---------- § 04 Filters ----------
const ED_SLIDERS = [['Contrast', 62], ['Exposure', 48], ['Brightness', 55], ['Sharpness', 70], ['Grain', 22]];
const FiltersPanel = () => (
  <EDPanelCard>
    <div style={{ display: 'grid', gridTemplateColumns: '1.2fr 0.8fr', gap: 14 }}>
      <EDSplit before="assets/edits/color.webp" after="assets/edits/color.webp" beforeFilter="saturate(0.68) contrast(0.92) brightness(1.06)" labelB="Original" labelA="Graded" h={330} />
      <div style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center', gap: 15 }}>
        {ED_SLIDERS.map(([n, v]) =>
          <div key={n}>
            <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: 6 }}>
              <span style={{ fontSize: 10.5, fontWeight: 700, color: INK }}>{n}</span>
              <span style={{ fontSize: 10, fontWeight: 600, color: 'var(--text-tertiary)' }}>{v}</span>
            </div>
            <div style={{ position: 'relative', height: 4, borderRadius: 9999, background: 'rgb(235,231,231)' }}>
              <span style={{ position: 'absolute', left: 0, top: 0, bottom: 0, width: `${v}%`, borderRadius: 9999, background: PULSE }} />
              <span style={{ position: 'absolute', left: `${v}%`, top: '50%', transform: 'translate(-50%,-50%)', width: 14, height: 14, borderRadius: '50%', background: '#fff', boxShadow: '0 2px 8px rgba(28,27,27,0.3), 0 0 0 1px rgba(28,27,27,0.08)' }} />
            </div>
          </div>
        )}
        <span style={{ alignSelf: 'flex-start', borderRadius: 9999, padding: '8px 16px', fontSize: 10.5, fontWeight: 800, letterSpacing: '0.05em', color: '#fff', background: PULSE, boxShadow: '0 8px 20px -4px rgba(104,19,212,0.45)' }}>SAVE GRADE</span>
      </div>
    </div>
  </EDPanelCard>
);

// ---------- § 05 Upscale ----------
const UpscalePanel = () => {
  const [res, setRes] = esS(2);
  const zoom = [1.15, 1.15, 1.15][res];
  return (
    <EDPanelCard>
      <div style={{ position: 'relative', borderRadius: 13, overflow: 'hidden', height: 360, background: 'rgb(246,243,242)', marginBottom: 12 }}>
        <img loading="lazy" decoding="async" src="assets/edits/color.webp" alt="" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 10%',
          transform: `scale(${zoom})`, filter: res === 0 ? 'blur(1.6px)' : res === 1 ? 'blur(0.6px)' : 'none', transition: `filter 0.5s ${SB_EASE}` }} />
        <span style={{ position: 'absolute', top: 10, right: 10, fontSize: 9.5, fontWeight: 800, letterSpacing: '0.06em', color: '#fff', background: PULSE, borderRadius: 9999, padding: '4px 11px', boxShadow: '0 6px 16px -2px rgba(104,19,212,0.5)' }}>
          {['1K', '2K', '4K'][res]}</span>
        <span style={{ position: 'absolute', left: 10, bottom: 10, fontSize: 9.5, fontWeight: 700, color: '#fff', background: 'rgba(28,27,27,0.55)', backdropFilter: 'blur(6px)', borderRadius: 9999, padding: '4px 10px' }}>
          Detail crop · {['1024px', '2048px', '4096px'][res]}</span>
      </div>
      <div style={{ display: 'flex', gap: 6, alignItems: 'center' }}>
        {['1K', '2K', '4K'].map((n, i) =>
          <span key={n} onClick={() => setRes(i)} style={{ borderRadius: 9999, padding: '7px 16px', fontSize: 11, fontWeight: res === i ? 700 : 600, cursor: 'pointer', transition: 'all 0.18s',
            background: res === i ? INK : 'rgb(246,243,242)', color: res === i ? '#fff' : 'rgba(28,27,27,0.6)',
            boxShadow: res === i ? 'none' : 'inset 0 0 0 1px rgba(28,27,27,0.08)' }}>{n}</span>)}
        <span style={{ marginLeft: 'auto', fontSize: 10.5, color: 'var(--text-tertiary)' }}>Print-ready · platform-ready</span>
      </div>
    </EDPanelCard>);
};

const InpaintSection = () => <EDSectionShell label="Inpaint" ac={ED_ACCENTS.Inpaint} h1="Brush the spot." h2="Say the word." lean="left"
  sub="Paint where the edit goes and type what changes — the edit lands only where you painted. Everything else stays put."
  note="Add, remove or swap objects — including a reference object you upload." panel={<InpaintPanel />} />;
const EDExpressionSection = () => <EDSectionShell label="Expression" ac={ED_ACCENTS.Expression} h1="New mood." h2="One click." flip lean="right" bg={CREAM}
  sub="Ten expressions applied without touching a prompt — neutral to playful laugh. Her face, still her." panel={<EDExprPanel />} />;
const RecolorSection = () => <EDSectionShell label="Recolor" ac={ED_ACCENTS.Recolor} h1="Type the edit." h2="Watch it happen." lean="left"
  sub="Fabric, light and shadow follow the change — the pose, the room and the last two edits don’t move. Drag the handle."
  panel={<RecolorPanel />} />;
const FiltersSection = () => <EDSectionShell label="Filters" ac={ED_ACCENTS.Filters} h1="Grade it" h2="like film." flip lean="right" bg={CREAM}
  sub="Contrast, exposure, brightness, sharpness, grain — dialed on sliders with a live before/after split. Save when it feels right." panel={<FiltersPanel />} />;
const UpscaleSection = () => <EDSectionShell label="Upscale" ac={ED_ACCENTS.Upscale} h1="Finish it" h2="in 4K." lean="left"
  sub="One click takes the final edit to 4096px — crisp enough for print, heavy enough for any platform crop." panel={<UpscalePanel />} />;

// ---------- § 06 — After the edit ----------
const EDP_PANEL = { borderRadius: '12px 12px 0 0', background: '#fff', boxShadow: '0 10px 24px rgba(28,27,27,0.10), inset 0 0 0 1px rgba(28,27,27,0.08)', padding: 10, height: '100%', boxSizing: 'border-box', display: 'flex', flexDirection: 'column' };
const ED_NEXT = [
  { t: 'The Scheduler', d: 'Queue the fixed photo to six platforms straight from the board.', kind: 'sched', href: '/#11 Scheduler' },
  { t: 'Create Video', d: 'Make the finished photo move — same scene, with her voice on the track.', kind: 'video', href: '/create-video' },
  { t: 'Photo Shoot', d: 'Love the edit? Shoot a locked set of ten around it.', kind: 'shoot', href: '/#05 Photo Shoot' }];
const EDP_ROWS = [
  { src: 'assets/edits/color.webp', p: 'Instagram', time: '9:00 AM', st: 'Queued' },
  { src: 'assets/shoot/set-2.webp', p: 'TikTok', time: '12:30 PM', st: 'Queued' },
  { src: 'assets/create/out-garden.webp', p: 'OnlyFans', time: 'Yesterday', st: 'Posted' }];

const EDPipeMedia = ({ kind }) => (
  <div style={{ height: 210, background: 'rgb(246,243,242)', padding: '16px 16px 0', boxSizing: 'border-box' }}>
    {kind === 'sched' &&
      <div style={{ ...EDP_PANEL, gap: 6 }}>
        <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 2 }}>
          <span style={{ fontSize: 10.5, fontWeight: 700, color: INK }}>This week</span>
          <span style={{ fontSize: 8.5, fontWeight: 700, color: 'rgba(28,27,27,0.5)' }}>Scarlett · 6 platforms</span>
        </div>
        {EDP_ROWS.map((r) =>
          <div key={r.p} style={{ display: 'flex', alignItems: 'center', gap: 8, borderRadius: 9, background: 'rgb(250,247,247)', boxShadow: 'inset 0 0 0 1px rgba(28,27,27,0.07)', padding: '6px 8px', flex: 1, minHeight: 0 }}>
            <span style={{ width: 26, height: 26, borderRadius: 7, overflow: 'hidden', flexShrink: 0 }}>
              <img loading="lazy" decoding="async" src={r.src} alt="" style={{ width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 20%' }} /></span>
            <span style={{ flex: 1, minWidth: 0 }}>
              <span style={{ display: 'block', fontSize: 9.5, fontWeight: 700, color: INK }}>{r.p}</span>
              <span style={{ display: 'block', fontSize: 8.5, color: 'rgba(28,27,27,0.5)' }}>{r.time}</span>
            </span>
            <span style={{ fontSize: 8, fontWeight: 700, borderRadius: 9999, padding: '2px 8px',
              color: r.st === 'Posted' ? '#15803D' : 'var(--brand-purple-700)',
              background: r.st === 'Posted' ? 'rgba(34,197,94,0.12)' : 'var(--brand-purple-50)',
              border: r.st === 'Posted' ? '1px solid rgba(34,197,94,0.3)' : '1px solid var(--brand-purple-200)' }}>{r.st}</span>
          </div>
        )}
      </div>}
    {kind === 'video' &&
      <div style={EDP_PANEL}>
        <div style={{ position: 'relative', flex: 1, minHeight: 0, borderRadius: 8, overflow: 'hidden', background: 'rgb(246,243,242)', marginBottom: 8 }}>
          <video src="assets/video/explore-1.mp4" autoPlay muted loop playsInline preload="metadata" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 12%' }} />
          <span style={{ position: 'absolute', left: 7, bottom: 7, display: 'inline-flex', alignItems: 'center', gap: 4, fontSize: 8.5, fontWeight: 700, color: '#fff', background: 'rgba(28,27,27,0.55)', backdropFilter: 'blur(6px)', borderRadius: 9999, padding: '3px 8px' }}>
            <svg width="6" height="7" viewBox="0 0 8 10" fill="#fff"><path d="M0 0l8 5-8 5z" /></svg>0:08</span>
        </div>
        <div style={{ whiteSpace: 'nowrap', display: 'flex', gap: 5 }}>
          {['Scarlett', '9:16', 'From this photo'].map(c =>
            <span key={c} style={{ borderRadius: 9999, padding: '5px 10px', fontSize: 8.5, fontWeight: 600, background: 'rgb(246,243,242)', boxShadow: 'inset 0 0 0 1px rgba(28,27,27,0.08)', color: INK }}>{c}</span>)}
        </div>
      </div>}
    {kind === 'shoot' &&
      <div style={EDP_PANEL}>
        <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 8 }}>
          <span style={{ fontSize: 10.5, fontWeight: 700, color: INK }}>Lazy morning · set</span>
          <span style={{ fontSize: 8.5, fontWeight: 700, color: 'var(--brand-purple-700)', background: 'var(--brand-purple-50)', border: '1px solid var(--brand-purple-200)', borderRadius: 9999, padding: '2px 8px' }}>10 shots</span>
        </div>
        <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 6, flex: 1, minHeight: 0 }}>
          {[1, 2, 3, 4, 5, 6].map((n, i) =>
            <div key={n} style={{ position: 'relative', borderRadius: 7, overflow: 'hidden', boxShadow: i === 0 ? '0 0 0 2px var(--brand-purple-500)' : 'inset 0 0 0 1px rgba(28,27,27,0.08)' }}>
              <img loading="lazy" decoding="async" src={`assets/shoot/set-${n}.webp`} alt="" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 20%' }} /></div>)}
        </div>
      </div>}
  </div>
);

const EDPipelineSection = () => (
  <section style={{ background: '#fff', padding: '110px 56px' }}>
    <div style={{ maxWidth: 1140, margin: '0 auto' }}>
      <div style={{ display: 'flex', alignItems: 'flex-end', justifyContent: 'space-between', gap: 40, flexWrap: 'wrap', marginBottom: 46 }}>
        <div style={{ maxWidth: 560 }}>
          <Reveal delay={90}>
            <h2 style={{ font: '800 52px/1 var(--font-sans)', letterSpacing: '-0.03em', color: INK, margin: '0 0 16px', textWrap: 'balance' }}>
              Fixed.<br /><GradText>Now ship it.</GradText>
            </h2>
          </Reveal>
          <Reveal delay={170}>
            <p style={{ fontSize: 17, lineHeight: 1.55, color: 'var(--text-secondary)', margin: 0 }}>
              The finished photo is already on a board wired into the rest of the studio.
            </p>
          </Reveal>
        </div>
        <Reveal delay={240} style={{ paddingBottom: 8 }}>
          <a href="/" style={{ fontSize: 13.5, fontWeight: 600, color: 'var(--brand-purple-700)' }}>See the full tour →</a>
        </Reveal>
      </div>
      <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 18 }}>
        {ED_NEXT.map((c, i) =>
          <Reveal key={c.t} delay={i * 110} y={26}>
            <a href={c.href} style={{ display: 'block', borderRadius: 18, overflow: 'hidden', background: CREAM, boxShadow: 'inset 0 0 0 1px rgba(28,27,27,0.08)', color: 'inherit',
              transform: `rotate(${i === 1 ? 1 : -1}deg) perspective(1200px) rotateY(${i === 1 ? -2 : 2}deg)` }}>
              <EDPipeMedia kind={c.kind} />
              <div style={{ padding: '18px 20px 22px' }}>
                <div style={{ fontSize: 17, fontWeight: 700, letterSpacing: '-0.01em', color: INK, marginBottom: 7 }}>{c.t}</div>
                <div style={{ fontSize: 13.5, lineHeight: 1.5, color: 'var(--text-secondary)' }}>{c.d}</div>
              </div>
            </a>
          </Reveal>
        )}
      </div>
    </div>
  </section>
);

Object.assign(window, { InpaintSection, EDExpressionSection, RecolorSection, FiltersSection, UpscaleSection, EDPipelineSection, EDSplit });
