// Xiexie landing — Hero + Three super-powers
// Brand recap (per direction):
//   ember palette only · cream #fbf7f0 · ink #2b1d12 · primary #d97a25
//   forest #2f6d3f for "safe" notes · crimson #b8351c on the verdict screenshot only
// Fraunces display, Inter body, JetBrains Mono for transcripts.
// One warm radial glow per section. Vertical ember-30 thread between sections.

const L_CREAM = '#fbf7f0';
const L_INK = '#2b1d12';
const L_INK_80 = 'rgba(43,29,18,0.80)';
const L_INK_60 = 'rgba(43,29,18,0.60)';
const L_INK_50 = 'rgba(43,29,18,0.50)';
const L_INK_30 = 'rgba(43,29,18,0.30)';
const L_INK_10 = 'rgba(43,29,18,0.10)';
const L_INK_06 = 'rgba(43,29,18,0.06)';
const L_EMBER = '#d97a25';
const L_EMBER_50 = 'rgba(217,122,37,0.50)';
const L_EMBER_30 = 'rgba(217,122,37,0.30)';
const L_EMBER_10 = 'rgba(217,122,37,0.10)';
const L_FOREST = '#2f6d3f';

// ---- Hero --------------------------------------------------------------

function Hero() {
  return (
    <section style={{
      position: 'relative',
      minHeight: '100vh',
      padding: '32px 56px 80px',
      display: 'grid',
      gridTemplateColumns: '1.05fr 1fr',
      gridTemplateRows: 'auto 1fr',
      columnGap: 64,
      background: L_CREAM,
      overflow: 'hidden',
    }}>
      {/* one warm radial glow — top right */}
      <div style={{
        position: 'absolute',
        right: '-12%', top: '-22%',
        width: 900, height: 900,
        background: 'radial-gradient(circle at center, rgba(217,122,37,0.18), rgba(217,122,37,0.06) 38%, transparent 65%)',
        pointerEvents: 'none',
      }} />

      {/* nav row */}
      <header style={{
        gridColumn: '1 / -1',
        display: 'flex', alignItems: 'center', justifyContent: 'space-between',
        position: 'relative', zIndex: 2,
      }}>
        <Wordmark />
        <nav style={{
          display: 'flex', alignItems: 'center', gap: 36,
          fontFamily: '"JetBrains Mono", ui-monospace, monospace',
          fontSize: 13, color: L_INK_60, letterSpacing: 0.2,
        }}>
          <a href="#powers" style={navLink}>What it does</a>
          <a href="#built" style={navLink}>How it's built</a>
          <a href="/Xiexie.dmg" download="Xiexie.dmg" style={navLink}>Download</a>
        </nav>
      </header>

      {/* left — copy */}
      <div style={{
        position: 'relative', zIndex: 2,
        display: 'flex', flexDirection: 'column', justifyContent: 'center',
        paddingTop: 24, paddingBottom: 24,
        maxWidth: 720,
      }}>
        <Eyebrow />

        <h1 style={{
          fontFamily: 'Fraunces, serif',
          fontWeight: 380,
          fontSize: 'clamp(48px, 5.4vw, 76px)',
          lineHeight: 1.04,
          letterSpacing: '-0.025em',
          color: L_INK,
          margin: '24px 0 0',
          textWrap: 'balance',
          fontStyle: 'normal',
        }}>
          When your <em style={{ fontStyle: 'italic', fontWeight: 360, color: L_EMBER }}>grandchild</em> is busy,
          <br />
          your computer can be the next best thing.
        </h1>

        <p style={{
          fontFamily: 'Inter, sans-serif',
          fontSize: 22, lineHeight: 1.45,
          color: L_INK_60,
          margin: '28px 0 0',
          maxWidth: 600,
          textWrap: 'pretty',
        }}>
          Xiexie reads suspicious emails before they're clicked.
          Helps with the small things every day.
          Learns who you are, locally.
        </p>

        <div style={{ marginTop: 44, display: 'flex', alignItems: 'center', gap: 20, flexWrap: 'wrap' }}>
          <DownloadButton />
          <div style={{
            fontFamily: '"JetBrains Mono", ui-monospace, monospace',
            fontSize: 12, lineHeight: 1.6, color: L_INK_50,
            maxWidth: 220,
          }}>
            macOS 13 or later.<br />
            Right-click → Open the first time.
          </div>
        </div>

        {/* tiny secondary line */}
        <div style={{
          marginTop: 56,
          fontFamily: '"JetBrains Mono", ui-monospace, monospace',
          fontSize: 11.5, color: L_INK_50, letterSpacing: 0.4,
        }}>
          v0.1 · 140 MB · open source · Apple silicon &amp; Intel
        </div>
      </div>

      {/* right — abstract macOS menu bar mock + verdict card peeking */}
      <div style={{ position: 'relative', zIndex: 2, minHeight: 560 }}>
        <DesktopMock />
      </div>
    </section>
  );
}

