// Proprietor's — POS landing page
// Single React component file. Renders into #app.

const { useState, useEffect } = React;

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "heroLayout": "split",
  "palette": "forest",
  "theme": "light"
} /*EDITMODE-END*/;

// ─── Icons (24×24, stroke-based) ─────────────────────────────
const Ico = {
  Check: ({ size = 18 }) =>
  <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round"><polyline points="4 12 10 18 20 6" /></svg>,

  Arrow: ({ size = 14 }) =>
  <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round"><line x1="5" y1="12" x2="19" y2="12" /><polyline points="13 6 19 12 13 18" /></svg>,

  Sparkle: () =>
  <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round"><path d="M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8" /></svg>,

  Ticket: () =>
  <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round"><path d="M3 8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v2a2 2 0 0 0 0 4v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2a2 2 0 0 0 0-4z" /><path d="M9 6v12" strokeDasharray="2 2" /></svg>,

  Stock: () =>
  <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round"><rect x="3" y="3" width="18" height="18" rx="1" /><path d="M3 9h18M9 3v18" /></svg>,

  Coin: () =>
  <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round"><circle cx="12" cy="12" r="9" /><path d="M12 7v10M9 9h4.5a2 2 0 0 1 0 4H9h5a2 2 0 0 1 0 4H9" /></svg>,

  Tag: () =>
  <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round"><path d="M3 12V4a1 1 0 0 1 1-1h8l9 9-9 9z" /><circle cx="8.5" cy="8.5" r="1.5" /></svg>,

  Layers: () =>
  <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round"><path d="M12 3 2 8l10 5 10-5z" /><path d="M2 13l10 5 10-5" /><path d="M2 18l10 5 10-5" /></svg>,

  Truck: () =>
  <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round"><rect x="2" y="6" width="13" height="10" rx="1" /><path d="M15 9h4l3 3v4h-7z" /><circle cx="6.5" cy="17.5" r="1.8" /><circle cx="17.5" cy="17.5" r="1.8" /></svg>

};

// ─── Key mark (real artwork) ──────────────────────────────────
function KeyMark({ height = 32, variant = "full" }) {
  const src = variant === "short" ? "assets/key-short.png" : "assets/key.png";
  return (
    <img
      src={src}
      alt="Proprietor's"
      style={{ height, width: "auto", display: "block" }} />);


}

// ─── Brand lockup for nav ────────────────────────────────────
function Brand() {
  return (
    <a href="#top" className="brand">
      <span className="brand-mark"><KeyMark height={32} variant="short" /></span>
      <span className="brand-name">Proprietor's<sup style={{ fontSize: "9px" }}>Suite</sup></span>
    </a>);

}

// ─── Hero visual: a small POS terminal mock ──────────────────
function HeroTerminal() {
  return (
    <div className="hero-visual">
      <div className="terminal">
        <div className="terminal-frame">
          <div className="terminal-screen">
            <img
              src="assets/pos-screen.png"
              alt="Proprietor's POS — order screen"
              className="terminal-img" />
            
          </div>
        </div>
        <div className="terminal-stand" />
        <div className="terminal-base" />
      </div>
    </div>);

}

