// PSM Expert — Página LOPA (Análise de Camadas de Proteção) — foco único em LOPA; SIL apenas como saída/bridge

// ── Fórmula central do LOPA ──
function FormulaBox() {
  return (
    <div style={lp.formulaWrap}>
      <div style={lp.formulaLabel}>A lógica central do LOPA</div>
      <div style={lp.formula}>
        <span style={lp.fTerm}>Freq. do Evento Iniciador</span>
        <span style={lp.fOp}>×</span>
        <span style={lp.fTerm}>∏ PFD das IPLs</span>
        <span style={lp.fOp}>×</span>
        <span style={lp.fTerm}>modificadores</span>
        <span style={lp.fEq}>=</span>
        <span style={lp.fResult}>Frequência mitigada</span>
      </div>
      <div style={lp.formulaFoot}>A frequência mitigada é comparada ao critério de tolerabilidade da empresa ou do regulador.</div>
    </div>
  );
}

// ── 4 regras de independência de uma IPL ──
function IplRules() {
  const rules = [
    { n: "01", t: "Independente do evento iniciador", d: "A IPL não pode ser afetada pela mesma causa que gera o cenário — caso contrário falharia junto com ele." },
    { n: "02", t: "Independente das demais IPLs", d: "Nenhuma falha comum pode comprometer simultaneamente duas camadas creditadas no mesmo cenário." },
    { n: "03", t: "Confiabilidade documentada (PFD)", d: "A probabilidade de falha sob demanda deve ser conhecida e sustentada por dados — CCPS, fabricante ou cálculo." },
    { n: "04", t: "Auditável e mantida", d: "A camada precisa ser testável, inspecionada e gerenciada ao longo do ciclo de vida para manter o crédito assumido." },
  ];
  return (
    <div style={lp.rulesGrid} className="psm-grid-2">
      {rules.map((r) => (
        <div key={r.n} style={lp.ruleCard}>
          <div style={lp.ruleNum}>{r.n}</div>
          <div>
            <h4 style={lp.ruleT}>{r.t}</h4>
            <p style={lp.ruleD}>{r.d}</p>
          </div>
        </div>
      ))}
    </div>
  );
}

// ── 3 cards de argumento de valor ──
function ValueCards() {
  const cards = [
    { icon: "bar-chart", t: "Evite o superinvestimento", d: "O LOPA demonstra objetivamente quando uma recomendação cara do HAZOP é realmente necessária — e quando as proteções existentes já bastam. Decisão de capex fundamentada em número, não em conservadorismo." },
    { icon: "shield-check", t: "Prove a adequação das proteções", d: "Documentação auditável de que as camadas de proteção independentes atendem ao critério de tolerabilidade — prova de due diligence frente a reguladores e em M&A." },
    { icon: "layers", t: "Fundamente a decisão de SIS", d: "O LOPA é a base técnica exigida pela IEC 61511 para a determinação do SIL requerido de cada função instrumentada de segurança." },
  ];
  return (
    <div style={lp.valGrid} className="psm-grid-3">
      {cards.map((c) => (
        <div key={c.t} style={lp.valCard}>
          <div style={lp.valIcon}><Icon name={c.icon} size={22} color="#17304D" stroke={1.7} /></div>
          <h3 style={lp.valT}>{c.t}</h3>
          <p style={lp.valD}>{c.d}</p>
        </div>
      ))}
    </div>
  );
}

function SubTitle({ children }) {
  return <h3 style={lp.subTitle}>{children}</h3>;
}

// ── Bloco de transição para a página de SIL ──
function SilBridge() {
  return (
    <section style={lp.bridgeSection}>
      <div style={lp.bridgeInner}>
        <div style={lp.bridgeKicker}>Próxima etapa · Segurança Funcional</div>
        <p style={lp.bridgeText}>
          O LOPA entrega o <strong>SIL requerido</strong> para cada função instrumentada de segurança. O que vem depois — verificação de SIL, elaboração da SRS e o ciclo de vida completo do SIS conforme a IEC 61511 — é coberto pelo nosso estudo dedicado.
        </p>
        <a href="sil-sis-sif.html" style={lp.bridgeLink}>
          Conheça o estudo de SIS / SIF / SIL <Icon name="arrow-right" size={17} color="#071C36" />
        </a>
      </div>
    </section>
  );
}