const navLink = {
  color: 'inherit', textDecoration: 'none',
};

function Wordmark() {
  return (
    <a href="#" style={{
      display: 'inline-flex', alignItems: 'baseline', gap: 10,
      textDecoration: 'none', color: L_INK,
    }}>
      <span style={{
        fontFamily: 'Fraunces, serif', fontSize: 22, fontWeight: 500,
        letterSpacing: '-0.01em',
      }}>Xiexie</span>
      <span style={{
        fontFamily: '"Noto Serif SC", "Songti SC", serif',
        fontSize: 18, color: L_EMBER, fontWeight: 500,
      }}>谢谢</span>
    </a>
  );
}

function Eyebrow() {
  return (
    <div style={{
      display: 'inline-flex', alignItems: 'center', gap: 10,
      alignSelf: 'flex-start',
      padding: '7px 14px',
      borderRadius: 999,
      border: `0.5px solid ${L_EMBER_30}`,
      background: 'rgba(217,122,37,0.06)',
      fontFamily: '"JetBrains Mono", ui-monospace, monospace',
      fontSize: 11.5, letterSpacing: 1.4,
      color: L_EMBER, textTransform: 'uppercase', fontWeight: 500,
    }}>
      <span style={{
        width: 6, height: 6, borderRadius: '50%', background: L_EMBER,
        boxShadow: `0 0 0 3px ${L_EMBER_10}`,
      }} />
      GOSIM Agentic Hackathon · Paris · May 2026
    </div>
  );
}

function DownloadButton() {
  return (
    <a id="download" href="/Xiexie.dmg" download="Xiexie.dmg" style={{
      display: 'inline-flex', alignItems: 'center', gap: 14,
      height: 56, padding: '0 28px',
      background: L_EMBER, color: L_CREAM,
      fontFamily: 'Inter, sans-serif', fontSize: 17.5, fontWeight: 500, letterSpacing: -0.1,
      borderRadius: 14, textDecoration: 'none',
      boxShadow: '0 1px 0 rgba(255,255,255,0.18) inset, 0 8px 22px rgba(217,122,37,0.28), 0 1.5px 0 rgba(122,60,28,0.18)',
      animation: 'xx-pulse-slow 4s ease-in-out infinite',
    }}>
      {/* abstract download mark — down-pointing chevron, not the Apple logo */}
      <svg width="18" height="18" viewBox="0 0 18 18" aria-hidden="true">
        <path d="M9 2.5 L9 12.2 M4.6 8.2 L9 12.6 L13.4 8.2 M3.6 14.8 L14.4 14.8"
          stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" fill="none" />
      </svg>
      <span>Download for macOS</span>
      <span style={{
        fontFamily: '"JetBrains Mono", ui-monospace, monospace',
        fontSize: 12.5, opacity: 0.78, letterSpacing: 0.4,
        paddingLeft: 14, marginLeft: 4, borderLeft: '0.5px solid rgba(255,255,255,0.32)',
      }}>12 MB</span>
    </a>
  );
}