// ─── POS UI mock — drawn in HTML/CSS ─────────────────────────
function PosUI({ compact = false }) {
  const items = [
  { name: "Old Fashioned", price: 14, cat: "Cocktails" },
  { name: "Vieux Carré", price: 15, cat: "Cocktails" },
  { name: "Negroni Sbagliato", price: 13, cat: "Cocktails" },
  { name: "Espresso Martini", price: 14, cat: "Cocktails" },
  { name: "Sazerac", price: 16, cat: "Cocktails" },
  { name: "Paper Plane", price: 14, cat: "Cocktails" },
  { name: "Gibson", price: 13, cat: "Cocktails" },
  { name: "Last Word", price: 14, cat: "Cocktails" }];

  const cart = [
  { name: "Old Fashioned", qty: 2, price: 28 },
  { name: "Negroni", qty: 1, price: 13 },
  { name: "House Burger", qty: 1, price: 19, mod: "+ bacon, no onion" },
  { name: "Frites", qty: 2, price: 14 }];

  return (
    <div className={"pos-ui " + (compact ? "is-compact" : "")}>
      <div className="pos-side">
        <div className="pos-side-title">Sections</div>
        <ul className="pos-sections">
          {["Bar 01", "Bar 02", "Patio", "Lounge", "Service Well"].map((s, i) =>
          <li key={s} className={i === 0 ? "is-active" : ""}>
              <span className="dot" />{s}
            </li>
          )}
        </ul>
        <div className="pos-side-title" style={{ marginTop: 24 }}>Tabs open</div>
        <div className="tab-count">12</div>
      </div>

      <div className="pos-main">
        <div className="pos-tabs">
          <span className="tab is-active">Cocktails</span>
          <span className="tab">Wine</span>
          <span className="tab">Beer</span>
          <span className="tab">Food</span>
          <span className="tab">Mods</span>
        </div>
        <div className="pos-items">
          {items.map((i) =>
          <div className="pos-item" key={i.name}>
              <div className="pos-item-name">{i.name}</div>
              <div className="pos-item-price">${i.price}</div>
            </div>
          )}
        </div>
      </div>

      <div className="pos-check">
        <div className="check-head">
          <div>
            <div className="check-name">Table 14 · Marlowe</div>
            <div className="check-sub">2 guests · opened 7:42</div>
          </div>
          <div className="check-id">#0428</div>
        </div>
        <ul className="check-list">
          {cart.map((c) =>
          <li key={c.name}>
              <div className="cl-row">
                <span className="cl-qty">{c.qty}</span>
                <span className="cl-name">{c.name}</span>
                <span className="cl-price">${c.price}.00</span>
              </div>
              {c.mod && <div className="cl-mod">{c.mod}</div>}
            </li>
          )}
        </ul>
        <div className="check-total">
          <div className="ct-row"><span>Subtotal</span><span>$74.00</span></div>
          <div className="ct-row"><span>Tax</span><span>$6.66</span></div>
          <div className="ct-row ct-total"><span>Total</span><span>$80.66</span></div>
        </div>
        <button className="check-send">Send to bar →</button>
      </div>
    </div>);

}

