/* ===================== LPM Managed page =====================
   The done-for-you retainer: forward it, we deal with it.
   Fees deliberately unpublished (price-discovery phase, Gareth 28 Aug 2026): fixed
   monthly fee, quoted per portfolio in conversation. */
const { Icon, PageShell, PageHero, CTASection } = window;

const pageSchema = {
  "@context": "https://schema.org",
  "@type": "ProfessionalService",
  "@id": "https://liftportfoliomanagement.com.au/lpm-managed.html#service",
  name: "LPM Managed · Independent Lift Contract Management",
  url: "https://liftportfoliomanagement.com.au/lpm-managed.html",
  provider: { "@type": "Organization", name: "LPM · Lift Portfolio Management", url: "https://liftportfoliomanagement.com.au/" },
  areaServed: [
    { "@type": "Country", name: "Australia" },
    { "@type": "Country", name: "New Zealand" },
  ],
  description:
    "LPM Managed puts an independent lift specialist between you and your lift contractor. Invoices, quotes, callouts and renewals reviewed and dealt with, a committee brief before every meeting, for a fixed monthly fee scoped to your portfolio.",
};

/* ---------- the four-step mechanism ---------- */
const STEPS = [
  { n: "01", icon: "arrow", title: "Forward", desc: "An invoice, a quote, a service report, a renewal notice. One email, no form, no meeting." },
  { n: "02", icon: "search", title: "We review", desc: "The platform reads it against your agreement and the standards, and Gareth reviews everything it flags before anything reaches you." },
  { n: "03", icon: "clipboardList", title: "We act", desc: "Where a query is warranted, we raise it with your lift contractor and follow it through to an answer, so you are not the one chasing." },
  { n: "04", icon: "file", title: "You report", desc: "Before each committee meeting you get one page: what happened, what it cost, and what needs a decision." },
];

/* ---------- included / quoted separately ---------- */
const INCLUDED = [
  ["Full platform access for your whole team", "every contract covered, unlimited Lola, as many seats as you need, at no extra charge."],
  ["Done for you onboarding", "send us what you have and we load it. You start with everything in one place, not a filing job."],
  ["Invoice review", "against the agreement, so charges are checked before they are paid rather than after."],
  ["Quote review", "on scope and rates, with the questions worth asking drafted for you."],
  ["Contractor liaison", "on anything we query, followed through to a written answer."],
  ["Monthly and quarterly performance reports", "covering callouts, repeat faults, response times against the agreement and spend against budget."],
  ["Committee brief", "before each meeting, written so it can go to the committee as it is."],
  ["Renewal and compliance watch", "contract expiries, registration renewals and statutory dates tracked, so nothing rolls over or lapses without a decision first."],
  ["Ten year capital outlook", "for every building covered, refreshed annually, so a modernisation never arrives as a surprise."],
  ["The annual budget line", "before each budget meeting, a forecast of next year's lift costs: maintenance, likely repairs and what is coming capitally."],
  ["Your records, kept and yours", "every contract, invoice, service report and quote held permanently and exportable at any time."],
  ["Gareth on the phone", "whenever you would rather run something past a person."],
];
const SEPARATE = [
  ["Maintenance tenders", "beyond the ones included in your tier."],
  ["Modernisation projects", "including feasibility, specification and project management."],
  ["Annual site audits", "where a physical inspection and written report are wanted."],
  ["New installation design engineering", "which is properly the work of a specialist engineering consultancy, and we will say so."],
  ["Anything requiring a licensed trade", "LPM specifies and reviews work. We do not carry it out."],
];

function ScopeList({ items, no }) {
  return (
    <ul style={{ listStyle: "none", padding: 0, margin: 0 }}>
      {items.map(([t, d]) => (
        <li key={t} style={{ display: "flex", gap: 11, padding: "10px 0", borderTop: "1px solid var(--border)", fontSize: 14.5, lineHeight: 1.55 }}>
          <span style={{ flex: "none", width: 19, height: 19, borderRadius: "50%", marginTop: 2, display: "flex", alignItems: "center", justifyContent: "center", fontSize: 11, fontWeight: 700, background: no ? "var(--flag-bg)" : "rgba(var(--accent-rgb),0.12)", color: no ? "var(--flag)" : "var(--accent)" }}>{no ? "×" : "✓"}</span>
          <span><b>{t}</b><span style={{ color: "var(--muted)" }}> {d}</span></span>
        </li>
      ))}
    </ul>
  );
}