// Stylised desktop — abstract menu bar (NOT a macOS chrome recreation),
// with the floating Verdict Card peeking from the right.
function DesktopMock() {
  return (
    <div style={{
      position: 'relative', width: '100%', height: '100%',
      minHeight: 580,
    }}>
      {/* floating menu-bar strip — abstract, top-aligned */}
      <div style={{
        position: 'absolute', top: 16, left: 0, right: -64,
        height: 38,
        background: 'rgba(43,29,18,0.86)',
        backdropFilter: 'blur(20px)',
        borderRadius: '12px 0 0 12px',
        boxShadow: '0 16px 40px rgba(43,29,18,0.18), 0 1px 0 rgba(255,255,255,0.06) inset',
        display: 'flex', alignItems: 'center', padding: '0 18px',
        color: 'rgba(251,247,240,0.85)',
        fontFamily: 'Inter, sans-serif', fontSize: 12.5, letterSpacing: 0.1,
        gap: 22,
      }}>
        {/* tray icon — Xiexie 谢 mark */}
        <TrayMark />
        <span style={{ opacity: 0.9, fontWeight: 500 }}>Mail</span>
        <span style={{ opacity: 0.55 }}>File</span>
        <span style={{ opacity: 0.55 }}>Edit</span>
        <span style={{ opacity: 0.55 }}>View</span>
        <span style={{ opacity: 0.55 }}>Mailbox</span>
        <span style={{ opacity: 0.55 }}>Window</span>
        <div style={{ flex: 1 }} />
        <span style={{
          fontFamily: '"JetBrains Mono", ui-monospace, monospace',
          fontSize: 11, opacity: 0.6, letterSpacing: 0.5,
        }}>Tue 10:42</span>
      </div>

      {/* abstract desktop plane — soft warm noise, not a real wallpaper */}
      <div style={{
        position: 'absolute', top: 70, left: 0, right: -48, bottom: 24,
        borderRadius: '14px 0 0 14px',
        background: `
          radial-gradient(140% 80% at 0% 0%, rgba(217,122,37,0.10), transparent 55%),
          radial-gradient(120% 70% at 100% 100%, rgba(184,53,28,0.06), transparent 60%),
          linear-gradient(180deg, #f3ead9 0%, #ecdec5 100%)
        `,
        boxShadow: '0 30px 80px rgba(43,29,18,0.10) inset, 0 1px 0 rgba(255,255,255,0.5) inset',
        overflow: 'hidden',
      }}>
        {/* warm grain */}
        <div style={{
          position: 'absolute', inset: 0, opacity: 0.5, mixBlendMode: 'multiply',
          background: `url("data:image/svg+xml;utf8,${encodeURIComponent(grainSvg())}")`,
        }} />
      </div>

      {/* line connecting tray icon to verdict card — the "thread" */}
      <svg style={{
        position: 'absolute', top: 50, right: 60, width: 280, height: 220,
        pointerEvents: 'none', zIndex: 3,
      }}>
        <path d="M 0 0 C 80 40, 140 100, 220 200" stroke={L_EMBER_30}
          strokeWidth="1" strokeDasharray="2 4" fill="none" />
      </svg>

      {/* verdict card — peeking, partially clipped right edge */}
      <div style={{
        position: 'absolute',
        top: 110,
        right: -180,
        width: 460,
        transform: 'rotate(-1.2deg)',
        zIndex: 4,
        filter: 'drop-shadow(0 30px 50px rgba(43,29,18,0.18))',
      }}>
        <div style={{
          transform: 'scale(0.6)', transformOrigin: 'top left',
          width: 760,
        }}>
          <VerdictCard variant="phishing" scale={1} />
        </div>
      </div>

      {/* quiet "tip" arrow + caption */}
      <div style={{
        position: 'absolute', top: 64, left: 4,
        fontFamily: '"JetBrains Mono", ui-monospace, monospace',
        fontSize: 11, color: L_INK_50, letterSpacing: 0.4,
        display: 'flex', alignItems: 'center', gap: 8,
      }}>
        <svg width="14" height="14" viewBox="0 0 14 14" aria-hidden="true">
          <path d="M2 11 C 5 8, 8 5, 11 3 M8.5 3 L11 3 L11 5.5"
            stroke={L_EMBER} strokeWidth="1.2" fill="none" strokeLinecap="round" />
        </svg>
        always there, never in the way
      </div>
    </div>
  );
}