// ─── Hardware renders ────────────────────────────────────────
function HwCounterTop() {
  return (
    <svg viewBox="0 0 220 200" width="220" height="200" fill="none" aria-hidden="true">
      {/* base */}
      <ellipse cx="110" cy="186" rx="68" ry="6" fill="var(--c-brass)" opacity=".18" />
      <path d="M70 178h80l-6-22H76z" fill="var(--c-ink)" opacity=".85" />
      <rect x="74" y="156" width="72" height="4" fill="var(--c-brass)" opacity=".5" />
      {/* stand */}
      <path d="M104 156v-22h12v22z" fill="var(--c-ink)" />
      {/* tablet */}
      <rect x="34" y="22" width="152" height="116" rx="8" fill="var(--c-ink)" />
      <rect x="40" y="28" width="140" height="104" rx="3" fill="var(--c-bg)" />
      {/* screen contents */}
      <rect x="46" y="34" width="44" height="6" rx="1.5" fill="var(--c-brass)" opacity=".5" />
      <rect x="46" y="46" width="60" height="3" rx="1" fill="var(--c-ink)" opacity=".3" />
      <g transform="translate(46,56)">
        {[0, 1, 2, 3].map((r) => [0, 1, 2].map((c) =>
        <rect key={`${r}-${c}`} x={c * 32} y={r * 16} width="28" height="12" rx="1.5" fill="var(--c-ink)" opacity={(r + c) % 2 ? .12 : .22} />
        ))}
      </g>
      <rect x="148" y="56" width="28" height="60" rx="2" fill="var(--c-brass)" opacity=".15" />
      <rect x="151" y="60" width="22" height="2" rx="1" fill="var(--c-brass)" />
      <rect x="151" y="66" width="18" height="2" rx="1" fill="var(--c-brass)" opacity=".5" />
    </svg>);

}
function HwReader() {
  return (
    <svg viewBox="0 0 220 200" width="220" height="200" fill="none" aria-hidden="true">
      <ellipse cx="110" cy="186" rx="58" ry="5" fill="var(--c-brass)" opacity=".18" />
      {/* reader body */}
      <rect x="64" y="44" width="92" height="138" rx="14" fill="var(--c-ink)" />
      <rect x="70" y="50" width="80" height="78" rx="6" fill="var(--c-bg)" />
      {/* amount */}
      <text x="110" y="84" textAnchor="middle" fontFamily="var(--f-serif)" fontSize="22" fill="var(--c-ink)" fontWeight="500">$24.50</text>
      <text x="110" y="100" textAnchor="middle" fontFamily="var(--f-mono)" fontSize="7" letterSpacing="2" fill="var(--c-brass-2)">TAP · INSERT · SWIPE</text>
      {/* contactless symbol */}
      <g transform="translate(96,108)" stroke="var(--c-brass)" strokeWidth="1.4" fill="none" strokeLinecap="round">
        <path d="M0 14a14 14 0 0 1 28 0" />
        <path d="M4 10a10 10 0 0 1 20 0" opacity=".7" />
        <path d="M8 6a6 6 0 0 1 12 0" opacity=".5" />
      </g>
      {/* keypad */}
      <g transform="translate(74,138)">
        {[0, 1, 2].map((r) => [0, 1, 2].map((c) =>
        <circle key={`${r}-${c}`} cx={c * 32 + 10} cy={r * 12 + 4} r="3.5" fill="var(--c-bg)" opacity=".18" />
        ))}
      </g>
    </svg>);

}
function HwPrinter() {
  return (
    <svg viewBox="0 0 220 200" width="220" height="200" fill="none" aria-hidden="true">
      <ellipse cx="110" cy="186" rx="62" ry="5" fill="var(--c-brass)" opacity=".18" />
      {/* receipt */}
      <path d="M84 24h52v100l-6 6 6 6-6 6 6 6-6 6 6 6-6 6H84l-6-6 6-6-6-6 6-6-6-6 6-6-6-6 6-6z" fill="var(--c-bg)" stroke="var(--c-brass)" strokeWidth="1" opacity=".96" />
      {[36, 46, 56, 66, 76, 90, 100].map((y, i) =>
      <rect key={y} x="90" y={y} width={i % 2 ? 28 : 38} height="2" rx="1" fill="var(--c-ink)" opacity=".5" />
      )}
      <rect x="90" y="110" width="40" height="3" rx="1" fill="var(--c-brass)" />
      {/* printer body */}
      <rect x="58" y="124" width="104" height="56" rx="8" fill="var(--c-ink)" />
      <rect x="64" y="132" width="92" height="4" fill="var(--c-bg)" opacity=".15" />
      <circle cx="148" cy="166" r="3" fill="var(--c-brass)" />
    </svg>);

}

