/* docketlm.com — landing page variations */

const { useState } = React;

// ─────────────────────────────────────────────────────────────────────────
// Shared bits
// ─────────────────────────────────────────────────────────────────────────

function Wordmark({ size = 28 }) {
  return (
    <div className="row gap-3 center" style={{ fontFamily: "var(--font-sans)" }}>
      <div style={{
        width: size, height: size, borderRadius: 5,
        background: "var(--navy)", color: "#fff",
        display: "grid", placeItems: "center",
        fontFamily: "var(--font-serif)", fontStyle: "italic",
        fontWeight: 500, fontSize: size * 0.62, lineHeight: 1,
      }}>D</div>
      <div style={{ display: "flex", alignItems: "baseline", gap: 6 }}>
        <span style={{ fontWeight: 500, fontSize: size * 0.62, letterSpacing: "-0.018em" }}>Docket</span>
        <span className="mono" style={{ fontSize: size * 0.42, color: "var(--ink-3)", letterSpacing: "0" }}>LM</span>
      </div>
    </div>
  );
}

function LocalMatterDataPill({ variant = "default" }) {
  return (
    <span className="netbadge" style={{ fontSize: variant === "lg" ? 12.5 : 11.5 }}>
      <span className="dot"></span>
      client matter data stays local
    </span>
  );
}

function ComingSoonChip() {
  return (
    <span style={{
      display: "inline-flex", alignItems: "center", gap: 8,
      padding: "5px 12px 5px 10px",
      borderRadius: 999,
      background: "var(--surface)",
      border: "1px solid var(--rule-strong)",
      fontSize: 12, fontWeight: 500, color: "var(--ink-2)",
      letterSpacing: "-0.002em",
    }}>
      <span style={{
        width: 6, height: 6, borderRadius: "50%",
        background: "var(--amber)",
      }}></span>
      Coming soon · sign up for launch
    </span>
  );
}

function EmailSignup({ tone = "restrained" }) {
  const [email, setEmail] = useState("");
  const [submitted, setSubmitted] = useState(false);
  const [error, setError] = useState(null);
  const [loading, setLoading] = useState(false);

  const onSubmit = async (e) => {
    e.preventDefault();
    if (!email.trim()) return;
    setLoading(true);
    setError(null);
    try {
      const body = new URLSearchParams({ email: email.trim() });
      const res = await fetch("https://buttondown.email/api/emails/embed-subscribe/teamcogs", {
        method: "POST",
        body,
      });
      if (!res.ok) throw new Error();
      setSubmitted(true);
    } catch {
      setError("Please double-check that address.");
    } finally {
      setLoading(false);
    }
  };

  if (submitted) {
    return (
      <div style={{
        padding: "16px 18px",
        background: "var(--sage-soft)",
        border: "1px solid var(--sage-soft-2)",
        borderRadius: 8,
        color: "var(--sage)",
        fontSize: 14.5, lineHeight: 1.55,
        maxWidth: 460,
      }}>
        <strong style={{ fontWeight: 600 }}>Thanks — you're on the list.</strong>{" "}
        We'll write to <span className="mono" style={{ fontSize: 12.5 }}>{email}</span> when Docket LM is ready to install. No marketing in between.
      </div>
    );
  }

  if (tone === "bold") {
    return (
      <>
        <form onSubmit={onSubmit} style={{
          display: "flex", gap: 8, alignItems: "stretch",
          background: "var(--surface)",
          border: "1px solid var(--rule-strong)",
          borderRadius: 10,
          padding: 6,
          maxWidth: 480,
          boxShadow: "var(--shadow-1)",
        }}>
          <input
            type="email"
            value={email}
            onChange={(e) => setEmail(e.target.value)}
            placeholder="you@firm.example"
            style={{
              flex: 1, background: "transparent", border: "none", outline: "none",
              padding: "10px 12px", fontSize: 15, color: "var(--ink)",
            }}
          />
          <button type="submit" className="btn btn-primary" style={{ padding: "10px 18px" }} disabled={loading}>
            {loading ? "…" : "Notify me"}
          </button>
        </form>
        {error && <p style={{ marginTop: 8, fontSize: 13, color: "var(--brick)" }}>{error}</p>}
      </>
    );
  }

  // Restrained — bare underlined input
  return (
    <form onSubmit={onSubmit} style={{ maxWidth: 460 }}>
      <div style={{
        display: "flex", alignItems: "baseline", gap: 12,
        borderBottom: "1px solid var(--ink-2)",
        paddingBottom: 8,
      }}>
        <input
          type="email"
          value={email}
          onChange={(e) => setEmail(e.target.value)}
          placeholder="you@firm.example"
          style={{
            flex: 1, background: "transparent", border: "none", outline: "none",
            padding: "4px 0", fontSize: 16, color: "var(--ink)",
            fontFamily: "var(--font-sans)",
          }}
        />
        <button
          type="submit"
          disabled={loading}
          style={{
            background: "transparent", border: "none",
            padding: 0, fontFamily: "var(--font-sans)",
            fontSize: 14, fontWeight: 500, color: "var(--ink)",
            cursor: "pointer", letterSpacing: "-0.005em",
          }}
        >
          {loading ? "…" : "Notify me →"}
        </button>
      </div>
      {error
        ? <div className="small mt-2" style={{ color: "var(--brick)", fontSize: 12.5 }}>{error}</div>
        : <div className="small mt-2" style={{ color: "var(--ink-3)", fontSize: 12.5 }}>One email when Docket LM is ready to install. No drip campaign.</div>
      }
    </form>
  );
}

function SiteFooter() {
  return (
    <div style={{
      borderTop: "1px solid var(--rule)",
      padding: "28px 0 32px",
      marginTop: 60,
    }}>
      <div className="row between" style={{ alignItems: "flex-start", flexWrap: "wrap", gap: 24 }}>
        <div style={{ maxWidth: 480 }}>
          <Wordmark size={20} />
          <div className="small mt-3" style={{ color: "var(--ink-3)", lineHeight: 1.55 }}>
            Docket LM is informational software for source review. It does not provide legal advice, draft lawyer-ready filings, or replace attorney judgment. AI-assisted output requires attorney review.
          </div>
        </div>
        <div className="col gap-2" style={{ minWidth: 180 }}>
          <div className="micro" style={{ color: "var(--ink-4)" }}>Contact</div>
          <a href="mailto:hello@docketlm.com" className="mono" style={{ fontSize: 12.5, color: "var(--ink-2)" }}>
            hello@docketlm.com
          </a>
        </div>
      </div>
      <div className="row between mt-6" style={{ color: "var(--ink-4)", fontSize: 11.5, paddingTop: 16, borderTop: "1px solid var(--rule)" }}>
        <span>© 2026 Docket LM</span>
        <span className="mono">docketlm.com</span>
      </div>
    </div>
  );
}

// ─────────────────────────────────────────────────────────────────────────
// Mock UI snippets — used in both variations as product proof
// ─────────────────────────────────────────────────────────────────────────