function TrayMark() {
  return (
    <div style={{
      width: 22, height: 22, borderRadius: 6,
      background: L_EMBER,
      display: 'flex', alignItems: 'center', justifyContent: 'center',
      fontFamily: '"Noto Serif SC", "Songti SC", serif',
      fontSize: 13, color: L_CREAM, fontWeight: 600, lineHeight: 1,
      boxShadow: '0 1px 0 rgba(255,255,255,0.18) inset',
    }}>谢</div>
  );
}

function grainSvg() {
  return `<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'>
    <filter id='n'>
      <feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' seed='4'/>
      <feColorMatrix values='0 0 0 0 0.55  0 0 0 0 0.42  0 0 0 0 0.27  0 0 0 0.18 0'/>
    </filter>
    <rect width='100%' height='100%' filter='url(#n)'/>
  </svg>`;
}

// ---- Section divider thread -------------------------------------------

function Thread({ height = 88 }) {
  return (
    <div style={{
      position: 'relative', height,
      display: 'flex', justifyContent: 'center', alignItems: 'center',
      background: L_CREAM,
    }}>
      <div style={{ width: 1, height: '100%', background: `linear-gradient(180deg, transparent, ${L_EMBER_30} 30%, ${L_EMBER_30} 70%, transparent)` }} />
    </div>
  );
}

// ---- Section 2: three super-powers ------------------------------------

function Powers() {
  return (
    <section id="powers" style={{
      position: 'relative',
      padding: '40px 56px 120px',
      background: L_CREAM,
      overflow: 'hidden',
    }}>
      {/* one warm radial glow — center bottom */}
      <div style={{
        position: 'absolute',
        left: '50%', bottom: '-30%',
        transform: 'translateX(-50%)',
        width: 1100, height: 700,
        background: 'radial-gradient(ellipse at center, rgba(217,122,37,0.10), transparent 65%)',
        pointerEvents: 'none',
      }} />

      <header style={{
        position: 'relative', zIndex: 2,
        maxWidth: 760, margin: '0 auto 64px', textAlign: 'center',
      }}>
        <div style={{
          fontFamily: '"JetBrains Mono", ui-monospace, monospace',
          fontSize: 11.5, letterSpacing: 1.6, color: L_EMBER, textTransform: 'uppercase',
          marginBottom: 16, fontWeight: 500,
        }}>
          Three things, done well
        </div>
        <h2 style={{
          fontFamily: 'Fraunces, serif',
          fontWeight: 380, fontSize: 44, lineHeight: 1.12,
          letterSpacing: '-0.02em', color: L_INK,
          margin: 0, textWrap: 'balance',
        }}>
          A patient companion that watches, helps,
          and remembers — only what you'd want it to.
        </h2>
      </header>

      <div style={{
        position: 'relative', zIndex: 2,
        display: 'grid',
        gridTemplateColumns: 'repeat(3, 1fr)',
        gap: 36,
        maxWidth: 1320, margin: '0 auto',
      }}>
        <PowerNotices />
        <PowerHelps />
        <PowerLearns />
      </div>
    </section>
  );
}