/* ---------- retainer tiers ---------- */
const TIERS = [
  {
    name: "Advisor", who: "You hold the relationship", cap: "Up to 5 lift contracts", flag: "",
    items: ["Full platform for those contracts", "Every flag reviewed by Gareth", "Every quote checked before approval", "Monthly performance report", "Response within two business days", "You still deal with your lift company"],
    cta: ["Talk to Gareth", "btn btn--ghost"],
  },
  {
    name: "Managed", who: "You forward it, we deal with it", cap: "Up to 15 lift contracts", flag: "Most managers start here", feature: true,
    items: ["Everything in Advisor", "We deal with your lift contractor directly", "Repairs and quotes chased to an answer", "Committee brief for every meeting", "Quarterly performance review", "Ten year capital outlook per building", "Second opinion on any quote over $5,000", "Handover pack when a building changes managers", "One maintenance tender included each year", "Response by the next business day"],
    cta: ["Talk to Gareth", "btn btn--accent"],
  },
  {
    name: "Portfolio", who: "Your lift department", cap: "Up to 50 lift contracts", flag: "",
    items: ["Everything in Managed, across the portfolio", "Quarterly site attendance", "Capital and sinking fund plan actively maintained", "All maintenance tenders included", "Same day response", "Committee or AGM attendance on request"],
    cta: ["Get portfolio pricing", "btn btn--ghost"],
  },
];

function Tiers() {
  return (
    <section className="section" id="pricing" style={{ paddingTop: 70 }}>
      <div className="wrap">
        <div className="section__head">
          <span className="eyebrow">Pricing</span>
          <h2 className="section__title">One fixed monthly fee, quoted for your portfolio.</h2>
          <p className="section__sub" style={{ maxWidth: 760 }}>
            Every tier includes the full platform for the contracts it covers, so there is nothing to pay alongside it. The fee is fixed, quoted per portfolio rather than per building, and settled in writing before we start, so it does not change when a building has two lifts instead of one. Tell Gareth what you manage and you will have a number the same conversation.
          </p>
        </div>
        <div className="fgrid fgrid--3" style={{ alignItems: "stretch" }}>
          {TIERS.map((t) => (
            <div className="fcard" key={t.name} style={{ display: "flex", flexDirection: "column", ...(t.feature ? { borderColor: "rgba(var(--accent-rgb),0.42)", background: "rgba(var(--accent-rgb),0.05)" } : {}) }}>
              <div style={{ minHeight: 16, fontSize: 10.5, letterSpacing: "0.13em", textTransform: "uppercase", color: "var(--accent)", fontFamily: "var(--mono)" }}>{t.flag}</div>
              <h3 className="fcard__title" style={{ marginTop: 6 }}>{t.name}</h3>
              <div style={{ fontSize: 13, color: "var(--faint)", marginTop: 2 }}>{t.who}</div>
              <div style={{ marginTop: 14, fontSize: 17, fontWeight: 600 }}>Fixed monthly fee</div>
              <p className="fcard__desc" style={{ marginTop: 6, marginBottom: 14 }}>{t.cap}</p>
              <ul style={{ listStyle: "none", padding: 0, margin: "0 0 20px", display: "grid", gap: 8 }}>
                {t.items.map((it) => (
                  <li key={it} style={{ display: "flex", gap: 9, fontSize: 14, lineHeight: 1.5 }}>
                    <span style={{ color: "var(--accent)", fontWeight: 700, fontSize: 12, marginTop: 2 }}>{"✓"}</span>{it}
                  </li>
                ))}
              </ul>
              <a href="contact.html" className={t.cta[1]} style={{ marginTop: "auto", justifyContent: "center" }}>{t.cta[0]} <span className="arr"><Icon name="arrow" /></span></a>
            </div>
          ))}
        </div>
        <p className="section__sub" style={{ maxWidth: 760, marginTop: 22, fontSize: 13.5 }}>
          Fees are quoted in AUD, per month. Larger portfolios are scoped individually, and the rate per contract improves with volume. Prefer to run the lifts yourself? The platform is available on its own from $49 per contract per month on the <a href="contracts.html">Contracts &amp; Pricing</a> page.
        </p>
      </div>
    </section>
  );
}