function HwRegister() {
  return (
    <svg viewBox="0 0 220 200" width="220" height="200" fill="none" aria-hidden="true">
      <ellipse cx="110" cy="190" rx="78" ry="6" fill="var(--c-brass)" opacity=".18" />
      {/* drawer (bottom) */}
      <rect x="34" y="128" width="152" height="56" rx="6" fill="var(--c-ink)" />
      <rect x="34" y="128" width="152" height="4" fill="var(--c-brass)" opacity=".5" />
      <g stroke="var(--c-brass)" strokeWidth="1" opacity=".55">
        <line x1="56" y1="152" x2="86" y2="152" />
        <line x1="96" y1="152" x2="126" y2="152" />
        <line x1="136" y1="152" x2="166" y2="152" />
      </g>
      <rect x="100" y="164" width="20" height="3" rx="1.5" fill="var(--c-brass)" />
      {/* body w/ screen above drawer */}
      <rect x="52" y="40" width="116" height="88" rx="6" fill="var(--c-ink)" />
      <rect x="60" y="48" width="100" height="34" rx="3" fill="var(--c-bg)" />
      <text x="110" y="71" textAnchor="middle" fontFamily="var(--f-serif)" fontSize="18" fontWeight="500" fill="var(--c-ink)">$80.66</text>
      <text x="110" y="81" textAnchor="middle" fontFamily="var(--f-mono)" fontSize="5" letterSpacing="1.5" fill="var(--c-brass-2)">TABLE 14 · OPEN</text>
      <g transform="translate(60,90)">
        {[0, 1, 2].map((r) => [0, 1, 2, 3, 4].map((c) =>
        <rect key={`${r}-${c}`} x={c * 20} y={r * 10} width="16" height="7" rx="1.5" fill="var(--c-bg)" opacity={(r + c) % 2 ? .22 : .35} />
        ))}
      </g>
      <rect x="148" y="110" width="16" height="14" rx="2" fill="var(--c-brass)" />
    </svg>);

}

// ─── Tweaks panel ────────────────────────────────────────────
function Tweaks({ t, setTweak }) {
  return (
    <TweaksPanel title="Tweaks">
      <TweakSection label="Layout" />
      <TweakRadio
        label="Hero layout"
        value={t.heroLayout}
        options={["centered", "split", "full-bleed"]}
        onChange={(v) => setTweak("heroLayout", v)} />
      
      <TweakSection label="Color" />
      <TweakColor
        label="Palette"
        value={t.palette}
        options={[
        { value: "forest", colors: ["#143524", "#B8893D", "#F4EDDC"] },
        { value: "midnight", colors: ["#0F1B2D", "#C29959", "#F1EAD5"] },
        { value: "cellar", colors: ["#3A1A1A", "#A87437", "#F4EBD9"] }]
        }
        onChange={(v) => setTweak("palette", typeof v === "string" ? v : v.value)} />
      
      <TweakRadio
        label="Theme"
        value={t.theme}
        options={["light", "dark"]}
        onChange={(v) => setTweak("theme", v)} />
      
    </TweaksPanel>);

}

// ─── Page sections ───────────────────────────────────────────
function Nav() {
  return (
    <header className="nav">
      <div className="wrap nav-inner">
        <Brand />
        <nav className="nav-links">
          <a href="#product">Product</a>
          <a href="#hardware">Hardware</a>
          <a href="#pricing">Pricing</a>
          <a href="#story">Story</a>
        </nav>
        <div className="nav-cta">
          <a href="#" className="sign-in"></a>
          <a href="book-a-demo.html" className="btn btn-primary">
            Book a demo <span className="arrow"><Ico.Arrow /></span>
          </a>
        </div>
      </div>
    </header>);

}

function Hero({ layout }) {
  const cls = "hero hero-" + layout;
  return (
    <section className={cls} id="top" data-screen-label="Hero">
      <div className="wrap">
        <div className="hero-inner">
          <div className="hero-copy">
            <div className="hero-eyebrow">
              <span className="hairline" />
              <span className="eyebrow">Built for independent operators</span>
              <span className="hairline" />
            </div>
            <h1 className="display">
              The point of sale<br />
              that <em>respects</em> the<br />
              house you built.
            </h1>
            <p className="lede" style={layout === "centered" ? { margin: "32px auto 0" } : { marginTop: 32 }}>
              Proprietor's is a POS for bars, restaurants, and pop-ups
              that prizes craft over scale — fast at the rail, gentle on
              your margin, and yours, not your processor's.
            </p>
            <div className="hero-ctas">
              <a href="book-a-demo.html" className="btn btn-primary">
                Book a demo <span className="arrow"><Ico.Arrow /></span>
              </a>
              <a href="#pricing" className="btn btn-ghost">See pricing</a>
            </div>
            <div className="hero-meta">
              <span><i className="dot" />No long-term contract</span>
              <span><i className="dot" />Yours to Own</span>
              <span><i className="dot" />Built with You, For You.</span>
            </div>
          </div>
          <HeroTerminal />
        </div>
      </div>
    </section>);

}