function PowerColumn({ glyph, title, body, children, kicker }) {
  return (
    <article style={{
      display: 'flex', flexDirection: 'column', gap: 24,
    }}>
      <div style={{ display: 'flex', alignItems: 'center', gap: 14 }}>
        {glyph}
        <div style={{
          fontFamily: '"JetBrains Mono", ui-monospace, monospace',
          fontSize: 11, letterSpacing: 1.4, color: L_INK_50,
          textTransform: 'uppercase', fontWeight: 500,
        }}>{kicker}</div>
      </div>

      <h3 style={{
        fontFamily: 'Fraunces, serif',
        fontWeight: 400, fontSize: 28, lineHeight: 1.18,
        letterSpacing: '-0.015em', color: L_INK,
        margin: 0, textWrap: 'pretty',
      }}>{title}</h3>

      <p style={{
        fontFamily: 'Inter, sans-serif',
        fontSize: 17, lineHeight: 1.55, color: L_INK_60,
        margin: 0, textWrap: 'pretty',
      }}>{body}</p>

      <div style={{ marginTop: 8 }}>{children}</div>
    </article>
  );
}

// re-using the glyph SVG paths from the established glyph set
function MiniGlyph({ kind }) {
  const hex = kind === 'phishing' ? '#b8351c' : kind === 'helps' ? L_EMBER : L_FOREST;
  const soft = kind === 'phishing' ? 'rgba(184,53,28,0.10)' : kind === 'helps' ? L_EMBER_10 : 'rgba(47,109,63,0.10)';
  const ring = kind === 'phishing' ? 'rgba(184,53,28,0.22)' : kind === 'helps' ? 'rgba(217,122,37,0.22)' : 'rgba(47,109,63,0.22)';

  return (
    <div style={{
      width: 48, height: 48, borderRadius: 14,
      background: soft, border: `0.5px solid ${ring}`,
      display: 'flex', alignItems: 'center', justifyContent: 'center',
    }}>
      <svg width="26" height="26" viewBox="0 0 48 48">
        {kind === 'phishing' && (
          <>
            <path d="M24 8 L41 38 Q42.2 40 40 40 L8 40 Q5.8 40 7 38 Z" fill={hex} />
            <rect x="22.6" y="18" width="2.8" height="12" rx="1.4" fill="#fff8eb" />
            <circle cx="24" cy="34" r="1.6" fill="#fff8eb" />
          </>
        )}
        {kind === 'helps' && (
          <>
            <circle cx="24" cy="24" r="18" fill={hex} />
            {/* a small spoken-bubble dot trio */}
            <circle cx="16" cy="24" r="2.4" fill="#fff8eb" />
            <circle cx="24" cy="24" r="2.4" fill="#fff8eb" />
            <circle cx="32" cy="24" r="2.4" fill="#fff8eb" />
          </>
        )}
        {kind === 'safe' && (
          <>
            <circle cx="24" cy="24" r="18" fill={hex} />
            <path d="M15 24.5 L21.5 31 L33.5 18" stroke="#f1f7ec" strokeWidth="3.2"
              strokeLinecap="round" strokeLinejoin="round" fill="none" />
          </>
        )}
      </svg>
    </div>
  );
}

// — power 1 — notices what looks off
function PowerNotices() {
  return (
    <PowerColumn
      kicker="01 · watches"
      glyph={<MiniGlyph kind="phishing" />}
      title="Notices what looks off."
      body={`Xiexie watches incoming emails for the things that don't add up. A sender domain one letter off from your real bank. A link that ends up in the wrong country. A pattern flagged by the FTC last week. You hear about it before you click.`}
    >
      <VerdictPreview />
    </PowerColumn>
  );
}