/* ---------- guarantee + founding ---------- */
function Assurance() {
  return (
    <section className="section" style={{ paddingTop: 0 }}>
      <div className="wrap">
        <div className="fgrid fgrid--2" style={{ alignItems: "stretch" }}>
          <div className="fcard" style={{ borderColor: "rgba(var(--accent-rgb),0.35)", background: "rgba(var(--accent-rgb),0.06)" }}>
            <span className="eyebrow" style={{ color: "var(--accent-strong)" }}>The arrangement</span>
            <h3 className="fcard__title">Sixty days. If it has not been worth the fee, we refund it.</h3>
            <p className="fcard__desc" style={{ marginTop: 10 }}>
              Take LPM Managed for sixty days. If at the end of it you do not believe it has earned its keep, tell us and we refund what you have paid. You keep every report and every review we produced in that time. There is no lock in after that either: LPM Managed runs month to month, and the reason to stay is that it is working.
            </p>
          </div>
          <div className="fcard">
            <span className="eyebrow">Founding arrangement · until 31 October 2026</span>
            <h3 className="fcard__title">Five founding managed clients</h3>
            <p className="fcard__desc" style={{ marginTop: 10 }}>
              LPM is taking five founding managed clients, and the terms for them are better than they will be afterwards: the founding rate you agree locked for as long as you stay, your first maintenance tender at no charge when you start on Managed for twelve months, and a direct line to the founder, which is a thing that stops being true as a business grows.
            </p>
          </div>
        </div>
      </div>
    </section>
  );
}

/* ---------- FAQ ---------- */
const FAQS = [
  ["We are happy with our lift company. Why would we need this?", "Most buildings are with a capable contractor, and this is not about replacing them. It is about somebody on your side reading the paperwork with the same fluency as the person who wrote it. Nearly everything we raise turns out to be an administrative slip, a charge applied under the wrong clause or a scope written more broadly than intended, and it gets corrected quickly and without friction. A good lift company usually welcomes a client who understands the contract, because it makes every conversation shorter."],
  ["Do you sell any of the work you recommend?", "No. LPM holds no commercial ties to any lift company. We do not carry out lift work and we do not supply parts or labour. That independence is the entire basis of the service, and it is why we are willing to put a recommendation in writing."],
  ["We are locked into a contract for another three years. Is it too late?", "No, and this is usually where the most value sits. A live agreement still has to be administered correctly for its whole term, which means charges matching the clauses, work matching the scope, and any fee adjustment applied the way the contract says. A contract you cannot leave is a contract worth reading carefully."],
  ["Who actually does the work? Is it software, or a person?", "Both, in that order. The platform reads every document and flags what does not line up, which is what makes the fee possible at this level. Gareth reviews everything it flags before any of it reaches you, and he is on the phone whenever you would rather run something past a person."],
  ["What if our portfolio is bigger than fifty contracts?", "Then it is scoped individually, and the rate per contract improves. Body corporate firms and facilities management companies running multiple portfolios are exactly who the Portfolio tier is built for."],
  ["What does the free contract check involve?", "Send the current agreement and twelve months of invoices for one building. We read them and send back a written summary of what the contract actually commits you to, what the invoices show against it, and anything worth raising. It takes us a couple of days, it costs nothing, and there is no obligation at the end of it either way."],
];

function Faq() {
  return (
    <section className="section" id="faq" style={{ paddingTop: 0 }}>
      <div className="wrap" style={{ maxWidth: 820 }}>
        <div className="section__head">
          <span className="eyebrow">Questions</span>
          <h2 className="section__title">The ones that come up first.</h2>
        </div>
        {FAQS.map(([q, a]) => (
          <details key={q} style={{ borderTop: "1px solid var(--border)", padding: "15px 0" }}>
            <summary style={{ cursor: "pointer", fontWeight: 600, fontSize: 16.5 }}>{q}</summary>
            <p style={{ margin: "10px 0 0", color: "var(--muted)", maxWidth: "74ch", lineHeight: 1.6 }}>{a}</p>
          </details>
        ))}
      </div>
    </section>
  );
}