function Trust() {
  return (
    <section className="trust">
      <div className="wrap trust-inner">
        <div className="trust-label"></div>
        <div className="trust-logos">
          {["The Lambswool", "Marlowe & Sons", "Pétanque", "Spoke 12", "Demerara Co.", "Hour & Gate"].map((n) =>
          <span key={n} className="logo-name">{n}</span>
          )}
        </div>
      </div>
    </section>);

}

function Features() {
  const feats = [
  { n: "01", icon: <Ico.Ticket />, t: "Tabs, splits & quick sales", b: "Create named tabs assigned to staff, split the bill evenly or by item, transfer tabs between employees, or ring a quick sale with no tab required." },
  { n: "02", icon: <Ico.Coin />, t: "Cash, card & tap-to-pay", b: "Cash, card, and tap-to-pay support, with tip presets and custom amounts, void transactions, and a receipt at the end." },
  { n: "03", icon: <Ico.Tag />, t: "Happy hour & daily specials", b: "Happy hour rules with discount %, days, and times, plus daily specials on scheduled time windows with a live or upcoming badge." },
  { n: "04", icon: <Ico.Layers />, t: "Works offline, synced everywhere", b: "Offline mode keeps all core POS functions working without internet, then syncs automatically across every device when the connection restores." },
  { n: "05", icon: <Ico.Stock />, t: "Live manager dashboard", b: "Revenue, open tabs, tips, and average ticket size in real time — with sales pace, projected end-of-day revenue, and a walkout risk alert for tabs left open too long." },
  { n: "06", icon: <Ico.Sparkle />, t: "Payroll, scheduling & a staff portal", b: "Employee pay runs, scheduling, and leave approvals in one place. Staff get their own portal for hours, pay stubs, schedules, and PTO balance." }];

  return (
    <section className="section-pad band-utility" id="product" data-screen-label="Features">
      <div className="wrap">
        <div className="section-head">
          <div>
            <span className="eyebrow">What it does</span>
            <h2 className="display" style={{ marginTop: 16 }}>
              Everything you need.<br />
              <em>Nothing you don't.</em>
            </h2>
          </div>
          <p className="lede">
            Most POS software is built for chains and bolted on to small rooms.
            Proprietor's runs the other way around — designed first for
            independent operators, then scaled up.
          </p>
        </div>
        <div className="features-grid">
          {feats.map((f) =>
          <div className="feature" key={f.n} style={{ fontSize: "15px" }}>
              <div className="icon">{f.icon}</div>
              <span className="num">{f.n}</span>
              <h3 style={{ textAlign: "center", fontSize: "24px" }}>{f.t}</h3>
              <p style={{ fontSize: "15px" }}>{f.b}</p>
            </div>
          )}
        </div>
      </div>
    </section>);

}

function Product() {
  return (
    <section className="band-dark section-pad" data-screen-label="Product close-up">
      <div className="wrap">
        <div className="product">
          <div className="copy">
            <span className="eyebrow">A closer look</span>
            <h2 className="display" style={{ marginTop: 16 }}>
              Designed by people<br />who have <em>worked in the industry</em>.
            </h2>
            <p className="lede" style={{ marginTop: 24 }}>
              Every screen is built around the moment a guest is standing
              in front of you. The check is where your eye lands first,
              and where it stays.
            </p>
            <ul className="product-list">
              <li><span className="check"><Ico.Check /></span><span><strong>86 status.</strong> Mark an item unavailable the moment you run out, and it's gone from every screen.</span></li>
              <li><span className="check"><Ico.Check /></span><span><strong>Low-stock alerts.</strong> An inventory tab with par levels flags what's running low before you're caught short.</span></li>
              <li><span className="check"><Ico.Check /></span><span><strong>Kitchen Display System.</strong> Tickets land on the line in a clean queue — with delivery and catering orders in the same flow.</span></li>
              <li><span className="check"><Ico.Check /></span><span><strong>Time clock built in.</strong> Staff clock in and out, with breaks and lunch tracked, right from the same device.</span></li>
            </ul>
          </div>
          <div className="product-mock">
            <img
              src="assets/pos-screen.png"
              alt="Proprietor's POS — order screen"
              className="product-mock-img" />
            
          </div>
        </div>
      </div>
    </section>);

}