// A snippet of brief prose with a live-looking footnote chip and a tiny
// floating source card hanging off it. Sells "citations earn screen
// real estate" without screenshotting the whole brief.
function CitedProseSnippet() {
  return (
    <div style={{ position: "relative", padding: "0 0 36px 0" }}>
      <div style={{
        background: "var(--surface)",
        border: "1px solid var(--rule)",
        borderRadius: 10,
        padding: "26px 30px",
        boxShadow: "var(--shadow-1)",
      }}>
        <div className="row between center mb-3">
          <div className="row gap-3 center">
            <span className="mono" style={{ fontSize: 11, color: "var(--ink-4)" }}>04</span>
            <span style={{ fontFamily: "var(--font-sans)", fontWeight: 500, fontSize: 15 }}>
              Document conflicts
            </span>
          </div>
          <span className="chip chip-sage" style={{ fontSize: 10.5 }}>
            <span className="dot"></span>Source-backed
          </span>
        </div>
        <p className="prose" style={{ margin: 0, fontSize: 15.5 }}>
          Lay was informed of the accounting concerns at least two months
          before the October 23 analyst call. The Watkins memorandum of
          August 22, 2001 reached Lay and was met with a same-day
          meeting
          <span style={{ display: "inline-flex", gap: 2, marginLeft: 2 }}>
            <span className="fn">8</span>
            <span className="fn fn-active">14</span>
            <span className="fn">20</span>
          </span>
          ; Vinson &amp; Elkins was retained to review.
        </p>
      </div>

      {/* Floating source preview card */}
      <div style={{
        position: "absolute", right: -14, bottom: -10,
        width: 260,
        background: "var(--surface)",
        border: "1px solid var(--rule-strong)",
        borderRadius: 8,
        padding: "12px 14px",
        boxShadow: "var(--shadow-2)",
        transform: "rotate(0.3deg)",
      }}>
        <div className="row gap-2 center mb-2">
          <span className="chip chip-navy" style={{ fontSize: 10.5 }}><span className="mono">[14]</span></span>
          <span className="micro" style={{ fontSize: 10 }}>Source</span>
        </div>
        <div style={{ fontFamily: "var(--font-sans)", fontWeight: 500, fontSize: 13, lineHeight: 1.35 }}>
          Memorandum from S. Watkins to K. Lay
        </div>
        <div className="mono" style={{ fontSize: 10.5, color: "var(--ink-3)", marginTop: 2 }}>
          2001-08-22 · p.3
        </div>
        <div style={{
          marginTop: 8, padding: "8px 10px",
          background: "#fefdf8", border: "1px solid var(--rule)",
          borderRadius: 4, position: "relative",
          fontFamily: "var(--font-serif)", fontSize: 12, lineHeight: 1.5,
          color: "var(--ink-2)", fontStyle: "italic",
        }}>
          <div style={{ position: "absolute", left: -1, top: -1, bottom: -1, width: 2, background: "var(--navy)" }}></div>
          "I am incredibly nervous that we will implode in a wave of accounting scandals…"
        </div>
      </div>
    </div>
  );
}

// Mini document-conflict card — distilled from the real source review surface
function ContradictionMini() {
  return (
    <div className="mock-contradiction" style={{
      background: "var(--surface)",
      border: "1px solid var(--brick-soft-2)",
      borderRadius: 10,
      overflow: "hidden",
      boxShadow: "var(--shadow-1)",
    }}>
      <div className="row gap-2 center" style={{
        padding: "10px 14px",
        background: "var(--brick-soft)",
        borderBottom: "1px solid var(--brick-soft-2)",
      }}>
        <span style={{
          width: 18, height: 18, borderRadius: 4,
          background: "var(--brick)", color: "#fff",
          display: "grid", placeItems: "center",
          fontSize: 11, fontWeight: 500,
        }}>2</span>
        <span style={{ fontWeight: 500, color: "var(--brick)", fontSize: 13 }}>
          Document conflict: when Lay was informed
        </span>
      </div>
      <div className="mock-contradiction-grid" style={{ display: "grid", gridTemplateColumns: "1fr auto 1fr", gap: 10, padding: 14, alignItems: "stretch" }}>
        <div style={{ background: "var(--surface-2)", border: "1px solid var(--rule)", borderRadius: 6, padding: "10px 12px" }}>
          <div className="row between center mb-1">
            <span className="micro" style={{ fontSize: 9.5 }}>Watkins memo</span>
            <span className="mono" style={{ fontSize: 10, color: "var(--ink-3)" }}>2001-08-22</span>
          </div>
          <div style={{ fontFamily: "var(--font-serif)", fontSize: 12.5, lineHeight: 1.5, fontStyle: "italic", color: "var(--ink)" }}>
            "I am incredibly nervous…"
          </div>
        </div>
        <div style={{
          display: "grid", placeItems: "center",
          color: "var(--brick)", fontFamily: "var(--font-serif)",
          fontStyle: "italic", fontSize: 14,
        }}>vs.</div>
        <div style={{ background: "var(--surface-2)", border: "1px solid var(--rule)", borderRadius: 6, padding: "10px 12px" }}>
          <div className="row between center mb-1">
            <span className="micro" style={{ fontSize: 9.5 }}>Analyst call</span>
            <span className="mono" style={{ fontSize: 10, color: "var(--ink-3)" }}>2001-10-23</span>
          </div>
          <div style={{ fontFamily: "var(--font-serif)", fontSize: 12.5, lineHeight: 1.5, fontStyle: "italic", color: "var(--ink)" }}>
            "…no other shoe to drop."
          </div>
        </div>
      </div>
    </div>
  );
}

// Mini "redacted handoff" — a redacted draft prepared for outside research
function RedactedHandoffMini() {
  return (
    <div className="mock-drafting" style={{
      background: "var(--surface)",
      border: "1px solid var(--rule)",
      borderRadius: 10,
      overflow: "hidden",
      boxShadow: "var(--shadow-1)",
    }}>
      {/* Filename + actions bar */}
      <div className="row between center" style={{
        padding: "10px 14px",
        background: "var(--surface-2)",
        borderBottom: "1px solid var(--rule)",
        gap: 8,
      }}>
        <div className="row gap-2 center" style={{ minWidth: 0 }}>
          <span style={{
            width: 16, height: 16, borderRadius: 3,
            background: "var(--amber-soft)",
            border: "1px solid rgba(138,106,43,0.2)",
            display: "grid", placeItems: "center",
            color: "var(--amber)", fontSize: 9, fontWeight: 600,
            flexShrink: 0,
          }}>R</span>
          <span className="mono" style={{
            fontSize: 11, color: "var(--ink-2)",
            whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis", minWidth: 0,
          }}>brief.redacted.md</span>
        </div>
        <span className="chip chip-amber" style={{ fontSize: 10, flexShrink: 0 }}>
          <span className="dot"></span>Redacted draft
        </span>
      </div>

      {/* The redacted brief — title, sections, citations */}
      <div style={{ padding: "16px 18px 12px" }}>
        <div className="micro" style={{ fontSize: 9, color: "var(--ink-4)", marginBottom: 6 }}>
          Matter brief · auto-redacted
        </div>
        <div style={{
          fontFamily: "var(--font-serif)", fontSize: 14.5, fontWeight: 500,
          lineHeight: 1.25, color: "var(--ink)", marginBottom: 12,
          display: "flex", alignItems: "baseline", gap: 6, flexWrap: "wrap",
        }}>
          <RedactSpan>Plaintiff A</RedactSpan>
          <span style={{ fontStyle: "italic", color: "var(--ink-3)" }}>v.</span>
          <RedactSpan>Defendant B</RedactSpan>
        </div>

        {/* Section: timeline */}
        <div style={{ marginBottom: 10 }}>
          <div className="row gap-2 center" style={{ marginBottom: 4 }}>
            <span className="mono" style={{ fontSize: 9.5, color: "var(--ink-4)" }}>03</span>
            <span style={{ fontFamily: "var(--font-sans)", fontWeight: 500, fontSize: 11.5 }}>
              Timeline
            </span>
          </div>
          <p className="prose" style={{ margin: 0, fontSize: 12.5, color: "var(--ink-2)", lineHeight: 1.55 }}>
            On <RedactSpan>DATE-01</RedactSpan>, <RedactSpan>Witness 1</RedactSpan> sent a memorandum to <RedactSpan>Executive A</RedactSpan> raising concerns
            <span style={{ display: "inline-flex", gap: 2, marginLeft: 2 }}>
              <span className="fn" style={{ fontSize: 9.5, minWidth: 14, height: 14 }}>8</span>
            </span>
            .
          </p>
        </div>

        {/* Section: risks */}
        <div>
          <div className="row gap-2 center" style={{ marginBottom: 4 }}>
            <span className="mono" style={{ fontSize: 9.5, color: "var(--ink-4)" }}>04</span>
            <span style={{ fontFamily: "var(--font-sans)", fontWeight: 500, fontSize: 11.5 }}>
              Document conflicts
            </span>
          </div>
          <p className="prose" style={{ margin: 0, fontSize: 12.5, color: "var(--ink-2)", lineHeight: 1.55 }}>
            <RedactSpan>Executive A</RedactSpan> was informed of the accounting concerns at least <RedactSpan>~2 months</RedactSpan> before the public statement on <RedactSpan>DATE-02</RedactSpan>
            <span style={{ display: "inline-flex", gap: 2, marginLeft: 2 }}>
              <span className="fn fn-active" style={{ fontSize: 9.5, minWidth: 14, height: 14 }}>14</span>
            </span>
            .
          </p>
        </div>
      </div>

      {/* Footer: what was scrubbed */}
      <div style={{
        padding: "8px 14px 10px",
        borderTop: "1px solid var(--rule)",
        background: "var(--surface-2)",
        display: "flex", flexWrap: "wrap", gap: 6, alignItems: "center",
      }}>
        <span className="micro" style={{ fontSize: 9.5, color: "var(--ink-3)", marginRight: 4 }}>Scrubbed</span>
        {["12 names", "8 dates", "6 entities", "ID numbers"].map((t, i) => (
          <span key={i} className="mono" style={{
            fontSize: 10, padding: "2px 6px",
            background: "var(--amber-soft)",
            color: "var(--amber)",
            borderRadius: 3,
            border: "1px solid rgba(138,106,43,0.15)",
          }}>{t}</span>
        ))}
      </div>
    </div>
  );
}