function LopaPage() {
  return (
    <React.Fragment>
      <Header current="servicos" />

      <div style={lpc.crumbWrap}>
        <div style={lpc.crumbInner}>
          <a href="servicos.html" style={lpc.crumbLink}>Serviços</a>
          <span style={lpc.crumbSep}>/</span>
          <span style={lpc.crumbCur}>LOPA — Análise de Camadas de Proteção</span>
        </div>
      </div>

      <PageHero
        kicker="Soluções Técnicas · Análise de Risco"
        title="LOPA — Análise de Camadas de Proteção"
        subtitle="Metodologia semi-quantitativa para avaliar se as salvaguardas de um processo são suficientes para reduzir o risco a um nível tolerável — conforme CCPS e IEC 61511."
        badges={["CCPS Guidelines", "IEC 61511 Anexo F", "ISA-84", "AIChE/CCPS LOPA"]} />

      {/* ── BLOCO 2 — O que é LOPA ── */}
      <Section title="O que é a Análise de Camadas de Proteção?">
        <P>O <strong>LOPA</strong> (<em>Layer of Protection Analysis</em>) é a ponte entre o <strong>HAZOP</strong> — qualitativo — e o <strong>QRA</strong> — totalmente quantitativo. Para cada cenário de alta consequência, o método estima a frequência do evento indesejado e o crédito de cada camada de proteção, comparando o risco resultante a um critério de tolerabilidade definido.</P>
        <P>A lógica é direta: parte-se da frequência de um <strong>Evento Iniciador (IE)</strong> e multiplica-se pela probabilidade de falha sob demanda (PFD) de cada <strong>Camada de Proteção Independente (IPL)</strong> creditada. O resultado é a frequência mitigada do cenário.</P>

        <FormulaBox />

        <figure style={lp.figure}>
          <img src="img/lopa-camadas.png" alt="Diagrama das camadas de proteção do LOPA em torno do processo: medidas de prevenção (concepção de projeto, BPCS, alarmes críticos, SIF, proteções físicas ativas) e medidas de mitigação (diques, resposta a emergência) até a perda de contenção." style={lp.figImg} />
          <figcaption style={lp.figCap}>As camadas de proteção em torno do processo — da segurança inerente e do BPCS, passando pelas funções instrumentadas (SIF), até as medidas de mitigação após a perda de contenção. O LOPA credita apenas as camadas que são <strong>independentes</strong> entre si e em relação ao evento iniciador.</figcaption>
        </figure>

        <SubTitle>As 4 regras de independência de uma IPL</SubTitle>
        <P>Nem toda salvaguarda conta como IPL. Para receber crédito no LOPA, a camada precisa satisfazer simultaneamente quatro critérios:</P>
        <IplRules />

        <Callout kind="info">O LOPA é <strong>semi-quantitativo</strong> — mais preciso que uma matriz de risco qualitativa, mais eficiente que um QRA completo. É o equilíbrio ideal para a maioria dos cenários de processo industrial.</Callout>
      </Section>

      {/* ── BLOCO 3 — Por que fazer LOPA ── */}
      <Section title="Por que fazer LOPA?" intro="Antes de comprometer capital com uma recomendação do HAZOP, o LOPA responde objetivamente se — e quanto — de proteção adicional é necessário." bg="#F4F6F8">
        <ValueCards />
      </Section>

      {/* ── BLOCO 4 — Quando contratar ── */}
      <Section title="Quando contratar um estudo de LOPA">
        <SubTitle>Projetos novos</SubTitle>
        <CheckList items={[
          "Recomendação de SIS gerada no HAZOP sem análise quantitativa prévia",
          "Determinação do SIL requerido para funções instrumentadas de segurança",
          "Projeto em fase FEED ou engenharia básica com cenários de alta consequência",
          "Requisito de licença ambiental ou regulatória (ANP, CETESB, NR-13)",
        ]} />
        <div style={{ height: 22 }} />
        <SubTitle>Plantas existentes</SubTitle>
        <CheckList items={[
          "Auditoria ou revalidação das camadas de proteção independentes (IPL) existentes",
          "Modificação de processo com impacto nas camadas de proteção (MoC)",
          "Questionamento de órgão regulador sobre a adequação das proteções",
          "Due diligence em M&A com avaliação de risco de ativos industriais",
        ]} />
      </Section>

      {/* ── BLOCO 5 — Metodologia (7 passos) ── */}
      <Section title="Metodologia — os 7 passos da análise" intro="Nossa condução segue o roteiro consagrado do CCPS, com rastreabilidade completa de premissas, fontes de dados e resultados por cenário." bg="#F4F6F8">
        <StepsVertical steps={[
          { t: "Seleção e definição dos cenários", d: "Cenários de alta consequência identificados no HAZOP, com evento de topo claramente definido e consequência caracterizada." },
          { t: "Evento Iniciador e frequência", d: "Identificação da causa raiz do cenário e atribuição de frequência com base em dados do CCPS e no histórico da indústria." },
          { t: "Modificadores condicionais", d: "Aplicação de probabilidade de ignição, ocupação da área e probabilidade de falha humana, quando aplicáveis ao cenário." },
          { t: "Identificação e avaliação das IPLs", d: "Cada salvaguarda candidata é testada contra as 4 regras de independência — só recebe crédito a que as satisfaz integralmente." },
          { t: "Atribuição de PFD por IPL", d: "PFDavg de cada camada com base em CCPS Guidelines, dados do fabricante ou cálculo específico documentado." },
          { t: "Cálculo do risco mitigado", d: "Frequência mitigada = IE × modificadores × ∏ PFD das IPLs, comparada ao critério de tolerabilidade aplicável." },
          { t: "Conclusão: tolerável ou gap de proteção", d: "Se houver gap, define-se a necessidade de IPL adicional e o PFD requerido — base direta para a determinação do SIL." },
        ]} />
      </Section>

      {/* ── BLOCO 6 — Entregáveis ── */}
      <Section title="O que você recebe">
        <DeliverableGrid items={[
          { icon: "file-text", t: "Relatório técnico LOPA", d: "Metodologia, premissas, fontes de dados e resultados por cenário, com rastreabilidade completa da análise." },
          { icon: "bar-chart", t: "Planilhas de análise", d: "Formato CCPS por cenário: evento iniciador, modificadores, IPLs, PFD, frequência mitigada e conclusão." },
          { icon: "layers", t: "Matriz de resultados", d: "Resumo visual de todos os cenários com status — tolerável, gap de proteção ou SIL requerido." },
          { icon: "shield-check", t: "Ficha de IPL", d: "Para cada IPL avaliada: documentação de independência, PFD assumido e a base técnica do crédito." },
          { icon: "alert-triangle", t: "Relatório de gaps e recomendações", d: "Cenários com gap de proteção e sugestões de IPL adicional ou de SIL requerido, priorizados por criticidade." },
          { icon: "clipboard-check", t: "Apresentação executiva", d: "Síntese para a diretoria em linguagem de risco de negócio — decisão fundamentada sem jargão." },
        ]} />
      </Section>

      {/* ── BLOCO 7 — Normas ── */}
      <Section title="Normas e referências aplicadas" bg="#F4F6F8">
        <NormTable rows={[
          { n: "CCPS Guidelines", d: "Layer of Protection Analysis (AIChE/CCPS) — referência fundamental para LOPA e IPLs" },
          { n: "IEC 61511 Anexo F", d: "LOPA como método de classificação de SIL" },
          { n: "IEC 61511-1:2016", d: "Cláusula 9 — análise de risco e critério de tolerabilidade" },
          { n: "ANSI/ISA-84", d: "Aplicação de SIS — complemento norte-americano à IEC 61511" },
          { n: "NR-13 / ANP", d: "Referências regulatórias brasileiras para instalações de processo" },
        ]} />
        <RelatedServices exclude="lopa.html" />
      </Section>

      {/* ── BLOCO 8 — Bridge para SIL ── */}
      <SilBridge />

      {/* ── BLOCO 9 — FAQ ── */}
      <Section title="Perguntas frequentes" bg="#F4F6F8">
        <FaqList items={[
          { q: "O LOPA substitui o HAZOP?", a: "Não. São complementares: o HAZOP identifica os cenários de risco e as salvaguardas existentes de forma qualitativa; o LOPA quantifica se essas salvaguardas são suficientes para os cenários de alta consequência e determina se uma proteção adicional é necessária. O LOPA, na prática, nasceu dentro do HAZOP e muitas determinações simples podem ser feitas no próprio estudo." },
          { q: "Quando usar LOPA, Risk Graph ou QRA?", a: "O Risk Graph é uma triagem qualitativa rápida; o LOPA é semi-quantitativo e adequado à maioria dos cenários de processo; o QRA é totalmente quantitativo e reservado a cenários de altíssima consequência ou exigência regulatória específica (ex.: estudo de análise de risco para licenciamento). O LOPA é o ponto de equilíbrio entre esforço e precisão." },
          { q: "O que é uma IPL? Toda salvaguarda conta?", a: "Uma IPL (Independent Protection Layer) é uma camada de proteção que reduz a frequência ou a consequência de um cenário e que satisfaz quatro regras: independência do evento iniciador, independência das demais IPLs, confiabilidade documentada (PFD conhecido) e auditabilidade. Salvaguardas que não atendem a esses critérios — por exemplo, que compartilham uma causa comum — não recebem crédito no LOPA." },
          { q: "Qual critério de tolerabilidade de risco é usado?", a: "Usa-se o critério definido pela própria empresa (matriz corporativa de risco) ou, quando aplicável, o critério do regulador. Quando o cliente não possui um critério formal, apoiamos na definição de um critério de tolerabilidade consistente com referências do CCPS e com a prática regulatória brasileira." },
          { q: "A PSM Expert faz LOPA standalone ou apenas vinculado ao HAZOP?", a: "Realizamos das duas formas: LOPA integrado ao HAZOP (aproveitando os cenários já identificados, com maior eficiência) e LOPA standalone sobre cenários selecionados, auditoria de IPLs existentes ou revalidação. A escolha depende do contexto e da maturidade da documentação disponível." },
          { q: "O LOPA tem validade? Precisa ser refeito?", a: "Deve ser revisado sempre que houver modificação de processo que afete as camadas de proteção (via gerenciamento de mudanças — MoC) e periodicamente junto com a revisão do HAZOP. Alterações em equipamentos, intervalos de teste ou premissas de PFD impactam diretamente o resultado da análise." },
          { q: "Como o LOPA se relaciona com a determinação de SIL?", a: "Quando o LOPA conclui que as camadas existentes não bastam, o gap de proteção define o PFD requerido de uma nova função instrumentada — e esse PFD corresponde a um nível SIL. A verificação de que o SIS atinge esse SIL, a elaboração da SRS e o ciclo de vida do sistema são tratados no nosso estudo dedicado de SIS / SIF / SIL." },
        ]} />
      </Section>

      <CtaFinal
        title="Precisa avaliar se suas camadas de proteção são suficientes?"
        sub="Realizamos LOPA standalone, integrado ao HAZOP ou como parte de auditoria de IPLs. Proposta técnica em até 48h." />
      <Footer />
    </React.Fragment>
  );
}