function Page() {
  return (
    <PageShell current="contracts.html">
      <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(pageSchema) }} />
      <PageHero
        icon="award"
        kicker="LPM Managed"
        crumb="LPM Managed"
        title={<>You forward it. <span className="soft">We deal with it.</span></>}
        sub="LPM Managed puts an independent lift specialist between you and your lift contractor. Invoices, quotes, callouts and renewals come to us first. You get answers you can take straight to the committee, and your week back."
        pills={["Done for you", "Fixed monthly fee", "Independent · no ties to any lift company"]}
        actions={
          <>
            <a className="btn btn--accent" href="contact.html">Talk to Gareth <span className="arr"><Icon name="arrow" /></span></a>
            <a className="btn btn--ghost" href="#pricing">Compare the three plans</a>
          </>
        }
      />

      {/* the problem */}
      <section className="section" style={{ paddingTop: 70 }}>
        <div className="wrap">
          <div className="section__head">
            <span className="eyebrow">The problem</span>
            <h2 className="section__title">Lifts are a small part of the portfolio and a large part of the week.</h2>
            <p className="section__sub" style={{ maxWidth: 760 }}>
              A body corporate or facilities manager might hold forty buildings. The lifts in them are a fraction of the assets and a much larger fraction of the interruptions: the quote nobody can assess, the invoice nobody has time to check against the agreement, the contract that rolls over on terms agreed by a committee that has since changed twice, and a committee that wants a straight answer at the next meeting.
            </p>
          </div>
        </div>
      </section>

      {/* the mechanism */}
      <section className="section" id="how" style={{ paddingTop: 0 }}>
        <div className="wrap">
          <div className="section__head">
            <span className="eyebrow">How it works</span>
            <h2 className="section__title">That is the whole arrangement.</h2>
            <p className="section__sub" style={{ maxWidth: 720 }}>
              Anything that arrives from the lift company comes to us, and it comes back to you as a decision you can take to a committee.
            </p>
          </div>
          <div className="fgrid fgrid--4">
            {STEPS.map((s) => (
              <div className="fcard" key={s.n}>
                <div style={{ fontFamily: "var(--mono)", fontSize: 12, color: "var(--accent)", letterSpacing: "0.1em", marginBottom: 10 }}>{s.n}</div>
                <h3 className="fcard__title">{s.title}</h3>
                <p className="fcard__desc" style={{ marginTop: 8 }}>{s.desc}</p>
              </div>
            ))}
          </div>
        </div>
      </section>

      {/* scope */}
      <section className="section" id="included" style={{ paddingTop: 0 }}>
        <div className="wrap">
          <div className="section__head">
            <span className="eyebrow">Scope</span>
            <h2 className="section__title">What is in, and what is not.</h2>
            <p className="section__sub" style={{ maxWidth: 720 }}>Written plainly, because a fixed fee only works when both sides know where its edges are.</p>
          </div>
          <div className="fgrid fgrid--2" style={{ alignItems: "start" }}>
            <div className="fcard">
              <h3 className="fcard__title" style={{ marginBottom: 14 }}>Included every month</h3>
              <ScopeList items={INCLUDED} />
            </div>
            <div className="fcard">
              <h3 className="fcard__title" style={{ marginBottom: 14 }}>Quoted separately, always as a fixed fee</h3>
              <ScopeList items={SEPARATE} no />
            </div>
          </div>
        </div>
      </section>

      {/* credibility */}
      <section className="section" style={{ paddingTop: 0 }}>
        <div className="wrap">
          <div className="cta">
            <div className="cta__inner" style={{ textAlign: "left", alignItems: "flex-start" }}>
              <span className="eyebrow">Who is reviewing it</span>
              <h2 className="section__title" style={{ marginTop: 0 }}>Eighteen years in vertical transport, on the other side of the desk.</h2>
              <p className="section__sub" style={{ marginTop: 0, maxWidth: 760 }}>
                LPM is founded by Gareth Evans, who spent eighteen years in the lift industry across service and new equipment, including as Service Branch Manager for Queensland at Otis, running five branches and more than ninety people. The contracts LPM reads are the kind he used to price. LPM holds no commercial ties to any lift company and sells none of the work it specifies, which is the only reason a recommendation from us is worth anything. Work is referenced to AS 1735 and EN 81-20, with NCC Part E3, and LPM carries professional indemnity to $5m and public and product liability to $10m.
              </p>
            </div>
          </div>
        </div>
      </section>

      <Tiers />
      <Assurance />
      <Faq />

      <CTASection
        title="Start with one building."
        sub="Send the contract and twelve months of invoices for a single building. You will get a written read on it, and a straight answer about whether having us manage the rest is worth it."
        contact
      />
    </PageShell>
  );
}

ReactDOM.createRoot(document.getElementById("root")).render(<Page />);