function Hardware() {
  const hw = [
  { art: <HwCounterTop />, t: "Countertop or Handheld — Your Call", price: "", b: "Any smart tablet with an internet connection can run the system. We'll help you decide whether countertop or handheld works best for you." },
  { art: <HwReader />, t: "Card Reader", price: "", b: "A card reader is completely optional. We'll help you figure out if you need one, and if so, which option makes the most sense for your setup." },
  { art: <HwPrinter />, t: "Receipt Printer", price: "", b: "A receipt printer is optional. This system also lets you customize the receipt to your liking." },
  { art: <HwRegister />, t: "Cash Register", price: "", b: "A cash drawer is fully optional. And every piece of hardware you purchase is yours to keep — no leasing, no vendor lock-in." }];

  return (
    <section className="section-pad band-utility" id="hardware" data-screen-label="Hardware">
      <div className="wrap">
        <div className="section-head">
          <div>
            <span className="eyebrow">Hardware</span>
            <h2 className="display" style={{ marginTop: 16 }}>
              Your device, <em>Your system.</em>
            </h2>
          </div>
          <p className="lede">Use the tablet you already have. Add a cash drawer, receipt printer, and card reader — and you're open for business. That's the whole setup. No proprietary terminals, no leasing fees. 



          </p>
        </div>
        <div className="hardware-grid">
          {hw.map((h) =>
          <div className="hw-card corner-frame" key={h.t}>
              <div className="hw-art">{h.art}</div>
              <h3>{h.t}</h3>
              <p>{h.b}</p>
              {h.price && <div className="price">{h.price}</div>}
            </div>
          )}
        </div>
      </div>
    </section>);

}

function Pricing() {
  const tiers = [
  { name: "Software", price: "800", oneTime: true, ribbon: "One-time",
    desc: "Your bar. Your rules. A complete point-of-sale built for operators who want full control — without a monthly software bill.",
    cta: "Get the software",
    items: [
    "End-to-end encrypted data",
    "Role-based access — owners, managers & staff",
    "Real-time manager dashboard & floor view",
    "Fully customizable menu, layout & modifiers",
    "Push price changes & specials instantly",
    "No accidental voids or unauthorized discounts",
    "One payment — yours to keep"] },
  { name: "Subscription", price: "100", featured: true, ribbon: "Every plan",
    desc: "Every plan comes with full system monitoring, maintenance, and updates. You run your business. We keep the system running.",
    cta: "Get started",
    unit: "Per month",
    items: [
    "Full system monitoring, 24 / 7",
    "Maintenance & updates included",
    "If something breaks, we fix it",
    "Menu, layout & pricing — updated anytime on request",
    "No IT. No vendor calls. No surprise fees."] }];

  return (
    <section className="section-pad band-utility" id="pricing" data-screen-label="Pricing">
      <div className="wrap">
        <div className="section-head">
          <div>
            <span className="eyebrow">Pricing</span>
            <h2 className="display" style={{ marginTop: 16 }}>
              Own the software.<br />
              <em>Monitoring on your terms.</em>
            </h2>
          </div>
          <p className="lede">
            No tiered processing, no junk fees, no surprise rolling reserves.
            What you see is the rate you pay, on day one and on day three thousand.
          </p>
        </div>

        <div className="pricing-grid">
          {tiers.map((tier) =>
          <div className={"tier" + (tier.featured ? " featured" : "")} key={tier.name}>
              {tier.ribbon && <div className={"ribbon" + (tier.featured ? "" : " ribbon-alt")}>{tier.ribbon}</div>}
              <div className="tier-name">{tier.name}</div>
              {tier.title ?
            <div className="tier-title">
                  <span className="amt-title">{tier.title}</span>
                </div> :
            tier.price === "Let's talk" ?
            <div className="tier-price tier-price-talk">
                  <span className="amt-talk">Let's talk</span>
                  <span className="unit">Custom pricing for groups & residencies</span>
                </div> :

            <div className="tier-price">
                  <span className="amt">${tier.price}</span>
                  <span className="unit">{tier.unit || (tier.oneTime ? "One-time license" : "per month, per location")}</span>
                </div>
            }
              <p className="tier-desc">{tier.desc}</p>
              <hr className="rule" />
              <ul>
                {tier.items.map((i) => <li key={i}><span className="check"><Ico.Check size={14} /></span><span>{i}</span></li>)}
              </ul>
              <a href={tier.featured ? "book-a-demo.html" : "#cta"} className={"btn " + (tier.featured ? "btn-primary" : "btn-ghost")}>
                {tier.cta}
              </a>
            </div>
          )}
        </div>
      </div>
    </section>);

}

