/* ===================== Modernisation page ===================== */
const { Icon, Verdict, PageShell, PageHero, DeepRow, CTASection, HOME } = window;

const STAGES = [
  { t: "Feasibility", d: "Assess condition and remaining life, then a clear modernise-or-replace recommendation with budget costs." },
  { t: "Specification", d: "A tender-ready specification: scope, performance and drawings, so every contractor prices the same job." },
  { t: "Tender", d: "Taken to market and evaluated like-for-like, with a recommendation you can act on." },
  { t: "Superintendence", d: "On-site oversight through the works: progress, quality, testing and commissioning." },
  { t: "Handover", d: "Final inspection, defects sign-off, fire certificates and O&M documentation." },
];

function StageFlow() {
  return (
    <section className="section--tight">
      <div className="wrap">
        <div className="flow flow--c">
          {STAGES.map((s, i) => (
            <div className="fstep" key={i}>
              <div className="fstep__line"></div>
              <div className="fstep__n">{String(i + 1).padStart(2, "0")}</div>
              <div className="fstep__t">{s.t}</div>
              <div className="fstep__d">{s.d}</div>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

/* modernise vs replace, costed */
function OptionsPanel() {
  return (
    <div className="panel">
      <div className="panel__top">
        <div className="panel__title"><b>Options assessment · Tower A</b><span>Condition &amp; remaining life</span></div>
        <div className="panel__chip panel__chip--accent">Independent</div>
      </div>
      <div className="panel__sec">Your options, costed</div>
      <div className="lrow"><span className="lrow__dot lrow__dot--ok"></span><div className="lrow__main"><div className="lrow__t">Modernise (retain car &amp; rails)</div><div className="lrow__s">Controller, drive, doors and fixtures renewed</div></div><span className="ltag ltag--ok">Mid</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--flag"></span><div className="lrow__main"><div className="lrow__t">Full replacement</div><div className="lrow__s">New lift throughout, longest downtime</div></div><span className="ltag ltag--flag">High</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--ok"></span><div className="lrow__main"><div className="lrow__t">Stage over two budgets</div><div className="lrow__s">Controls and doors now, interior later</div></div><span className="ltag ltag--ok">Phased</span></div>
      <Verdict inPanel tag="Recommendation" title="Modernise, and stage it">
        Your car and guide rails have life left. Renew the <strong>controller, drive and doors</strong> now, stage the interior later, and spread the capital cost across two budgets.
      </Verdict>
    </div>
  );
}

/* one spec, every bid normalised */
function TenderPanel() {
  const Cell = ({ children, head, label, win, lose }) => (
    <div className={"cmp__cell" + (head ? " cmp__cell--head" : "") + (label ? " cmp__cell--label" : "")}>
      {win && <span className="cmp__win"><Icon name="check" stroke={2.4} /></span>}
      <span className={win ? "cmp__win" : lose ? "cmp__lose" : ""}>{children}</span>
    </div>
  );
  return (
    <div className="panel" style={{ padding: 0 }}>
      <div className="panel__top">
        <div className="panel__title"><b>Tender comparison: modernisation</b><span>Normalised to your specification</span></div>
        <div className="panel__chip panel__chip--accent">Like-for-like</div>
      </div>
      <div style={{ padding: 16 }}>
        <div className="cmp">
          <div className="cmp__row cmp__row--head"><Cell head>Criteria</Cell><Cell head>Contractor A</Cell><Cell head>Contractor B ✓</Cell></div>
          <div className="cmp__row"><Cell label>Scope match</Cell><Cell lose>Partial</Cell><Cell win>Full</Cell></div>
          <div className="cmp__row"><Cell label>Downtime / lift</Cell><Cell lose>4 wks</Cell><Cell win>3 wks</Cell></div>
          <div className="cmp__row"><Cell label>Warranty</Cell><Cell lose>12 mo</Cell><Cell win>24 mo</Cell></div>
          <div className="cmp__row"><Cell label>Controller</Cell><Cell lose>Proprietary</Cell><Cell win>Non-proprietary</Cell></div>
        </div>
      </div>
      <Verdict inPanel tag="Recommendation" title="Contractor B: better cover, open parts">
        Once normalised to your spec, B wins on <strong>scope, downtime and a non-proprietary controller</strong> you can service with anyone, not just the installer.
      </Verdict>
    </div>
  );
}

/* on site, through to sign-off */
function WorksPanel() {
  return (
    <div className="panel">
      <div className="panel__top">
        <div className="panel__title"><b>Works in progress · Lift 1</b><span>Modernisation · week 6 of 12</span></div>
        <div className="panel__chip panel__chip--good">On track</div>
      </div>
      <div className="lrow"><span className="lrow__dot lrow__dot--good"></span><div className="lrow__main"><div className="lrow__t">Controller &amp; drive</div><div className="lrow__s">Replaced and commissioned</div></div><span className="ltag ltag--good">Done</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--good"></span><div className="lrow__main"><div className="lrow__t">Door operator &amp; landing gear</div><div className="lrow__s">Installed on every level</div></div><span className="ltag ltag--good">Done</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--ok"></span><div className="lrow__main"><div className="lrow__t">Car interior &amp; fixtures</div><div className="lrow__s">Fit-out underway</div></div><span className="ltag ltag--ok">In progress</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--flag"></span><div className="lrow__main"><div className="lrow__t">Snag: landing door alignment, L3</div><div className="lrow__s">Raised with the contractor</div></div><span className="ltag ltag--flag">Tracking</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--ok"></span><div className="lrow__main"><div className="lrow__t">Testing &amp; fire certificates</div><div className="lrow__s">Scheduled at completion</div></div><span className="ltag ltag--ok">Booked</span></div>
      <Verdict inPanel tag="On site for you" title="Checked against the spec you paid for">
        Every stage is verified against your specification, defects are <strong>raised and tracked</strong>, and nothing is signed off until it meets the standard.
      </Verdict>
    </div>
  );
}

/* how the fee works: fixed per lift, never a percentage */
function FeePanel() {
  return (
    <div className="panel">
      <div className="panel__top">
        <div className="panel__title"><b>How the fee works</b><span>Fixed, per lift</span></div>
        <div className="panel__chip panel__chip--good">No conflict</div>
      </div>
      <div className="lrow"><span className="lrow__dot lrow__dot--good"></span><div className="lrow__main"><div className="lrow__t">Fixed fee per lift</div><div className="lrow__s">Agreed before we start</div></div><span className="ltag ltag--good">Set</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--good"></span><div className="lrow__main"><div className="lrow__t">Never a percentage of the project cost</div><div className="lrow__s">A bigger project is not a bigger fee</div></div><span className="ltag ltag--good">Clean</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--good"></span><div className="lrow__main"><div className="lrow__t">No ties to any lift company</div><div className="lrow__s">No commissions, no referral fees</div></div><span className="ltag ltag--good">Independent</span></div>
      <div className="lrow"><span className="lrow__dot lrow__dot--good"></span><div className="lrow__main"><div className="lrow__t">Staged with the works</div><div className="lrow__s">Feasibility credited if you proceed</div></div><span className="ltag ltag--good">Fair</span></div>
      <Verdict inPanel tag="Why it matters" title="A percentage rewards a bigger bill">
        Charge a percentage of the project cost and every extra dollar of scope is extra fee. We charge a <strong>fixed fee per lift</strong>, so our advice is only ever about what your building needs.
      </Verdict>
    </div>
  );
}

const modernisationSchema = {
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Service",
      "@id": "https://liftportfoliomanagement.com.au/modernisation.html#service",
      name: "Lift Modernisation Consulting",
      serviceType: "Independent lift modernisation and upgrade project management",
      provider: {
        "@type": "Organization",
        "@id": "https://liftportfoliomanagement.com.au/#organization",
        name: "Lift Portfolio Management",
        url: "https://liftportfoliomanagement.com.au/",
      },
      areaServed: ["AU", "NZ"],
      audience: { "@type": "Audience", audienceType: "Building owners, strata committees and facility managers" },
      description:
        "Independent management of a lift modernisation from feasibility through to handover: options and feasibility, a like-for-like specification and tender, and on-site superintendence. Charged as a fixed fee per lift, never a percentage of the works.",
      offers: { "@type": "Offer", priceCurrency: "AUD", description: "Fixed fee per lift, never a percentage of the works." },
    },
    {
      "@type": "BreadcrumbList",
      itemListElement: [
        { "@type": "ListItem", position: 1, name: "LPM", item: "https://liftportfoliomanagement.com.au/" },
        { "@type": "ListItem", position: 2, name: "Modernisation", item: "https://liftportfoliomanagement.com.au/modernisation.html" },
      ],
    },
  ],
};

function Page() {
  return (
    <PageShell current="modernisation.html">
      <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(modernisationSchema) }} />
      <PageHero
        icon="trend"
        kicker="Modernisation"
        crumb="Modernisation"
        title={<>Modernise with an expert guiding you at every stage, <span className="soft">from feasibility through to final sign-off.</span></>}
        sub="Lift modernisation is a significant, long-term investment. LPM manages the entire process as your independent adviser: we determine the necessary works, prepare the specification, take it to market, and manage the works through to certification."
        pills={["Feasibility", "Specification", "Tender", "Superintendence", "Handover"]}
        primary={<a className="btn btn--accent" href="contact.html">Talk to us <span className="arr"><Icon name="arrow" /></span></a>}
      />

      <section className="section statband" id="why">
        <div className="wrap">
          <div style={{ textAlign: "center", maxWidth: 680, margin: "0 auto 40px" }}>
            <span className="eyebrow">Why LPM</span>
            <h2 className="section__title" style={{ marginTop: 10 }}>A major spend, run by someone who only answers to you.</h2>
            <p className="section__sub" style={{ marginLeft: "auto", marginRight: "auto" }}>A modernisation is a once-in-a-generation project. We manage the whole of it as your independent adviser, from the first assessment to the final certificate.</p>
          </div>
          <div className="statgrid">
            <div className="stat">
              <div className="stat__n"><span>5</span> stages</div>
              <div className="stat__l">feasibility, specification, tender, superintendence and handover, managed as one</div>
            </div>
            <div className="stat">
              <div className="stat__n">10&ndash;16<span> wks</span></div>
              <div className="stat__l">typical time on site per lift, and we are there across it</div>
            </div>
            <div className="stat">
              <div className="stat__n"><span>1</span> spec</div>
              <div className="stat__l">every contractor prices the same job, so you compare like for like</div>
            </div>
            <div className="stat">
              <div className="stat__n"><span>End</span> to end</div>
              <div className="stat__l">one adviser from the first assessment to the final certificate</div>
            </div>
          </div>
        </div>
      </section>

      <StageFlow />

      <section className="section" style={{ paddingTop: 40 }} id="feasibility">
        <div className="wrap">
          <DeepRow
            kicker="Feasibility & options"
            title="Modernise or replace? Make informed decisions before committing funds."
            desc="Before any funds are committed, we assess the lift's condition, remaining lifespan and compliance. We then present your options with budget estimates and a clear recommendation, ensuring the committee makes decisions based on comprehensive information rather than a contractor's sales pitch."
            points={[
              <><b>Condition and remaining life</b><span>: a clear assessment of your lift's status and expected lifespan.</span></>,
              <><b>Options, with costs</b><span>: modernise, part-modernise or replace, each presented with a budget and timeline.</span></>,
              <><b>Recommendations for owners</b><span>: plain English, ready for committee review.</span></>,
            ]}
            visual={<OptionsPanel />}
          />
        </div>
      </section>

      <section className="section band" id="specification" style={{ paddingTop: 90 }}>
        <div className="wrap">
          <DeepRow
            rev
            kicker="Specification & tender"
            title="A single specification ensures every contractor prices the same scope of work."
            desc="We develop a tender-ready, vendor-neutral specification and take it to market. With every contractor quoting against the same scope, you receive accurate, comparable bids rather than inconsistent proposals."
            points={[
              <><b>Tender-ready specification</b><span>: scope, performance and drawings, independent of any manufacturer.</span></>,
              <><b>A level playing field</b><span>: all bids normalised to your requirements for accurate comparison.</span></>,
              <><b>The right contract award</b><span>: coverage, downtime and terms considered, not just price.</span></>,
            ]}
            visual={<TenderPanel />}
          />
        </div>
      </section>

      <section className="section band" id="superintendence" style={{ paddingTop: 90 }}>
        <div className="wrap">
          <DeepRow
            kicker="Superintendence & handover"
            title="On-site management through to certification."
            desc="Throughout the project, we oversee progress, quality, safety, testing, commissioning and all required documentation. You have a single point of contact and a seamless handover upon completion."
            points={[
              <><b>On-site oversight</b><span>: regular site visits throughout the project, not just remote check-ins.</span></>,
              <><b>Quality and defect management</b><span>: all work checked against the agreed specification.</span></>,
              <><b>Seamless handover</b><span>: testing, fire certificates and O&M documents provided at completion.</span></>,
            ]}
            visual={<WorksPanel />}
          />
        </div>
      </section>

      <section className="section band" id="independent" style={{ paddingTop: 90 }}>
        <div className="wrap">
          <DeepRow
            kicker="Independent by design"
            title="A fixed fee, never a percentage of the project cost."
            desc="Most consultants charge a percentage of the project cost, increasing their fee as your project grows. We do not. We agree on a fixed fee per lift, so there is no incentive to expand the scope unnecessarily, and we hold complete independence from lift companies. Your project and budget are our sole priorities."
            points={[
              <><b>Fixed fee per lift</b><span>: agreed upfront, never a percentage of the project cost.</span></>,
              <><b>No incentive to increase scope</b><span>: a fixed fee ensures our interests align with yours.</span></>,
              <><b>No ties or commissions</b><span>: we are never paid by manufacturers or contractors.</span></>,
            ]}
            visual={<FeePanel />}
          />
        </div>
      </section>

      <CTASection contact title="Modernise once, and get it right." sub="A major lift upgrade deserves an expert who only answers to you. Get in touch and we'll scope it with you." />
    </PageShell>
  );
}

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