// inline screenshot of the phishing verdict card — re-uses the existing component
function VerdictPreview() {
  return (
    <div style={{
      position: 'relative',
      borderRadius: 18,
      overflow: 'hidden',
      height: 320,
      background: 'transparent',
      boxShadow: '0 1px 0 rgba(255,255,255,0.5) inset',
    }}>
      <div style={{
        position: 'absolute', top: 0, left: '50%',
        transform: 'translateX(-50%) scale(0.46)',
        transformOrigin: 'top center',
        width: 760,
        filter: 'drop-shadow(0 18px 30px rgba(184,53,28,0.18))',
      }}>
        <VerdictCard variant="phishing" scale={1} />
      </div>
      {/* fade out at bottom — the screenshot is partial, suggests "more inside the app" */}
      <div style={{
        position: 'absolute', left: 0, right: 0, bottom: 0, height: 80,
        background: `linear-gradient(180deg, rgba(251,247,240,0), ${L_CREAM})`,
        pointerEvents: 'none',
      }} />
      <div style={{
        position: 'absolute', bottom: 8, left: 0, right: 0,
        textAlign: 'center',
        fontFamily: '"JetBrains Mono", ui-monospace, monospace',
        fontSize: 10.5, color: L_INK_50, letterSpacing: 0.4,
      }}>
        actual screenshot · Verdict Card v0.1
      </div>
    </div>
  );
}

// — power 2 — helps with the small things
function PowerHelps() {
  return (
    <PowerColumn
      kicker="02 · helps"
      glyph={<MiniGlyph kind="helps" />}
      title="Helps with the small things."
      body={`Open the bank tab. Find last month's electric bill. Make this text bigger. Set a reminder for three-thirty. Whatever your grandkids would do for you — Xiexie does it through voice, in plain English.`}
    >
      <Transcript />
    </PowerColumn>
  );
}

function Transcript() {
  const lines = [
    { who: 'you', text: 'Xiexie, can you make the text in this email a little bigger?' },
    { who: 'app', text: 'Sure. I bumped Mail to 18 point. Like that, or larger?' },
    { who: 'you', text: "That's perfect. Also remind me to call Lisa at three-thirty." },
    { who: 'app', text: 'Set. I\'ll knock on the screen at 3:30 today.' },
  ];

  return (
    <div style={{
      borderRadius: 16,
      background: '#fff',
      border: `0.5px solid ${L_INK_06}`,
      boxShadow: '0 8px 24px rgba(122,60,28,0.06), 0 1px 0 rgba(31,26,20,0.03)',
      padding: '20px 22px',
      fontFamily: '"JetBrains Mono", ui-monospace, monospace',
      fontSize: 13, lineHeight: 1.6, color: L_INK,
      display: 'flex', flexDirection: 'column', gap: 10,
    }}>
      <div style={{
        display: 'flex', alignItems: 'center', justifyContent: 'space-between',
        fontSize: 10.5, color: L_INK_50, letterSpacing: 1.2,
        textTransform: 'uppercase', fontWeight: 500,
        paddingBottom: 4, borderBottom: `0.5px dashed ${L_INK_10}`,
      }}>
        <span>~/transcripts/2026-05-14.md</span>
        <span style={{ color: L_FOREST, display: 'inline-flex', alignItems: 'center', gap: 5 }}>
          <span style={{ width: 6, height: 6, borderRadius: '50%', background: L_FOREST }} />
          listening
        </span>
      </div>
      {lines.map((l, i) => (
        <div key={i} style={{ display: 'flex', gap: 10 }}>
          <span style={{
            color: l.who === 'you' ? L_INK_50 : L_EMBER,
            width: 30, flexShrink: 0,
          }}>{l.who === 'you' ? 'you' : 'xx'}</span>
          <span style={{ color: l.who === 'you' ? L_INK : L_INK_80, flex: 1 }}>{l.text}</span>
        </div>
      ))}
    </div>
  );
}