function FinalCTA() {
  return (
    <section className="final-cta" id="cta" data-screen-label="Final CTA">
      <div className="wrap">
        <div className="seal-key"><KeyMark height={64} /></div>
        <span className="eyebrow">Est. for the independents</span>
        <h2 className="display" style={{ marginTop: 24 }}>
          Own Your Business.<br /><em>Keep the keys.</em>
        </h2>
        <p className="lede">We'll spend forty minutes with you on what your custom build out will look like: your menu, your features, and your hardware — no guesswork, no surprises. Just your system, built the way you run.



        </p>
        <div className="hero-ctas" style={{ justifyContent: "center" }}>
          <a href="book-a-demo.html" className="btn btn-primary">Book a demo <span className="arrow"><Ico.Arrow /></span></a>
          <a href="#" className="btn btn-ghost">Email a founder</a>
        </div>
      </div>
    </section>);

}

function Footer() {
  return (
    <footer id="story" data-screen-label="Footer">
      <div className="wrap">
        <div className="foot">
          <div>
            <Brand />
            <p style={{ marginTop: 18, fontSize: 14, color: "var(--c-muted)", maxWidth: "34ch" }}>A point-of-sale for the people who invest in their own Restaurants, Pop-Ups, and Bars. Made in Oakland, Ca.


            </p>
          </div>
          <div>
            <h5>Product</h5>
            <ul>
              <li><a href="#">Point of Sale</a></li>
              <li><a href="#">Inventory</a></li>
              <li><a href="#">Payments</a></li>
              <li><a href="#">Reporting</a></li>
            </ul>
          </div>
          <div>
            <h5>Operators</h5>
            <ul>
              <li><a href="#">Bars</a></li>
              <li><a href="#">Restaurants</a></li>
              <li><a href="#">Pop-ups</a></li>
              <li><a href="#">Hospitality groups</a></li>
            </ul>
          </div>
          <div>
            <h5>House</h5>
            <ul>
              <li><a href="#">Story</a></li>
              <li><a href="#"></a></li>
              <li><a href="#"></a></li>
              <li><a href="#">Contact</a></li>
            </ul>
          </div>
        </div>
        <div className="foot-bottom">
          <span>© Proprietor's Suite Co. · MMXXVI</span>
          <span>Privacy · Terms · PCI · Status</span>
        </div>
      </div>
    </footer>);

}

// ─── App ─────────────────────────────────────────────────────
function App() {
  const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);

  useEffect(() => {
    document.body.setAttribute("data-palette", t.palette);
    document.body.setAttribute("data-theme", t.theme);
  }, [t.palette, t.theme]);

  return (
    <>
      <Nav />
      <Hero layout={t.heroLayout} />
      <Features />
      <Product />
      <Hardware />
      <Pricing />
      <FinalCTA />
      <Footer />
      <Tweaks t={t} setTweak={setTweak} />
    </>);

}

ReactDOM.createRoot(document.getElementById("app")).render(<App />);