function RedactSpan({ children }) {
  return (
    <span style={{
      display: "inline-block",
      background: "var(--ink)",
      color: "var(--ink)",
      padding: "0 4px",
      borderRadius: 2,
      lineHeight: 1.2,
      verticalAlign: "baseline",
      userSelect: "none",
    }}>{children}</span>
  );
}

// Mini "drafting declined" — kept as a secondary chip inside Bounded
function DraftingDeclinedMini() {
  return (
    <div className="mock-drafting" style={{
      background: "var(--surface)",
      border: "1px solid var(--rule)",
      borderRadius: 10,
      padding: "16px 18px",
      boxShadow: "var(--shadow-1)",
    }}>
      <div className="row gap-2 center mb-3">
        <span style={{
          width: 18, height: 18, borderRadius: 4,
          background: "var(--surface-3)", color: "var(--ink-2)",
          display: "grid", placeItems: "center",
          fontFamily: "var(--font-serif)", fontStyle: "italic",
          fontSize: 12,
        }}>Q</span>
        <span style={{ fontSize: 13, fontWeight: 500, color: "var(--ink)" }}>
          Draft a settlement letter for opposing counsel.
        </span>
      </div>
      <span className="chip chip-amber mb-3" style={{ fontSize: 11.5 }}>Drafting declined</span>
      <p className="prose" style={{ margin: "10px 0 0", fontSize: 13.5, color: "var(--ink-2)" }}>
        Docket LM reads and cites material; it does not draft motions, demand
        letters, or strategy. The materials relevant here are in
        §6 Document conflicts above.
      </p>
    </div>
  );
}

// Mini local matter-data panel
function LocalOnlyDiagram() {
  return (
    <div className="mock-local-data" style={{
      background: "var(--surface)",
      border: "1px solid var(--rule)",
      borderRadius: 10,
      padding: "20px 22px",
      boxShadow: "var(--shadow-1)",
      position: "relative",
      overflow: "hidden",
    }}>
      <div className="row between center mb-3">
        <span className="micro">Network audit</span>
        <LocalMatterDataPill />
      </div>
      <div className="mock-local-data-grid" style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 10 }}>
        {[
          { k: "Documents on disk", v: "412", ok: true },
          { k: "Matter data sent", v: "none", ok: true },
          { k: "Model", v: "local", ok: true },
          { k: "Index", v: "on disk", ok: true },
        ].map((row, i) => (
          <div key={i} style={{
            display: "flex", alignItems: "baseline", justifyContent: "space-between",
            padding: "8px 10px",
            background: "var(--surface-2)",
            border: "1px solid var(--rule)",
            borderRadius: 6,
          }}>
            <span style={{ fontSize: 11.5, color: "var(--ink-3)" }}>{row.k}</span>
            <span className="mono" style={{ fontSize: 12, color: "var(--sage)" }}>{row.v}</span>
          </div>
        ))}
      </div>
    </div>
  );
}