// ── Estilos locais ──
const lpc = {
  crumbWrap: { background: "#06172C" },
  crumbInner: { maxWidth: 980, margin: "0 auto", padding: "12px 32px", display: "flex", alignItems: "center", gap: 9, flexWrap: "wrap" },
  crumbLink: { fontFamily: "'IBM Plex Mono', monospace", fontSize: 12, color: "rgba(255,255,255,.6)", textDecoration: "none" },
  crumbSep: { color: "rgba(255,255,255,.3)", fontSize: 12 },
  crumbCur: { fontFamily: "'IBM Plex Mono', monospace", fontSize: 12, color: "#F5A623" },
};

const lp = {
  // fórmula
  formulaWrap: { background: "#071C36", borderRadius: 12, padding: "26px 28px", margin: "26px 0 8px" },
  formulaLabel: { fontFamily: "'IBM Plex Mono', monospace", fontSize: 11.5, letterSpacing: ".12em", textTransform: "uppercase", color: "#F5A623", marginBottom: 16 },
  formula: { display: "flex", flexWrap: "wrap", alignItems: "center", gap: "10px 12px" },
  fTerm: { fontFamily: "'IBM Plex Mono', monospace", fontSize: 14, color: "#fff", background: "rgba(255,255,255,.08)", border: "1px solid rgba(255,255,255,.16)", borderRadius: 7, padding: "9px 13px" },
  fOp: { fontFamily: "'Barlow Condensed', sans-serif", fontSize: 22, fontWeight: 700, color: "rgba(255,255,255,.55)" },
  fEq: { fontFamily: "'Barlow Condensed', sans-serif", fontSize: 26, fontWeight: 700, color: "#F5A623" },
  fResult: { fontFamily: "'IBM Plex Mono', monospace", fontSize: 14, fontWeight: 500, color: "#071C36", background: "#F5A623", borderRadius: 7, padding: "9px 13px" },
  formulaFoot: { fontFamily: "'IBM Plex Sans', sans-serif", fontSize: 13.5, lineHeight: 1.55, color: "rgba(255,255,255,.66)", marginTop: 16 },
  // figura
  figure: { margin: "30px 0 8px", padding: 0 },
  figImg: { width: "100%", height: "auto", display: "block", borderRadius: 12, border: "1px solid #E8ECF1", boxShadow: "0 6px 22px rgba(7,28,54,.12)" },
  figCap: { fontFamily: "'IBM Plex Sans', sans-serif", fontSize: 13, lineHeight: 1.6, color: "#6B7785", margin: "14px 4px 0", textWrap: "pretty" },
  // subtítulo
  subTitle: { fontFamily: "'Barlow Condensed', sans-serif", fontWeight: 700, fontSize: 22, color: "#17304D", margin: "30px 0 14px", textTransform: "uppercase", letterSpacing: ".01em" },
  // regras de IPL
  rulesGrid: { display: "grid", gridTemplateColumns: "repeat(2,1fr)", gap: 16, marginTop: 8 },
  ruleCard: { display: "flex", gap: 16, background: "#fff", border: "1px solid #E8ECF1", borderRadius: 10, padding: "20px 22px", alignItems: "flex-start" },
  ruleNum: { flex: "none", fontFamily: "'Barlow Condensed', sans-serif", fontWeight: 800, fontSize: 26, color: "#F5A623", lineHeight: 1, marginTop: 2 },
  ruleT: { fontFamily: "'Barlow Condensed', sans-serif", fontWeight: 700, fontSize: 18, color: "#071C36", margin: "0 0 6px", textTransform: "uppercase" },
  ruleD: { fontFamily: "'IBM Plex Sans', sans-serif", fontSize: 14, lineHeight: 1.58, color: "#6B7785", margin: 0 },
  // value cards
  valGrid: { display: "grid", gridTemplateColumns: "repeat(3,1fr)", gap: 18 },
  valCard: { background: "#fff", border: "1px solid #E8ECF1", borderTop: "3px solid #F5A623", borderRadius: 10, padding: "24px 22px" },
  valIcon: { width: 46, height: 46, borderRadius: 10, background: "#F4F6F8", display: "flex", alignItems: "center", justifyContent: "center", marginBottom: 14 },
  valT: { fontFamily: "'Barlow Condensed', sans-serif", fontWeight: 700, fontSize: 21, color: "#071C36", margin: "0 0 8px", textTransform: "uppercase", lineHeight: 1.08 },
  valD: { fontFamily: "'IBM Plex Sans', sans-serif", fontSize: 14, lineHeight: 1.6, color: "#6B7785", margin: 0 },
  // bridge
  bridgeSection: { background: "linear-gradient(150deg,#071C36 0%,#06172C 100%)" },
  bridgeInner: { maxWidth: 900, margin: "0 auto", padding: "52px 32px", borderLeft: "4px solid #F5A623" },
  bridgeKicker: { fontFamily: "'IBM Plex Mono', monospace", fontSize: 12, letterSpacing: ".12em", textTransform: "uppercase", color: "#F5A623", marginBottom: 14 },
  bridgeText: { fontFamily: "'IBM Plex Sans', sans-serif", fontSize: 19, lineHeight: 1.6, color: "#fff", margin: "0 0 24px", maxWidth: 720, textWrap: "pretty" },
  bridgeLink: { display: "inline-flex", alignItems: "center", gap: 9, fontFamily: "'IBM Plex Sans', sans-serif", fontWeight: 600, fontSize: 15, color: "#071C36", background: "#F5A623", borderRadius: 8, padding: "13px 22px", textDecoration: "none" },
};

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