// — power 3 — learns who you are
function PowerLearns() {
  return (
    <PowerColumn
      kicker="03 · remembers"
      glyph={<MiniGlyph kind="safe" />}
      title="Learns who you are."
      body={`Xiexie's memory is markdown — plain text you can read and edit. It knows your daughter's name is Lisa. It knows your insurance is Aetna. It forgets nothing on purpose, and remembers nothing in the cloud.`}
    >
      <FamilyMd />
    </PowerColumn>
  );
}

function FamilyMd() {
  return (
    <div style={{
      borderRadius: 16,
      background: '#fff',
      border: `0.5px solid ${L_INK_06}`,
      boxShadow: '0 8px 24px rgba(122,60,28,0.06), 0 1px 0 rgba(31,26,20,0.03)',
      padding: '20px 22px',
      fontFamily: '"JetBrains Mono", ui-monospace, monospace',
      fontSize: 13, lineHeight: 1.65, color: L_INK,
    }}>
      <div style={{
        display: 'flex', alignItems: 'center', justifyContent: 'space-between',
        fontSize: 10.5, color: L_INK_50, letterSpacing: 1.2,
        textTransform: 'uppercase', fontWeight: 500,
        paddingBottom: 8, marginBottom: 10, borderBottom: `0.5px dashed ${L_INK_10}`,
      }}>
        <span>~/.xiexie/wiki/family.md</span>
        <span>plain text · 2 KB</span>
      </div>

      <div style={{ color: L_EMBER, marginBottom: 4 }}># family</div>
      <div style={{ color: L_INK_60, marginBottom: 12 }}>
        people who matter and how to reach them
      </div>

      <div style={{ display: 'flex', gap: 6, marginBottom: 6 }}>
        <span style={{ color: L_EMBER }}>-</span>
        <span>
          <strong style={{ color: L_INK }}>Lisa</strong>
          <span style={{ color: L_INK_60 }}> — daughter, lives in Oakland.
            Calls Sundays around 4 PM. Allergic to shellfish.</span>
        </span>
      </div>

      <div style={{ display: 'flex', gap: 6, position: 'relative' }}>
        <span style={{ color: L_EMBER }}>-</span>
        <span>
          <strong style={{ color: L_INK }}>Aetna</strong>
          <span style={{ color: L_INK_60 }}> — health insurance,
            member ID ending 4471. Real domain is </span>
          <span style={{
            background: L_EMBER_10, color: L_INK,
            padding: '0 5px', borderRadius: 3,
          }}>aetna.com</span>
          <span style={{ color: L_INK_60 }}>, not </span>
          <span style={{
            color: '#b8351c', textDecoration: 'line-through',
            textDecorationColor: 'rgba(184,53,28,0.5)',
          }}>aetnna-secure.com</span>
          <span style={{ color: L_INK_60 }}>.</span>
        </span>
        <span className="xx-cursor" style={{
          display: 'inline-block', width: 8, height: 16,
          background: L_INK, marginLeft: 2, verticalAlign: 'middle',
          alignSelf: 'flex-end',
        }} />
      </div>
    </div>
  );
}

// ---- Page wrapper -----------------------------------------------------

function Landing() {
  return (
    <main style={{ background: L_CREAM, color: L_INK, fontFamily: 'Inter, sans-serif' }}>
      <Hero />
      <Thread />
      <Powers />
    </main>
  );
}

// inject keyframes
if (typeof document !== 'undefined' && !document.getElementById('xx-landing-styles')) {
  const s = document.createElement('style');
  s.id = 'xx-landing-styles';
  s.textContent = `
    @keyframes xx-pulse-slow {
      0%, 100% { opacity: 1; }
      50%      { opacity: 0.94; }
    }
    @keyframes xx-blink {
      0%, 49% { opacity: 1; }
      50%, 100% { opacity: 0; }
    }
    .xx-cursor { animation: xx-blink 1.05s steps(2, end) infinite; }
    a:hover { opacity: 0.8; }
  `;
  document.head.appendChild(s);
}

Object.assign(window, { Landing });