// ─────────────────────────────────────────────────────────────────────────
// Workflow summary — first-read brief, cited search, review checklist
// ─────────────────────────────────────────────────────────────────────────
function MatterReviewSection() {
  const cards = [
    {
      n: "01",
      title: "Prepare a cited first-read brief",
      body: "Docket LM turns attached matter material into a structured first read with citations beside the factual claims.",
      chip: "First-read brief",
    },
    {
      n: "02",
      title: "Search the matter with source-backed answers",
      body: "Ask follow-up questions and open the cited source spans instead of hunting through folders by memory.",
      chip: "Ask this matter",
    },
    {
      n: "03",
      title: "Review unsupported assertions and uncited material",
      body: "Use the review checklist to see document conflicts, unsupported assertions, citation issues, and material that still needs attorney review.",
      chip: "Review checklist",
    },
  ];

  return (
    <section className="lb-workflow" style={{
      padding: "72px 48px 80px",
      background: "var(--paper)",
      borderBottom: "1px solid var(--rule)",
    }}>
      <div style={{ maxWidth: 1200, margin: "0 auto" }}>
        <div className="lb-workflow-head" style={{
          display: "grid",
          gridTemplateColumns: "0.85fr 1.15fr",
          gap: 48,
          alignItems: "end",
          marginBottom: 36,
        }}>
          <div>
            <div className="micro" style={{ color: "var(--navy)" }}>What Docket LM prepares</div>
            <h2 className="lb-workflow-h2" style={{
              fontFamily: "var(--font-sans)",
              fontWeight: 500,
              fontSize: 42,
              lineHeight: 1.08,
              margin: "14px 0 0",
            }}>
              A first read, a cited search surface, and a review checklist.
            </h2>
          </div>
          <p style={{ fontSize: 17, lineHeight: 1.55, color: "var(--ink-2)", margin: 0 }}>
            When a new matter lands, Docket LM gives you a first pass you can
            verify: cited facts, matter search, and review flags for material
            that still needs lawyer attention.
          </p>
        </div>

        <div className="lb-workflow-grid" style={{
          display: "grid",
          gridTemplateColumns: "repeat(3, 1fr)",
          gap: 18,
        }}>
          {cards.map((card) => (
            <div key={card.n} style={{
              background: "var(--surface)",
              border: "1px solid var(--rule)",
              borderRadius: 12,
              padding: "24px 24px 26px",
              minHeight: 220,
              display: "flex",
              flexDirection: "column",
              gap: 16,
            }}>
              <div className="row between center" style={{ gap: 10 }}>
                <span className="mono" style={{ color: "var(--ink-4)" }}>{card.n}</span>
                <span className="chip chip-navy" style={{ fontSize: 10.5 }}>{card.chip}</span>
              </div>
              <h3 style={{
                fontFamily: "var(--font-sans)",
                fontWeight: 500,
                fontSize: 22,
                lineHeight: 1.2,
                margin: 0,
              }}>
                {card.title}
              </h3>
              <p style={{ fontSize: 14.5, lineHeight: 1.6, color: "var(--ink-2)", margin: 0 }}>
                {card.body}
              </p>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

// ─────────────────────────────────────────────────────────────────────────
// Import material — concrete source surface
// ─────────────────────────────────────────────────────────────────────────
function MaterialSection() {
  const sources = [
    { label: "Folder", note: "Matter folders, PDFs, DOCX, TXT, CSV" },
    { label: "Email", note: "EML, MBOX, OLM exports" },
    { label: "Messages", note: "Exports or selected message database copies" },
    { label: "Photos", note: "Images and scanned PDFs with local OCR" },
    { label: "Audio / video", note: "Dropped recordings, voicemails, depositions" },
    { label: "Scratch note", note: "Typed or pasted notes" },
  ];

  return (
    <section className="lb-material" style={{
      padding: "76px 48px 84px",
      background: "var(--surface-2)",
      borderBottom: "1px solid var(--rule)",
    }}>
      <div className="lb-material-grid" style={{
        maxWidth: 1200,
        margin: "0 auto",
        display: "grid",
        gridTemplateColumns: "0.9fr 1.1fr",
        gap: 56,
        alignItems: "start",
      }}>
        <div>
          <div className="micro" style={{ color: "var(--amber)" }}>Add material</div>
          <h2 className="lb-material-h2" style={{
            fontFamily: "var(--font-sans)",
            fontWeight: 500,
            fontSize: 42,
            lineHeight: 1.08,
            margin: "14px 0 0",
          }}>
            Add the material lawyers actually review.
          </h2>
          <p style={{
            fontFamily: "var(--font-serif)",
            fontSize: 18,
            lineHeight: 1.55,
            color: "var(--ink-2)",
            margin: "22px 0 0",
          }}>
            Bring in folders, PDFs, DOCX, TXT, CSV, EML, MBOX, OLM, Messages
            exports, user-selected Messages DB copies, images, scanned PDFs,
            audio, video, and scratch notes.
          </p>
          <p style={{
            margin: "18px 0 0",
            paddingTop: 18,
            borderTop: "1px solid var(--rule)",
            fontSize: 14,
            lineHeight: 1.55,
            color: "var(--ink-3)",
          }}>
            Mail and Messages are import-based. Docket LM reads only the
            exports or copies you choose; it does not watch live message
            stores in the background.
          </p>
        </div>

        <div className="lb-source-list" style={{
          display: "grid",
          gridTemplateColumns: "1fr 1fr",
          gap: 12,
        }}>
          {sources.map((source, i) => (
            <div key={source.label} style={{
              background: "var(--surface)",
              border: "1px solid var(--rule)",
              borderRadius: 10,
              padding: "18px 18px",
              minHeight: 128,
              display: "flex",
              flexDirection: "column",
              gap: 12,
            }}>
              <div className="row gap-2 center">
                <span style={{
                  width: 24,
                  height: 24,
                  borderRadius: 5,
                  display: "grid",
                  placeItems: "center",
                  background: i % 2 === 0 ? "var(--navy-soft)" : "var(--amber-soft)",
                  color: i % 2 === 0 ? "var(--navy)" : "var(--amber)",
                  fontWeight: 600,
                  fontSize: 12,
                }}>
                  {source.label.charAt(0)}
                </span>
                <h3 style={{ fontSize: 16, fontWeight: 500, margin: 0 }}>{source.label}</h3>
              </div>
              <p style={{ fontSize: 13.5, lineHeight: 1.5, color: "var(--ink-2)", margin: 0 }}>
                {source.note}
              </p>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

// ─────────────────────────────────────────────────────────────────────────
// Source Audit — compare draft/outside text against the matter file
// ─────────────────────────────────────────────────────────────────────────
function SourceAuditSection() {
  const rows = [
    { status: "Supported", assertion: "Client reported neck pain on March 12.", citation: "Smith intake.pdf p. 2", tone: "sage" },
    { status: "Conflicts with source", assertion: "Draft says treatment ended in April.", citation: "June MRI report p. 1", tone: "brick" },
    { status: "Unsupported in matter file", assertion: "Draft states policy limits are $100K.", citation: "None found", tone: "amber" },
    { status: "Citation issue", assertion: "Exhibit 7 is cited for the accident date.", citation: "Ex. 7 p. 3", tone: "navy" },
    { status: "Needs review", assertion: "Client says the adjuster called twice.", citation: "Two possible matches", tone: "neutral" },
  ];

  const chipClass = {
    sage: "chip-sage",
    brick: "chip-brick",
    amber: "chip-amber",
    navy: "chip-navy",
    neutral: "chip-neutral",
  };

  return (
    <section className="lb-audit" style={{
      padding: "92px 48px 96px",
      background: "var(--paper)",
      borderBottom: "1px solid var(--rule)",
    }}>
      <div className="lb-audit-grid" style={{
        maxWidth: 1200,
        margin: "0 auto",
        display: "grid",
        gridTemplateColumns: "0.95fr 1.05fr",
        gap: 56,
        alignItems: "center",
      }}>
        <div>
          <div className="micro" style={{ color: "var(--brick)" }}>Source Audit</div>
          <h2 className="lb-audit-h2" style={{
            fontFamily: "var(--font-sans)",
            fontWeight: 500,
            fontSize: 46,
            lineHeight: 1.07,
            margin: "14px 0 0",
          }}>
            Audit a draft against the matter file.
          </h2>
          <p style={{
            fontSize: 17,
            lineHeight: 1.6,
            color: "var(--ink-2)",
            margin: "22px 0 0",
          }}>
            Paste a draft, demand letter, client narrative, statement of facts,
            or opponent filing excerpt. Docket LM compares factual assertions
            against the matter file and shows what is supported, unsupported in
            the matter, conflicts with a source, or needs review.
          </p>
          <p style={{
            margin: "20px 0 0",
            padding: "16px 18px",
            background: "var(--surface-2)",
            border: "1px solid var(--rule)",
            borderLeft: "3px solid var(--navy)",
            borderRadius: 6,
            fontFamily: "var(--font-serif)",
            fontSize: 15.5,
            lineHeight: 1.55,
            color: "var(--ink)",
          }}>
            Docket LM does not decide whether the draft is good legal work. It
            shows what the attached sources support, conflict with, or do not
            contain.
          </p>
        </div>

        <div style={{
          background: "var(--surface)",
          border: "1px solid var(--rule-strong)",
          borderRadius: 12,
          overflow: "hidden",
          boxShadow: "var(--shadow-2)",
        }}>
          <div className="row between center" style={{
            padding: "14px 18px",
            background: "var(--surface-2)",
            borderBottom: "1px solid var(--rule)",
            gap: 12,
          }}>
            <div>
              <div className="micro" style={{ color: "var(--ink-3)", marginBottom: 4 }}>Draft demand letter</div>
              <div style={{ fontWeight: 500, fontSize: 15 }}>Assertions found</div>
            </div>
            <span className="chip chip-amber" style={{ fontSize: 10.5 }}>Attorney review required</span>
          </div>

          <div className="lb-audit-table" style={{ display: "grid" }}>
            {rows.map((row, i) => (
              <div key={row.status} style={{
                display: "grid",
                gridTemplateColumns: "150px 1fr",
                gap: 16,
                padding: "14px 18px",
                borderBottom: i === rows.length - 1 ? "none" : "1px solid var(--rule)",
              }}>
                <span className={`chip ${chipClass[row.tone]}`} style={{ fontSize: 10.5, alignSelf: "start" }}>
                  {row.status}
                </span>
                <div>
                  <div style={{ fontFamily: "var(--font-serif)", fontSize: 14.5, lineHeight: 1.45, color: "var(--ink)" }}>
                    {row.assertion}
                  </div>
                  <div className="mono" style={{ fontSize: 10.5, color: "var(--ink-3)", marginTop: 5 }}>
                    {row.citation}
                  </div>
                </div>
              </div>
            ))}
          </div>
        </div>
      </div>
    </section>
  );
}

// ─────────────────────────────────────────────────────────────────────────
// Local processing — precise matter-data privacy claim
// ─────────────────────────────────────────────────────────────────────────
function LocalProcessingSection() {
  const rows = [
    { k: "Matter review", v: "Ingestion, OCR, transcription, search, citations, and follow-up answers run on your computer." },
    { k: "Client matter data", v: "Client matter data never leaves your computer." },
    { k: "Mail and Messages", v: "Import-based exports only. Docket LM reads only the files or copies you choose." },
    { k: "Installation", v: "App updates and local model setup do not require uploading the matter materials you add." },
  ];

  return (
    <section className="lb-local" style={{
      padding: "88px 48px 96px",
      background: "var(--paper-2)",
      borderBottom: "1px solid var(--rule)",
      position: "relative",
      overflow: "hidden",
    }}>
      <div style={{ maxWidth: 1200, margin: "0 auto", position: "relative" }}>
        <div className="lb-local-grid" style={{
          display: "grid",
          gridTemplateColumns: "0.9fr 1.1fr",
          gap: 56,
          alignItems: "start",
        }}>
          <div>
            <div className="row gap-2 center" style={{ marginBottom: 22 }}>
              <span style={{ width: 6, height: 6, borderRadius: "50%", background: "var(--sage)" }}></span>
              <span className="micro" style={{ color: "var(--sage)" }}>Local processing</span>
            </div>
            <h2 className="lb-local-h2" style={{
              fontFamily: "var(--font-sans)",
              fontWeight: 500,
              fontSize: 48,
              lineHeight: 1.06,
              margin: 0,
              maxWidth: 640,
              color: "var(--ink)",
            }}>
              Client matter data never leaves your computer.
            </h2>
            <p style={{
              fontFamily: "var(--font-serif)",
              fontSize: 19,
              lineHeight: 1.55,
              color: "var(--ink-2)",
              margin: "22px 0 0",
              maxWidth: 560,
            }}>
              That is the point: Docket LM lets you use AI-assisted review on
              confidential matter material without uploading the matter to a
              cloud service. The work stays source-grounded, so citations and
              attorney judgment stay front and center.
            </p>
          </div>

          <div style={{
            background: "var(--surface)",
            border: "1px solid var(--rule-strong)",
            borderRadius: 12,
            overflow: "hidden",
            boxShadow: "var(--shadow-1)",
          }}>
            <div className="row between center" style={{
              padding: "14px 18px",
              background: "var(--surface-2)",
              borderBottom: "1px solid var(--rule)",
              gap: 12,
            }}>
              <span className="micro" style={{ color: "var(--navy)" }}>Matter-data boundary</span>
              <LocalMatterDataPill />
            </div>
            <div>
              {rows.map((row, i) => (
                <div key={i} style={{
                  display: "grid",
                  gridTemplateColumns: "150px 1fr",
                  gap: 18,
                  padding: "16px 18px",
                  borderBottom: i === rows.length - 1 ? "none" : "1px solid var(--rule)",
                }}>
                  <div className="micro" style={{ color: "var(--ink-3)" }}>{row.k}</div>
                  <div style={{ fontFamily: "var(--font-serif)", fontSize: 15.5, lineHeight: 1.5, color: "var(--ink)" }}>
                    {row.v}
                  </div>
                </div>
              ))}
            </div>
          </div>
        </div>
      </div>
    </section>
  );
}

// ─────────────────────────────────────────────────────────────────────────
// Architecture section — plain-language "how it actually works"
// ─────────────────────────────────────────────────────────────────────────
function ArchitectureSection() {
  const pieces = [
    {
      n: "01",
      title: "The reader",
      kicker: "A desktop app",
      body: "Installs like the desktop tools your firm already uses. You open it, add material, and prepare the matter file on your own computer.",
      visual: (
        <div style={{ display: "flex", alignItems: "center", gap: 8, padding: "10px 12px", background: "var(--surface-2)", border: "1px solid var(--rule)", borderRadius: 6 }}>
          <div style={{ width: 18, height: 18, borderRadius: 4, background: "var(--navy)", color: "#fff", display: "grid", placeItems: "center", fontFamily: "var(--font-serif)", fontStyle: "italic", fontSize: 11, fontWeight: 500 }}>D</div>
          <span className="mono" style={{ fontSize: 11.5, color: "var(--ink-2)" }}>Docket LM desktop app</span>
        </div>
      ),
    },
    {
      n: "02",
      title: "The AI",
      kicker: "Runs locally",
      body: "A compact local model helps summarize, search, and compare against the sources you attach.",
      visual: (
        <div style={{ display: "flex", flexDirection: "column", gap: 6, padding: "10px 12px", background: "var(--surface-2)", border: "1px solid var(--rule)", borderRadius: 6 }}>
          <div className="row between center" style={{ gap: 8 }}>
            <span className="mono" style={{ fontSize: 11.5, color: "var(--ink-2)", whiteSpace: "nowrap" }}>local model</span>
            <span style={{ fontSize: 10.5, color: "var(--sage)", display: "inline-flex", alignItems: "center", gap: 4, whiteSpace: "nowrap" }}>
              <span style={{ width: 5, height: 5, borderRadius: "50%", background: "var(--sage)", flexShrink: 0 }}></span>
              running
            </span>
          </div>
          <div style={{ height: 4, background: "var(--rule)", borderRadius: 2, overflow: "hidden" }}>
            <div style={{ width: "62%", height: "100%", background: "var(--sage)" }}></div>
          </div>
          <span className="mono" style={{ fontSize: 10, color: "var(--ink-3)", whiteSpace: "nowrap" }}>source-grounded · local</span>
        </div>
      ),
    },
    {
      n: "03",
      title: "The index",
      kicker: "Built once per matter",
      body: "When you load a matter, Docket LM reads through it and builds a private search index - think of it as a search engine that only knows about this one matter.",
      visual: (
        <div style={{ display: "flex", flexDirection: "column", gap: 4, padding: "10px 12px", background: "var(--surface-2)", border: "1px solid var(--rule)", borderRadius: 6, fontFamily: "var(--font-mono)", fontSize: 10.5, color: "var(--ink-3)" }}>
          <div>~/Matters/Watkins-v-Lay/</div>
          <div style={{ paddingLeft: 12 }}>├── documents/<span style={{ color: "var(--ink-4)" }}> · your files</span></div>
          <div style={{ paddingLeft: 12 }}>└── .docket-index/<span style={{ color: "var(--sage)" }}> · removable</span></div>
        </div>
      ),
    },
    {
      n: "04",
      title: "Your documents",
      kicker: "Stay exactly where you put them",
      body: "Docket LM reads files you choose. It does not read live Mail or Messages stores, and Mail or Messages imports stay file-based.",
      visual: (
        <div style={{ display: "flex", flexDirection: "column", gap: 6, padding: "10px 12px", background: "var(--surface-2)", border: "1px solid var(--rule)", borderRadius: 6 }}>
          {[
            { name: "Watkins_memo.pdf", size: "112 kb" },
            { name: "Powers_Report.pdf", size: "3.2 mb" },
            { name: "Skilling_depo.docx", size: "78 kb" },
          ].map((f, i) => (
            <div key={i} className="row between center" style={{ fontFamily: "var(--font-mono)", fontSize: 10.5, gap: 8 }}>
              <span style={{ color: "var(--ink-2)", whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis", minWidth: 0 }}>{f.name}</span>
              <span style={{ color: "var(--ink-4)", whiteSpace: "nowrap", flexShrink: 0 }}>{f.size}</span>
            </div>
          ))}
        </div>
      ),
    },
  ];

  return (
    <section className="lb-arch" style={{
      padding: "100px 48px 96px",
      borderBottom: "1px solid var(--rule)",
      background: "var(--paper)",
    }}>
      <div style={{ maxWidth: 1200, margin: "0 auto" }}>
        <div className="lb-arch-head" style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 56, marginBottom: 56, alignItems: "end" }}>
          <div>
            <div className="micro" style={{ color: "var(--navy)", marginBottom: 16 }}>How it works</div>
            <h2 className="lb-arch-h2" style={{
              fontFamily: "var(--font-sans)", fontWeight: 500,
              fontSize: 48, lineHeight: 1.05,
              letterSpacing: "-0.026em", margin: 0,
            }}>
              Matter review runs<br />
              <span style={{ fontFamily: "var(--font-serif)", fontStyle: "italic", fontWeight: 400, color: "var(--navy)" }}>locally.</span>
            </h2>
          </div>
          <div style={{ paddingBottom: 8 }}>
            <p style={{ fontSize: 17, lineHeight: 1.55, color: "var(--ink-2)", margin: 0, maxWidth: 480 }}>
              Docket LM is a desktop app for source-grounded matter review.
              Four pieces work together to prepare the first read, answer
              follow-up questions, and keep source review grounded.
            </p>
          </div>
        </div>

        {/* The computer frame - local matter-data boundary with four pieces inside */}
        <div className="lb-arch-frame" style={{
          position: "relative",
          background: "var(--surface)",
          border: "1.5px solid var(--rule-strong)",
          borderRadius: 18,
          padding: "44px",
        }}>
          {/* Frame label — sits half-on-the-line, top-left */}
          <div style={{
            position: "absolute", top: -12, left: 32,
            padding: "4px 12px",
            background: "var(--paper)",
            border: "1px solid var(--rule-strong)",
            borderRadius: 999,
            fontSize: 11, fontWeight: 500, color: "var(--ink-2)",
            letterSpacing: 0.06, textTransform: "uppercase",
            display: "inline-flex", alignItems: "center", gap: 8,
          }}>
            <span style={{ width: 6, height: 6, borderRadius: "50%", background: "var(--sage)" }}></span>
            Your computer
          </div>

          {/* Frame label — top-right, the boundary line */}
          <div style={{
            position: "absolute", top: -12, right: 32,
            padding: "4px 12px",
            background: "var(--paper)",
            border: "1px solid var(--brick-soft-2)",
            borderRadius: 999,
            fontSize: 11, fontWeight: 500, color: "var(--brick)",
            letterSpacing: 0.06, textTransform: "uppercase",
            display: "inline-flex", alignItems: "center", gap: 8,
            whiteSpace: "nowrap",
          }}>
            No client matter data leaves your computer
          </div>

          {/* Four-piece grid */}
          <div className="lb-arch-grid" style={{
            display: "grid",
            gridTemplateColumns: "1fr 1fr",
            gap: 24,
          }}>
            {pieces.map((p, i) => (
              <div key={i} style={{
                background: "var(--surface-2)",
                border: "1px solid var(--rule)",
                borderRadius: 12,
                padding: "24px 26px",
                display: "flex", flexDirection: "column", gap: 16,
              }}>
                <div className="row between" style={{ alignItems: "flex-start" }}>
                  <div>
                    <div className="row gap-2 center" style={{ marginBottom: 8 }}>
                      <span className="mono" style={{ fontSize: 11, color: "var(--ink-4)" }}>{p.n}</span>
                      <span className="micro" style={{ color: "var(--ink-3)" }}>{p.kicker}</span>
                    </div>
                    <h3 style={{
                      fontFamily: "var(--font-sans)", fontWeight: 500,
                      fontSize: 22, lineHeight: 1.2,
                      letterSpacing: "-0.014em", margin: 0,
                    }}>
                      {p.title}
                    </h3>
                  </div>
                </div>
                <p style={{ fontSize: 14.5, lineHeight: 1.6, color: "var(--ink-2)", margin: 0 }}>
                  {p.body}
                </p>
                <div style={{ marginTop: "auto" }}>
                  {p.visual}
                </div>
              </div>
            ))}
          </div>
        </div>

        {/* Plain-English footnote */}
        <div className="lb-arch-foot" style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 56, marginTop: 36 }}>
          <p style={{ fontFamily: "var(--font-serif)", fontStyle: "italic", fontSize: 15.5, lineHeight: 1.55, color: "var(--ink-3)", margin: 0 }}>
            What that means: ingestion, OCR, transcription, embeddings, search,
            and cited answers run on your own computer against the material you
            attach.
          </p>
          <p style={{ fontFamily: "var(--font-serif)", fontStyle: "italic", fontSize: 15.5, lineHeight: 1.55, color: "var(--ink-3)", margin: 0 }}>
            Installation, app updates, and local model setup do not require
            uploading matter material. The documents, emails, notes, and media
            you add stay inside the boundary you control.
          </p>
        </div>
      </div>
    </section>
  );
}

// ─────────────────────────────────────────────────────────────────────────
// Variation B — A touch bolder, mock-UI led
// ─────────────────────────────────────────────────────────────────────────
function LandingB() {
  return (
    <div className="landing-b" style={{
      background: "var(--paper)",
      minHeight: 2400,
      fontFamily: "var(--font-sans)",
      color: "var(--ink)",
    }}>
      {/* Top bar */}
      <header className="lb-header" style={{
        borderBottom: "1px solid var(--rule)",
        background: "rgba(246, 244, 239, 0.92)",
      }}>
        <div className="row between center lb-header-inner" style={{ maxWidth: 1200, margin: "0 auto", padding: "16px 48px" }}>
          <Wordmark size={26} />
          <ComingSoonChip />
        </div>
      </header>

      {/* Hero — asymmetric: copy left, mock right */}
      <section className="lb-hero" style={{
        padding: "72px 48px 80px",
        background: "linear-gradient(180deg, var(--paper) 0%, var(--paper-2) 100%)",
        borderBottom: "1px solid var(--rule)",
      }}>
        <div className="lb-hero-grid" style={{
          maxWidth: 1200, margin: "0 auto",
          display: "grid",
          gridTemplateColumns: "1.05fr 0.95fr",
          gap: 64, alignItems: "center",
        }}>
          <div>
            <div className="micro" style={{ color: "var(--ink-3)", marginBottom: 28, letterSpacing: 0.04 }}>
              Local matter review - citations first
            </div>
            <h1 className="lb-hero-h1" style={{
              fontFamily: "var(--font-sans)",
              fontWeight: 500,
              fontSize: 68,
              lineHeight: 1.02,
              letterSpacing: "-0.03em",
              margin: 0,
              color: "var(--ink)",
            }}>
              Prepare a cited<br />
              <span style={{
                background: "linear-gradient(0deg, var(--sage-soft) 0%, var(--sage-soft) 38%, transparent 38%, transparent 100%)",
                padding: "0 6px",
                color: "var(--sage)",
                fontStyle: "italic",
                fontFamily: "var(--font-serif)",
                fontWeight: 400,
              }}>first read</span><br />
              of a matter, on your own computer.
            </h1>
            <p style={{
              fontSize: 19,
              lineHeight: 1.55,
              color: "var(--ink-2)",
              marginTop: 28,
              marginBottom: 0,
              maxWidth: 520,
              letterSpacing: "-0.005em",
            }}>
              Add folders, mail exports, Messages exports, photos, audio, and
              notes. Docket LM prepares a cited first-read brief, then lets you
              ask follow-up questions against the same sources. Client matter
              data stays on your computer instead of being uploaded to a cloud
              service.
            </p>

            <div style={{ marginTop: 40 }}>
              <EmailSignup tone="bold" />
              <div className="small mt-3" style={{ color: "var(--ink-3)", fontSize: 12.5 }}>
                Join the Mac launch list. One email when Docket LM is ready to install. No drip campaign.
              </div>
            </div>
          </div>

          {/* Right column: stacked mock UI elements */}
          <div className="lb-hero-mock" style={{ position: "relative", height: 540 }}>
            {/* Background paper card to anchor the composition */}
            <div style={{
              position: "absolute", inset: 0,
              background: "var(--surface)",
              border: "1px solid var(--rule)",
              borderRadius: 16,
              boxShadow: "var(--shadow-2)",
              padding: "20px 24px",
              overflow: "hidden",
            }}>
              {/* Fake brief header */}
              <div className="row between center" style={{ marginBottom: 14 }}>
                <div>
                  <div className="micro" style={{ marginBottom: 4 }}>Matter</div>
                  <div style={{ fontFamily: "var(--font-serif)", fontSize: 18, fontWeight: 500 }}>
                    Sherron Watkins v. Lay
                  </div>
                </div>
                <span className="chip chip-sage" style={{ fontSize: 10.5 }}>
                  <span className="dot"></span>Source-backed
                </span>
              </div>
              <div className="row gap-3" style={{ fontSize: 11.5, color: "var(--ink-3)" }}>
                <span className="mono">412 documents</span>
                <span>·</span>
                <span className="mono">2001-01 → 2001-12</span>
              </div>

              <div style={{ height: 1, background: "var(--rule)", margin: "16px 0" }}></div>

              <div style={{ marginBottom: 12 }}>
                <div className="row between center mb-2">
                  <span style={{ fontFamily: "var(--font-sans)", fontWeight: 500, fontSize: 13 }}>
                    <span className="mono" style={{ fontSize: 10, color: "var(--ink-4)", marginRight: 6 }}>04</span>
                    Document conflicts
                  </span>
                </div>
                <p className="prose" style={{ margin: 0, fontSize: 13.5, color: "var(--ink)" }}>
                  Lay was informed of the accounting concerns at least two
                  months before the analyst call
                  <span style={{ display: "inline-flex", gap: 2, marginLeft: 2 }}>
                    <span className="fn">8</span>
                    <span className="fn fn-active">14</span>
                  </span>.
                </p>
              </div>
            </div>

            {/* Floating: contradiction card */}
            <div style={{
              position: "absolute",
              right: -20, top: 200,
              width: 320,
              transform: "rotate(1.5deg)",
            }}>
              <ContradictionMini />
            </div>

            {/* Floating: source card */}
            <div style={{
              position: "absolute",
              left: -28, bottom: 32,
              width: 260,
              background: "var(--surface)",
              border: "1px solid var(--rule-strong)",
              borderRadius: 8,
              padding: "12px 14px",
              boxShadow: "var(--shadow-2)",
              transform: "rotate(-1.5deg)",
            }}>
              <div className="row gap-2 center mb-2">
                <span className="chip chip-navy" style={{ fontSize: 10.5 }}><span className="mono">[14]</span></span>
                <span className="micro" style={{ fontSize: 10 }}>Source · auto-opened</span>
              </div>
              <div style={{ fontFamily: "var(--font-sans)", fontWeight: 500, fontSize: 12.5, lineHeight: 1.35 }}>
                Memorandum from S. Watkins to K. Lay
              </div>
              <div className="mono" style={{ fontSize: 10.5, color: "var(--ink-3)", marginTop: 2 }}>
                2001-08-22 · p.3
              </div>
            </div>
          </div>
        </div>
      </section>

      <MatterReviewSection />
      <MaterialSection />

      {/* Principles — bolder grid with mock UI in each */}
      <section className="lb-principles" style={{ padding: "100px 48px 80px" }}>
        <div style={{ maxWidth: 1200, margin: "0 auto" }}>
          <div className="lb-principles-head" style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 56, marginBottom: 80 }}>
            <div>
              <div className="micro" style={{ color: "var(--navy)" }}>Citations are the interface</div>
              <h2 className="lb-principles-h2" style={{
                fontFamily: "var(--font-sans)",
                fontWeight: 500,
                fontSize: 44,
                lineHeight: 1.08,
                letterSpacing: "-0.024em",
                margin: "16px 0 0",
              }}>
                Every answer links back to source spans.
              </h2>
            </div>
            <div style={{ paddingTop: 12 }}>
              <p style={{ fontSize: 17, lineHeight: 1.55, color: "var(--ink-2)", margin: 0 }}>
                Docket LM is built for the factual first pass: find the source,
                inspect the support, and keep the lawyer in charge of
                conclusions. Four things define it.
              </p>
            </div>
          </div>

          <div className="lb-principles-grid" style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 24, alignItems: "stretch" }}>
            {/* Principle 1 — Matter data local — featured wide */}
            <div className="lb-principle-wide" style={{
              gridColumn: "1 / span 2",
              display: "grid",
              gridTemplateColumns: "1fr 1fr",
              gap: 48, alignItems: "center",
              padding: "44px 48px",
              background: "var(--surface)",
              border: "1px solid var(--rule)",
              borderRadius: 14,
            }}>
              <div>
                <div className="row gap-2 center mb-3">
                  <span style={{
                    width: 22, height: 22, borderRadius: 4,
                    background: "var(--sage)", color: "#fff",
                    display: "grid", placeItems: "center",
                    fontSize: 12, fontWeight: 500,
                  }}>01</span>
                  <span className="micro" style={{ color: "var(--sage)" }}>Matter data stays local</span>
                </div>
                <h3 style={{
                  fontFamily: "var(--font-sans)", fontWeight: 500,
                  fontSize: 28, lineHeight: 1.18,
                  letterSpacing: "-0.018em", margin: "0 0 12px",
                }}>
                  Client matter data never leaves your computer.
                </h3>
                <p style={{ fontSize: 15.5, lineHeight: 1.6, color: "var(--ink-2)", margin: 0 }}>
                  Matter review runs on your computer. Installation, updates,
                  and local model setup do not require uploading the documents,
                  emails, notes, or media you add.
                </p>
              </div>
              <div>
                <LocalOnlyDiagram />
              </div>
            </div>

            {/* Principle 2 — Citation-first */}
            <div className="lb-principle" style={{
              padding: "32px 36px",
              background: "var(--surface)",
              border: "1px solid var(--rule)",
              borderRadius: 14,
            }}>
              <div className="row gap-2 center mb-3">
                <span style={{
                  width: 22, height: 22, borderRadius: 4,
                  background: "var(--navy)", color: "#fff",
                  display: "grid", placeItems: "center",
                  fontSize: 12, fontWeight: 500,
                }}>02</span>
                <span className="micro" style={{ color: "var(--navy)" }}>Cited</span>
              </div>
              <h3 style={{
                fontFamily: "var(--font-sans)", fontWeight: 500,
                fontSize: 24, lineHeight: 1.2,
                letterSpacing: "-0.014em", margin: "0 0 12px",
              }}>
                Every fact, anchored to a page.
              </h3>
              <p style={{ fontSize: 14.5, lineHeight: 1.6, color: "var(--ink-2)", margin: "0 0 20px" }}>
                Footnote chips next to every claim. Click one, the source
                paragraph slides in highlighted. <span className="mono" style={{ fontSize: 12 }}>j</span> / <span className="mono" style={{ fontSize: 12 }}>k</span> walks through them.
              </p>
              <div style={{
                background: "var(--surface-2)",
                border: "1px solid var(--rule)",
                borderRadius: 8,
                padding: "14px 16px",
              }}>
                <p className="prose" style={{ margin: 0, fontSize: 13.5 }}>
                  Watkins memo of August 22 reached Lay same day
                  <span style={{ display: "inline-flex", gap: 2, marginLeft: 2 }}>
                    <span className="fn">8</span>
                    <span className="fn fn-active">14</span>
                  </span>.
                </p>
              </div>
            </div>

            {/* Principle 3 — Document conflicts */}
            <div className="lb-principle" style={{
              padding: "32px 36px",
              background: "var(--surface)",
              border: "1px solid var(--rule)",
              borderRadius: 14,
            }}>
              <div className="row gap-2 center mb-3">
                <span style={{
                  width: 22, height: 22, borderRadius: 4,
                  background: "var(--brick)", color: "#fff",
                  display: "grid", placeItems: "center",
                  fontSize: 12, fontWeight: 500,
                }}>03</span>
                  <span className="micro" style={{ color: "var(--brick)" }}>Source review</span>
              </div>
              <h3 style={{
                fontFamily: "var(--font-sans)", fontWeight: 500,
                fontSize: 24, lineHeight: 1.2,
                letterSpacing: "-0.014em", margin: "0 0 12px",
              }}>
                Document conflicts become reviewable.
              </h3>
              <p style={{ fontSize: 14.5, lineHeight: 1.6, color: "var(--ink-2)", margin: "0 0 20px" }}>
                When two documents disagree, the brief shows them side by
                side with dates and attributions intact. The point is not to
                decide who is right; it is to make the conflict reviewable.
              </p>
              <ContradictionMini />
            </div>

            {/* Principle 4 — Bounded: redacted handoff + no drafting */}
            <div className="lb-principle-wide" style={{
              gridColumn: "1 / span 2",
              display: "grid",
              gridTemplateColumns: "1fr 1fr",
              gap: 48, alignItems: "center",
              padding: "44px 48px",
              background: "var(--paper-2)",
              border: "1px solid var(--rule)",
              borderRadius: 14,
            }}>
              <div>
                <div className="row gap-2 center mb-3">
                  <span style={{
                    width: 22, height: 22, borderRadius: 4,
                    background: "var(--amber)", color: "#fff",
                    display: "grid", placeItems: "center",
                    fontSize: 12, fontWeight: 500,
                  }}>04</span>
                  <span className="micro" style={{ color: "var(--amber)" }}>Bounded</span>
                </div>
                <h3 style={{
                  fontFamily: "var(--font-sans)", fontWeight: 500,
                  fontSize: 28, lineHeight: 1.18,
                  letterSpacing: "-0.018em", margin: "0 0 12px",
                }}>
                  Prepare a <span style={{ fontFamily: "var(--font-serif)", fontStyle: "italic", fontWeight: 400, color: "var(--amber)" }}>redacted</span> draft for outside research.
                </h3>
                <p style={{ fontSize: 15.5, lineHeight: 1.6, color: "var(--ink-2)", margin: "0 0 14px" }}>
                  Docket LM can help create a redacted handoff from
                  source-backed findings. Redaction reduces risk, but attorney
                  review and client-consent judgment remain yours.
                </p>
                <p style={{ fontSize: 14, lineHeight: 1.55, color: "var(--ink-3)", margin: 0, paddingTop: 14, borderTop: "1px solid var(--rule)" }}>
                  <span className="chip chip-amber" style={{ fontSize: 11.5, marginRight: 8, verticalAlign: "1px" }}>
                    Needs attorney review
                  </span>
                  {" "}
                  Docket LM does not draft lawyer-ready filings. It prepares
                  source review material for you to evaluate.
                </p>
              </div>
              <div>
                <RedactedHandoffMini />
              </div>
            </div>
          </div>
        </div>
      </section>

      <SourceAuditSection />
      <LocalProcessingSection />

      {/* How Docket LM actually works — plain-language architecture */}
      <ArchitectureSection />

      {/* What Docket LM is / is not */}
      <section className="lb-isnt" style={{
        padding: "80px 48px",
        borderTop: "1px solid var(--rule)",
        background: "var(--surface-2)",
      }}>
        <div style={{ maxWidth: 1080, margin: "0 auto" }}>
          <div className="lb-isnt-head" style={{ maxWidth: 760, marginBottom: 36 }}>
            <div className="micro" style={{ color: "var(--navy)", marginBottom: 14 }}>
              Source-Grounded Review
            </div>
            <h2 className="lb-isnt-h2" style={{
              fontFamily: "var(--font-sans)",
              fontWeight: 500,
              fontSize: 38,
              lineHeight: 1.1,
              letterSpacing: "-0.02em",
              margin: 0,
              color: "var(--ink)",
            }}>
              Built for the first pass through the record.
            </h2>
            <p style={{ fontSize: 16.5, lineHeight: 1.55, color: "var(--ink-2)", margin: "16px 0 0", maxWidth: 680 }}>
              Use it to get oriented, verify facts, and review source support
              before you draft or argue from the record.
            </p>
          </div>
          <div className="lb-isnt-grid" style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 56 }}>
            <div>
              <div className="row gap-2 center" style={{ marginBottom: 16, color: "var(--sage)" }}>
                <span style={{ width: 6, height: 6, borderRadius: "50%", background: "var(--sage)" }}></span>
                <span className="micro" style={{ color: "var(--sage)" }}>Docket LM is</span>
              </div>
              <ul style={{ listStyle: "none", padding: 0, margin: 0 }}>
                {[
                  "A local matter-review workbench",
                  "A cited first-read brief builder",
                  "A source-backed matter search tool",
                  "A review checklist for unsupported assertions, citation issues, and conflicts",
                ].map((s, i) => (
                  <li key={i} style={{
                    padding: "14px 0",
                    borderTop: i === 0 ? "1px solid var(--rule)" : "none",
                    borderBottom: "1px solid var(--rule)",
                    fontFamily: "var(--font-serif)",
                    fontSize: 17, color: "var(--ink)",
                  }}>{s}</li>
                ))}
              </ul>
            </div>
            <div>
              <div className="row gap-2 center" style={{ marginBottom: 16, color: "var(--brick)" }}>
                <span style={{ width: 6, height: 6, borderRadius: "50%", background: "var(--brick)" }}></span>
                <span className="micro" style={{ color: "var(--brick)" }}>Docket LM is not</span>
              </div>
              <ul style={{ listStyle: "none", padding: 0, margin: 0 }}>
                {[
                  "An AI lawyer",
                  "A cloud workspace for client files",
                  "A legal research database",
                  "A substitute for attorney judgment",
                ].map((s, i) => (
                  <li key={i} style={{
                    padding: "14px 0",
                    borderTop: i === 0 ? "1px solid var(--rule)" : "none",
                    borderBottom: "1px solid var(--rule)",
                    fontFamily: "var(--font-serif)",
                    fontSize: 17, color: "var(--ink-3)",
                    textDecoration: "line-through",
                    textDecorationColor: "var(--ink-5)",
                  }}>{s}</li>
                ))}
              </ul>
            </div>
          </div>
        </div>
      </section>

      {/* Closing signup */}
      <section className="lb-cta" style={{ padding: "80px 48px" }}>
        <div className="lb-cta-card" style={{
          maxWidth: 880, margin: "0 auto",
          background: "var(--ink)",
          color: "var(--paper)",
          borderRadius: 16,
          padding: "60px 64px",
          position: "relative",
          overflow: "hidden",
        }}>
          <div style={{ position: "relative" }}>
            <div className="row gap-2 center" style={{ marginBottom: 20 }}>
              <span style={{ width: 6, height: 6, borderRadius: "50%", background: "#7fb88c" }}></span>
              <span className="micro" style={{ color: "#bdb9af", letterSpacing: 0.05 }}>Coming soon</span>
            </div>
            <h2 className="lb-cta-h2" style={{
              fontFamily: "var(--font-sans)",
              fontWeight: 500,
              fontSize: 40,
              lineHeight: 1.1,
              letterSpacing: "-0.022em",
              margin: 0,
              maxWidth: 580,
              color: "var(--paper)",
            }}>
              Join the Mac launch list.
            </h2>
            <p style={{ fontSize: 16.5, lineHeight: 1.55, color: "#bdb9af", marginTop: 16, maxWidth: 480 }}>
              One email when Docket LM is ready to install. No drip campaign.
              Local cited matter review for lawyers.
            </p>
            <div style={{ marginTop: 32 }}>
              <EmailSignup tone="bold" />
            </div>
          </div>
        </div>
      </section>

      <div className="lb-footer-wrap" style={{ maxWidth: 1200, margin: "0 auto", padding: "0 48px" }}>
        <SiteFooter />
      </div>
    </div>
  );
}

// ─────────────────────────────────────────────────────────────────────────
// Mount
// ─────────────────────────────────────────────────────────────────────────
function App() {
  return <LandingB />;
}

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<App />);
