1import{J as y,O as n,Q as r,b8 as kn,iL as xi,ao as _e,a4 as yo,a6 as $r,b$ as Qo,c0 as Jo,c1 as ea,aq as nn,bq as hi,bV as gi,bW as bi,c2 as vi,ag as jn,ab as Ar,aa as Tr,S as wr,d7 as Kn}from"./vendor-H79NKlR3.js";import{a as it,e as Sn,v as yi,u as _i,d as Er}from"./index-Bqcvp0_M.js";import{cn as Cr,dt as Fr,f as Nr}from"./ProtectedAppRoutes-BMv270TH.js";import{d as Mr}from"./useHazardRegisterLive-CqtEwhoU.js";import{aO as Dr,a8 as Nn,bg as Rr,bh as ta,bi as Lr,O as Ir,i as w,h as N,bj as Or,ac as Pr,ad as Wr,ae as Br,a2 as zr,a9 as Hr,bk as _o,bl as $n,bm as Ur,bn as Gr,bo as na,bp as oa,aa as ki,bq as ji,br as Vr,o as qr,a7 as aa,a6 as Xr,z as Kr,ai as Yr,t as Zr,r as Ct,aA as Qr,j as Jr,al as el,au as ia,bd as tl,be as on,aL as Mn,aQ as nl,aD as gt,aM as ol,aN as al,aP as il}from"./FdmCardKit-iPeeSZoY.js";import"./vendor-charts-Dhre_-zM.js";import"./vendor-date-D2dqegYk.js";import"./preload-helper-BXl3LOEh.js";import"./vendor-net-XAFgdCjt.js";import"./CookieConsentManager-BVZ8cDwn.js";import"./hazardRegisterStorage-WNghb4Ws.js";const Xe="/safety-audit-reports/";function Si(e){return e?`${Xe}${e}/pdf/`:""}async function sl(e={}){return(await it.get(Xe,{params:e})).data}async function rl(e={}){return(await it.get(`${Xe}recent-flights/`,{params:e})).data}async function ll(e){return(await it.post(`${Xe}generate/`,{flight_id:e})).data}async function cl(e){return(await it.post(`${Xe}acquire-evidence/`,{flight_id:e})).data}async function dl(e,{force:t=!1}={}){return(await it.post(`${Xe}capture-external/`,{flight_id:e,force:!!t})).data}async function ul(e){return(await it.get(`${Xe}${e}/pdf/`,{responseType:"blob"})).data}async function pl(e){return(await it.post(`${Xe}export-pdf/`,{flight_id:e},{responseType:"blob"})).data}async function fl(e){return(await it.get(`${Xe}period-pdf/`,{params:{month:e},responseType:"blob",timeout:12e4})).data}const Ie={getReports:sl,getRecentFlights:rl,acquireEvidence:cl,captureExternalEvidence:dl,generateReport:ll,downloadPdf:ul,exportPdf:pl,exportPeriodPdf:fl,getPdfUrl:Si},Dn=["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],ml=["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],xl=/^(\d{4})-(\d{2})-(\d{2})$/,hl=/T(\d{2}):(\d{2})/,$i=new Intl.NumberFormat("pt-BR");function Ai(e){return Array.isArray(e)?e:Array.isArray(e?.results)?e.results:Array.isArray(e?.reports)?e.reports:[]}function Rn(e){return Array.isArray(e)?e:Array.isArray(e?.results)?e.results:Array.isArray(e?.flights)?e.flights:[]}function me(e){return String(e).padStart(2,"0")}function Ke(e){if(!e)return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;const t=String(e).trim(),o=t.match(xl);if(o)return new Date(Number(o[1]),Number(o[2])-1,Number(o[3]));const a=new Date(t);return Number.isNaN(a.getTime())?null:a}function Ti(e){const t=String(e||"").match(hl);return t?`${t[1]}:${t[2]}`:""}function wi(e){const t=String(e||"").match(/^(\d{1,2}):(\d{2})/);return t?Number(t[1])*60+Number(t[2]):null}function dt(e){if(!Number.isFinite(e)||e<=0)return"â";const t=Math.round(e);return`${Math.floor(t/60)}h${me(t%60)}`}function ko(e){return!Number.isFinite(e)||e<=0?"0":(e/60).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:1})}function an(e){return Number.isFinite(Number(e))?$i.format(Number(e)):"â"}function Ee(e){return e==null||e===""||!Number.isFinite(Number(e))?"â":`${$i.format(Math.round(Number(e)))} kg`}function jo(e){return Dn[e]||""}function Ei(e){return ml[e]||""}function jt(e){const t=Ke(e);return t?`${me(t.getDate())} ${Dn[t.getMonth()]} ${t.getFullYear()}`:""}function xn(e){const t=Ke(e);return t?`${me(t.getDate())} ${Dn[t.getMonth()]}`:""}function Gt(e){const t=Ke(e);return t?`${me(t.getDate())}/${me(t.getMonth()+1)}`:""}function bt(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?"":`${me(t.getDate())} ${Dn[t.getMonth()]} · ${me(t.getHours())}:${me(t.getMinutes())}`}function V(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?"":`${me(t.getHours())}:${me(t.getMinutes())}`}function ke(e,t){const o=String(e||"").trim();return o.length<=t?o:`${o.slice(0,t-1)}â¦`}function $(e,t,o){return`${e} ${e===1?t:o}`}function gl(e){return String(e||"").trim().toUpperCase().replace(/[^A-Z0-9]/g,"")}function Ot(e){return String(e||"").trim().replace(/-\d{4}$/,"")}function Yn(){return String(window.location?.pathname||"").startsWith("/v2")?"/v2":""}const Ci={edb:"/edb-anac",checklist:"/flight-checklist",frat:"/risk-assessment/frat",debrief:"/flight-debrief",aircraft:"/aircraft",passengers:"/flight-passengers",fdm:"/fdm"},H={system:"system",crew:"crew",operator:"operator",safety_officer:"safety_officer"};function Fi(e,t){const o=Ci[e];return o?e==="passengers"&&t?`${o}/${t}`:o:""}const So={action:"Recapturar",target:"capture",owner:H.system},fe=(e,t)=>
1({action:e,target:t,owner:H.crew}),bl=(e,t)=>({action:e,target:t,owner:H.operator}),sa=(e,t)=>({action:e,target:"fdm",owner:t,dimension:"APR"}),ra={title:"Manifesto · Passageiros",reason:"Passageiros a bordo sem nome e documento lançados no manifesto.",...fe("Abrir passageiros","passengers"),dimension:"PAX"},sn=e=>({...So,dimension:"MET",captureSlot:["metar",e]}),rn=e=>({...So,dimension:"NTM",captureSlot:["notams",e]}),la={missing_departure_metar:{title:"METAR · Origem @ ETD",reason:"METAR da origem na hora da partida ainda não foi congelado.",...sn("origin_etd")},missing_destination_etd_metar:{title:"METAR · Destino @ ETD",reason:"METAR do destino na hora da partida ainda não foi congelado.",...sn("destination_etd")},missing_arrival_metar:{title:"METAR · Destino @ chegada",reason:"METAR do destino na hora do pouso ainda não foi congelado.",...sn("destination_eta")},missing_departure_notam:{title:"NOTAM · Partida",reason:"NOTAMs do aeródromo de partida ainda não foram congelados.",...rn("departure")},missing_arrival_notam:{title:"NOTAM · Chegada",reason:"NOTAMs do aeródromo de chegada ainda não foram congelados.",...rn("arrival")},missing_origin_eta_metar:{title:"METAR · Origem @ ETA",reason:"METAR da origem no horário de ETA ainda não foi congelado.",...sn("origin_eta")},missing_destination_etd_notam:{title:"NOTAM · Destino @ ETD",reason:"NOTAMs do destino no horário de ETD ainda não foram congelados.",...rn("destination_etd")},missing_origin_eta_notam:{title:"NOTAM · Origem @ ETA",reason:"NOTAMs da origem no horário de ETA ainda não foram congelados.",...rn("origin_eta")},missing_fuel_reserve:{title:"CombustÃvel · Perna no eDB",reason:"A perna ainda não tem registro no eDB â uplift, combustÃvel final e reserva ficam em aberto.",...fe("Abrir eDB","edb"),dimension:"CMB"},missing_final_fuel:{title:"CombustÃvel · COMB FIN",reason:"CombustÃvel final da perna ainda não registrado no eDB.",...fe("Abrir eDB","edb"),dimension:"CMB"},missing_burn_rate:{title:"CombustÃvel · Consumo médio",reason:"Consumo médio (kg/h) não cadastrado na aeronave â necessário para calcular endurance.",...bl("Abrir aeronaves","aircraft"),dimension:"CMB"},missing_alternate_fuel:{title:"CombustÃvel · Alternado",reason:"CombustÃvel do alternado desconhecido â o navlog do plano de voo não foi anexado à perna.",...fe("Abrir checklist","checklist"),dimension:"CMB"},missing_weight_balance:{title:"Manifesto · Peso e balanceamento",reason:"Load sheet (ZFW, TOW e LW contra os limites) não anexado à perna.",...fe("Abrir checklist","checklist"),dimension:"PAX"},missing_departure_fuel:{title:"Manifesto · CombustÃvel na partida",reason:"CombustÃvel a bordo na partida não registrado no eDB nem no checklist.",...fe("Abrir eDB","edb"),dimension:"PAX"},missing_passenger_documents:ra,missing_manifest:ra,missing_performance_data:{title:"Performance · Análise de pista",reason:"Análise de pista (distância requerida à disponÃvel) não anexada à perna.",...fe("Abrir checklist","checklist"),dimension:"PRF"},missing_approved_flight_plan:{title:"FPL · CGNA/DECEA",reason:"Plano de voo aprovado (CGNA/DECEA) ainda não registrado.",...fe("Abrir checklist","checklist"),dimension:"FPL"},missing_tankering_analysis:{title:"Tankering · Análise",reason:"Análise de fuel tankering ainda não registrada para a perna.",...fe("Abrir checklist","checklist"),dimension:"CMB"},missing_sigmet_gamet:{title:"SIGMET/GAMET",reason:"Revisão de SIGMET/GAMET não registrada no checklist nem capturada na partida.",...fe("Abrir checklist","checklist"),dimension:"MET"},missing_nasa_tlx:{title:"NASA-TLX · Pós-voo",reason:"Avaliação NASA-TLX da tripulação não submetida.",...fe("Abrir debrief","debrief"),dimension:"TLX"},missing_debrief:{title:"Debrief · Pós-voo",reason:"Debrief operacional pós-voo não registrado.",...fe("Abrir debrief","debrief"),dimension:"DBF"},missing_checklist:{title:"Checklist Operacional",reason:"Checklist Operacional ainda não preenchido para esta perna.",...fe("Abrir checklist","checklist"),dimension:"CHK"},missing_efrat:{title:"eFRAT · Pré-voo",reason:"eFRAT pré-voo não enviado.",...fe("Abrir eFRAT","frat"),dimension:"FRT"},fdm_analysis_pending:{title:"FDM · Análise do servidor",reason:"Gravação do iPhone recebida; a análise do servidor ainda não terminou (dados provisórios).",...sa("Abrir no FDM",H.system)},fdm_finding_unreviewed:{title:"FDM · Achados a revisar",reason:"Eventos de atenção detectados na gravação do iPhone aguardam a revisão do Safety (Detectado · não revisado).",...sa("Revisar no FDM",H.safety_officer)}};function Ln(e){return la[e]?la[e]:{title:"Evidência pendente",reason:String(e).replace(/_/g," "),...So,action:"Capturar agora",dimension:null}}function vl(e){return e?.owner===H.system}function Vt(e){return Object.values(H).includes(e?.owner)?e.owner:e?.system?H.system:H.crew}const yl=Object.freeze(["available","provisional","processing","failed","pilot_first_window","restricted","missing"]),_l=new Set(["available","provisional","processing","failed"]),Ni=Object.freeze(["DEC","APR"]);function re(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Ye(e){if(!e||typeof e!="object")return"missing";const t=String(e.status||"");return yl.includes(t)&&t!=="missing"?t:"processing"}function qt(e){return _l.has(Ye(e))}const kl={available:{label:"Verificado",tone:"ok"},provisional:{label:"Provisório",tone:"warn"},processing:{label:"Processando",tone:"warn"}
1,failed:{label:"Falha de análise",tone:"warn"},pilot_first_window:{label:"Janela do piloto",tone:"neutral"},restricted:{label:"Restrito",tone:"neutral"},missing:{label:"Sem gravação",tone:"neutral"}};function Nt(e){return e?.recorder_version||"QAR iOS"}function jl(e,{archived:t=!1}={}){switch(Ye(e)){case"available":return`${Nt(e)} · verificado no servidor`;case"provisional":return`${Nt(e)} · provisório no dispositivo`;case"processing":return`${Nt(e)} · análise em andamento no servidor`;case"failed":return`${Nt(e)} · análise do servidor falhou`;case"pilot_first_window":{const a=Nn(e.available_after);return a?`janela do piloto até ${a}`:"janela do piloto"}case"restricted":return"detalhes restritos";default:return t?"sem dados de voo nesta versão salva":"sem sessão vinculada a esta perna"}}function Sl(e,t,o,a){switch(e){case"available":return"Recompute do servidor sobre a gravação do iPhone a bordo. Evidência pós-voo derivada do telefone â não é QAR certificado; o que o sensor não mede aparece como âNão medidoâ, nunca como OK.";case"provisional":return"Estimativa do dispositivo â o recompute autoritativo do servidor ainda não rodou para esta perna. Os números podem mudar e não entram no score até a verificação.";case"processing":return"A gravação chegou ao servidor e a análise está em andamento. Nada desta perna entra no dossiê até a verificação.";case"failed":return"A análise do servidor falhou para esta gravação. Nada desta perna entra no dossiê até uma nova análise â a falha é do sistema, não da tripulação.";case"pilot_first_window":return`DisponÃvel para a empresa após ${Nn(t?.available_after)||"a janela do piloto"} â privacidade do piloto. Até lá só o piloto vê os dados deste voo; o dossiê mostra apenas que a gravação existe.`;case"restricted":return"Detalhes restritos â seu perfil não tem acesso aos dados de voo (FDM). O estado da gravação aparece aqui; os valores não.";default:return a?"Esta versão salva da auditoria não traz dados de voo (FDM). A leitura ao vivo mostra a gravação do iPhone quando a perna tiver uma.":`Nenhuma sessão do iPhone foi casada com a perna${o?` ${o}`:""}. Sem gravação, o dossiê não tem dados medidos de aproximação, pouso e eventos â um voo sem eventos por falta de captura não é um voo sem exposição.`}}function ln(e,t,o){const a=o?ki(t):null;return{k:e,v:a||"não medido",muted:!a}}function $l(e){const t=re(e),o=a=>w(a)?`${N(a)}%`:"â";return!w(t.departure_pct)&&!w(t.arrival_pct)?null:`SaÃda ${o(t.departure_pct)} · Chegada ${o(t.arrival_pct)}`}function Mi(e){const t=re(e?.events);if(!w(t.total))return null;const o=Number(t.attention??0);return{total:Number(t.total),attention:o,text:`${N(t.total)}${o?` · ${o} atenção`:""}`}}function Al(e){const t=Ye(e);if(t==="missing")return[{k:"Qualidade",v:"sem gravação",muted:!0}
1,{k:"Cobertura GPS",v:"sem gravação",muted:!0},{k:"Eventos",v:"sem gravação",muted:!0}];if(!qt(e))return[];const o=t==="available",a=zr(e.recording_quality),i=o?$l(e.coverage):null,l=o?Mi(e):null,c=re(e.oooi),d=t==="failed"?"análise falhou":"aguardando servidor",u=[{k:"Qualidade",v:a||"não medido",muted:!a},{k:"Cobertura GPS",v:o?i||"não medido":d,muted:!i},{k:"Eventos",v:o?l?.text||"não medido":d,muted:!l,tone:l?.attention?"warn":void 0},ln("Partida",c.out,!0),ln("Decolagem",c.off,!0),ln("Pouso",c.on,!0),ln("Corte",c.in,!0)];if(o){const p=e.flight_time||Hr(c.off,c.on);u.push({k:"Tempo de voo",v:p||"â",muted:!p})}return u}function Di(e,t,o){return`${N(e)} ${Number(e)===1?t:o}`}function Tl(e,t=""){if(!qt(e))return"";const o=[];return e.app_build&&o.push(`app ${e.app_build}`),t&&o.push(`vinculado a ${t}`),e.registration&&o.push(e.registration),e.duplicate_sessions&&o.push(`${Di(e.duplicate_sessions,"outra gravação","outras gravações")} nesta perna â vale a primária`),o.join(" · ")}function wl(e){return!qt(e)||!e.app_commit?"":`commit ${String(e.app_commit).slice(0,12)}`}function El(e){if(!e||typeof e!="object")return null;const t=re(e.coverage),o=[];w(t.departure_pct)?o.push(`Cobertura GPS saÃda ${N(t.departure_pct)}%`):t.departure_publishable===!1&&o.push("SaÃda não observada na gravação");const a=re(e.events).open_departure;return w(a)&&o.push(Number(a)?Di(a,"achado a revisar","achados a revisar"):"nenhum achado a revisar"),o.length?o.join(" · "):null}function Ri(e){const t=Nn(e?.available_after);return t?`Valores ocultos até ${t}`:"Valores ocultos durante a janela do piloto"}function Cl(e){return!qt(e)||!e.session_ref?"":`/fdm/voos/${encodeURIComponent(String(e.session_ref))}`}function Li(e){const t=re(e);if(!w(t.findings))return null;const o=Number(t.unreviewed??0);return{findings:Number(t.findings),reviewed:Math.max(0,Number(t.findings)-o),unreviewed:o}}function Fl(e){const t=re(e?.events),o=Array.isArray(t.items)?t.items.filter(Boolean):[],a=Mi(e),i=o.map((u,p)=>{const f=Number(u.count)>1?`${N(u.count)} ocorrências`:"",h=u.review_state||"unreviewed";return{key:u.identity||`${u.slug}-${p}`,label:u.label||u.slug,detail:[String(u.detail||"").trim(),f&&!/ocorr/i.test(String(u.detail||""))?f:""].filter(Boolean).join(" · "),severity:Br(u),severityRank:u.positive?3:Nl[u.severity]??2,reviewLabel:Pr[h]||h,reviewed:Wr.has(h)}}).sort((u,p)=>u.severityRank-p.severityRank),l=a?.total??i.length,c=Li(e?.review);let d="Eventos derivados das métricas calculadas, em estado âDetectadoâ â nenhum foi validado por uma pessoa.";return c&&c.findings&&c.reviewed===c.findings?d="Eventos derivados das métricas calculadas â todos foram revisados por uma pessoa.":c&&c.reviewed>0&&(d=`Eventos derivados das métricas calculadas. ${c.reviewed} de ${c.findings} revisados por uma pessoa; os demais seguem em âDetectadoâ.`),{headline:l?`${N(l)} ${l===1?"evento":"eventos"} nesta perna`:"Nenhum evento detectado",chip:a?.attention?{label:`${a.attention} atenção`,tone:"warn"}:null,rows:i,more:l>i.length?l-i.length:0,footnote:d,emptyText:"Nenhum limite excedido nas métricas medidas desta perna."}}const Nl={high:0,caution:1,info:2},Ii={1:"1º terço da pista",2:"2º terço da pista",3:"último terço da pista"},Ml={1:"Toque no 1º terço da pista",2:"Toque no 2º terço da pista",3:"Toque no último terço da pista"},ca={1:"1º",2:"2º",3:"3º"},Dl=new Set(["curated","aisweb","rotaer","declared_curated","declared_aisweb","declared_rotaer"]);function Rl(e){const t=re(e);return t.touchdown_rules_version===ji||!!t.observation_state}function Ll(e){const t=e.observation_state||"not_observed",o=Vr.has(t),a=o&&Array.isArray(e.interval_m)&&e.interval_m.length===2?qr(e.interval_m[0],e.interval_m[1]):null,i=o?aa(e.distance_from_threshold_m):null,l=Xr(e.zone_spanned),c=o&&w(e.zone)?Number(e.zone):null,d=o?Kr(c,l):null,u=Yr(e.zone_probabilities),p=Zr(t)||"Contato não observado",f=Ct(e.observation_reason);let h=p;t==="estimated_supported"&&a?h=`${p} · ${a}`:t==="not_observed"&&f&&(h=`${p} · ${f}`);const b=Qr(e.long_landing_state);let x=null;b?x={label:b,tone:e.long_landing_state==="confirmed"?"warn":"neutral"}:d&&(x={label:`${d.charAt(0).toUpperCase()}${d.slice(1)}`,tone:"neutral"});let m=null,_=`· ${Ct(e.zone_withheld_reason)||"zona retida"}`;c?(m=Ii[c],_=`· zona ${c}`):d&&l.length>1&&(m=`entre o ${ca[l[0]]} e o ${ca[l[l.length-1]]} terço`,_=`· ${d}${u?` · ${u}`:""}`);let v="· impacto no suporte do telefone";
1w(e.nose_delay_s)&&(v=`· nariz +${Jr(e.nose_delay_s,1)} s`),e.bounce===!0?v+=" · com ressalto":e.bounce===!1&&(v+=" · sem ressalto");const A=w(e.firmness_ordinal)?`contato ${N(e.firmness_ordinal)} de 5`:null,F=w(e.gs_at_touchdown_kt)?e.gs_at_touchdown_kt:e.gs_kt,M=[{k:"Cabeceira â contato",v:i,note:a?`· ${a} (90 %)${t==="estimated_wide"?" · intervalo largo":""}`:`· ${f||Ct(`contact_${t}`)||"contato não estimado"}`},{k:"Zona de toque",v:m,note:_},{k:"Impacto no suporte",v:A,note:A?v:`· ${Ct(e.impact_withheld_reason)||Ct(`contact_${t}`)||"retido"}`,dashed:!A},{k:"GS no contato",v:w(F)?`${N(F)} kt`:null,note:w(F)?"· GS medida, não é IAS":"· contato não estimado",dashed:!w(F)}];if(o&&w(e.touchdown_to_taxi_m)){const U=w(e.taxi_speed_kt)?N(e.taxi_speed_kt):"30";M.push({k:"Contato â taxi",v:aa(e.touchdown_to_taxi_m),note:w(e.taxi_at_m)?`· até GS ⤠${U} kt · ${N(e.taxi_at_m)} m`:`· até GS ⤠${U} kt`})}if(o&&w(e.remaining_after_taxi_m)){const U=Number(e.remaining_after_taxi_m);if(U<0)M.push({k:"Pista restante",v:`â${N(-U)} m`,note:"· GS de taxi só além do fim da LDA"});else{const ge=w(e.lda_m)&&Number(e.lda_m)>0?` · ${Math.round(U/Number(e.lda_m)*100)}%`:"";M.push({k:"Pista restante",v:`${N(U)} m${ge}`,note:"· após atingir taxi"})}}const E=String(e.lda_source||"").toLowerCase(),T=Dl.has(E)?"declared":E?"geometry":null,D=e.params_calibrated_on!==void 0&&e.params_calibrated_on!==null&&!(Number(e.params_calibrated_on)>0),W=[e.aerodrome,e.runway].filter(Boolean).join(" ");return{version:ji,observationState:t,eyebrow:`FD03 · Pouso${W?` · ${W}`:""}`,headline:h,headlinePoint:t==="estimated_supported"?i:t==="estimated_wide"&&[a,i].filter(Boolean).join(" · ")||null,chip:x,intro:[o?"Contato do trem principal estimado no servidor por fusão de evidências, com o intervalo de 90 %.":`Contato sem posição publicada${f?` â ${f}`:""}: distância, zona e impacto ficam retidos.`,w(e.lda_m)?`${el(T,e.lda_m,e.lda_source)}.`:null,D?`${ia.charAt(0).toUpperCase()}${ia.slice(1)}.`:null].filter(Boolean).join(" "),tiles:M,footnote:"Impacto no suporte do telefone, na escala 1â5 â nunca carga da aeronave nem conclusão de manutenção. Velocidades são GS medida, nunca IAS."}}function Il(e){const t=re(e?.landing);if(Rl(t))return Ll(t);const o=w(t.zone)?Number(t.zone):null,a=(re(e?.events).items||[]).some(u=>u?.slug==="long_landing"),i=w(t.distance_from_threshold_m)?`${N(t.distance_from_threshold_m)} m${w(t.uncertainty_m)?` ±${N(t.uncertainty_m)} m`:""}`:null;let l="· ordinal";t.bounce===!0?l="· ordinal · com salto":t.bounce===!1&&(l="· ordinal · sem salto");const c=[{k:"Cabeceira â toque",v:i,note:i?"· servidor":"· toque não medido"},{k:"Zona de toque",v:o?Ii[o]:null,note:o?`· zona ${o}`:"· sem LDA publicada"},{k:"Firmeza",v:w(t.firmness_ordinal)?`${N(t.firmness_ordinal)} de 5`:null,note:l},{k:"GS no toque",v:w(t.gs_kt)?`${N(t.gs_kt)} kt`:null,note:w(t.gs_kt)?"· GS medida, não é IAS":"· fora do alcance do sensor",dashed:!w(t.gs_kt)}];if(w(t.touchdown_to_taxi_m)){const u=w(t.taxi_speed_kt)?N(t.taxi_speed_kt):"30";c.push({k:"Toque â taxi",v:`${N(t.touchdown_to_taxi_m)} m`,note:w(t.taxi_at_m)?`· até GS ⤠${u} kt · ${N(t.taxi_at_m)} m`:`· até GS ⤠${u} kt`})}if(w(t.remaining_after_taxi_m)){const u=w(t.lda_m)&&Number(t.lda_m)>0?` · ${Math.round(Number(t.remaining_after_taxi_m)/Number(t.lda_m)*100)}%`:"";c.push({k:"Pista restante",v:`${N(t.remaining_after_taxi_m)} m${u}`,note:"· após atingir taxi"})}const d=[t.aerodrome,t.runway].filter(Boolean).join(" ");return{eyebrow:`FD03 · Pouso${d?` · ${d}`:""}`,headline:o?Ml[o]:i?"Toque sem zona â sem LDA publicada":"Toque não observado",chip:a?{label:"Pouso longo",tone:"warn"}:o?{label:`Zona ${o}`,tone:"neutral"}:null,intro:`Distância da cabeceira ao toque recalculada no servidor, com a incerteza declarada.${w(t.lda_m)?` LDA ${N(t.lda_m)} m.`:""}`,tiles:c,footnote:"Firmeza é ordinal do acelerômetro â nunca conclusão de manutenção. Velocidades são GS medida, nunca IAS."}}function Ol(e,t){if(!e)return{gateFt:t,label:$n(t),evaluated:!1,result:null,resultTitle:na(t),note:na(t),cells:Object.fromEntries(Ur.map(a=>[a.key,{text:Gr,flag:!1,title:"",missing:!0}]))};const o=a=>({text:a??"â",flag:!1,title:"",missing:a==null});return{gateFt:t,label:$n(t),evaluated:!0,result:e.result||null,resultTitle:e.condition&&Pl[e.condition]||"",note:null,cells:{gs:o(N(e.gs_kt)),vs:o(_o(e.vs_fpm)),ramp:o(oa(e.path_dev_deg,1)),axis:o(w(e.lateral_dev_m)?N(Math.abs(Number(e.lateral_dev_m))):null),ias:o(oa(e.vref_delta_kt,0))}}}const Pl={in_cloud_estimate:"em IMC (acima do teto)",below_ceiling:"visual provável (abaixo do teto)",no_ceiling:"sem teto reportado",unknown:"sem METAR"};function Wl(e){return w(e)?Number(e)>=9999?"vis ⥠10 km":`vis ${N(e)} m`:null}const da={OK:"acima dos mÃnimos",BELOW:"abaixo dos mÃnimos no METAR",PARTIAL:"parcial (sem visibilidade reportada)"};function Bl(e){const t=re(e?.weather_minima),o=t.condition||re(e?.approach).condition||null;if(!o&&!e?.weather_minima)return null;const i=[{imc:"IMC",vmc:"VMC",marginal:"marginal",unknown:"condição desconhecida"}[o]||"condição desconhecida"];w(t.ceiling_ft)&&i.push(`teto ${N(t.ceiling_ft)} ft`);const l=Wl(t.visibility_m);return l&&i.push(l),t.observed_at&&i.push(`METAR ${ki(t.observed_at)}`),t.presumed_procedure&&da[t.margin_status]&&i.push(`${t.presumed_procedure} ${da[t.margin_status]}`),t.reference_note&&i.push(t.reference_note),`Condição no pouso: ${i.join(" · ")}`}function Oi(e){const t=re(e?.approach),o=re(e?.weather_minima),a=Array.isArray(t.gates)?t.gates:[],i=String(e?.terminal_rules_version||"").includes("v2")||a.some(p=>Number(p?.gate_ft)===300),l=[1e3,500,300].map(p=>Ol(a.find(f=>Number(f?.gate_ft)===p),p)),c=ta[o.condition||t.condition]?o.condition||t.condition:"unknown",d=t.outcome?{label:t.outcome_label||Ir[t.outcome]||t.outcome,tone:Lr[t.outcome]||"neutral"}
1:null,u=[t.aerodrome,t.runway].filter(Boolean).join(" ");return{eyebrow:`FD04 · Aproximação${u?` · ${u}`:""}`,headline:"Portões de 1.000, 500 e 300 ft",condition:{label:ta[c],tone:{vmc:"vmc",imc:"imc",marginal:"warn"}[c]||"neutral"},outcome:d,note:t.note||null,conditionLine:Bl(e),matrix:Or(l),attempts:w(t.attempts)&&Number(t.attempts)>1?`${N(t.attempts)} tentativas · mostra a última`:null,footnote:i?"Resultado do servidor por portão, com a incerteza declarada. Vertical é GPS: a VS barométrica lê a cabine pressurizada e fica retida.":"Comparação pelo valor medido â a incerteza do GPS ainda não entra no resultado. Vertical é GPS: a VS barométrica lê a cabine pressurizada e fica retida."}}const zl=[400,1e3,1500,3e3,"boundary"],Hl=["boundary",3e3,2e3,1500,1e3,500,"threshold"];function ua(e,t,o,a){const i=Array.isArray(re(t).gates)?t.gates:[];if(!i.length)return null;const l=e==="departure"?zl:Hl,c=[...i].sort((d,u)=>{const p=l.indexOf(d?.gate),f=l.indexOf(u?.gate);return(p<0?99:p)-(f<0?99:f)});return{key:e,title:`${o}${[t.aerodrome,t.runway].filter(Boolean).length?` · ${[t.aerodrome,t.runway].filter(Boolean).join(" ")}`:""}`,meta:a,rows:c.map(d=>({key:`${e}-${String(d?.gate)}`,gate:$n(d?.gate),alt:N(d?.height_aal_ft)??"â",gs:N(d?.gs_kt)??"â",gsLabel:w(d?.gs_kt)?`${N(d.gs_kt)} kt`:"â",ias:N(d?.est_ias_kt)??"â",vs:_o(d?.vs_fpm)??"â",width:w(d?.gs_kt)?`${Math.min(100,Math.round(Number(d.gs_kt)/340*100))}%`:"0%",withheld:!1,title:""}))}}function Ul(e){return{tables:[ua("departure",e?.departure,"SaÃda","decolagem até 10.000 ft"),ua("arrival",e?.arrival,"Chegada","10.000 ft até a cabeceira")].filter(Boolean),footnote:"IAS estimada = GS + vento do METAR (incerteza de ±10 kt ou mais); nunca medida."}}function Gl(e){const t=re(e?.learned);return(Array.isArray(t.items)?t.items.filter(a=>a?.text):[]).map(a=>({key:a.key||a.text,text:a.text,maturity:Rr[a.maturity||t.maturity]||null,muted:!1}))}function Vl(e){const t=Li(e?.review);if(!t||!t.findings)return null;const o=[];return t.reviewed&&o.push(`${t.reviewed} ${t.reviewed===1?"achado revisado":"achados revisados"}`),t.unreviewed&&o.push(`${t.unreviewed} a revisar`),o.join(" · ")}function ql(e,{flightLabel:t="",archived:o=!1}={}){const a=Ye(e),i=qt(e);return{state:a,hasValues:i,verified:a==="available",meta:jl(e,{archived:o}),disclaimer:Dr,chip:kl[a],monitoringTitle:a==="missing"?"Nenhuma gravação do iPhone":i?`Gravação iPhone · ${Nt(e)}`:"Gravação do iPhone",intro:Sl(a,e,t,o),facts:Al(e),buildLine:Tl(e,t),buildTitle:wl(e),reviewLine:i?Vl(e):null,pilotWindowPlaceholder:a==="pilot_first_window"?Ri(e):null,href:Cl(e),events:a==="available"?Fl(e):null,landing:a==="available"?Il(e):null,approach:a==="available"?Oi(e):null,profiles:a==="available"?Ul(e):null,learned:a==="available"?Gl(e):[]}}function Xl(e,t){return!e||e==="todas"||e==="voo"||e==="fdm"?!0:e==="pendencias"?Array.isArray(t?.missing_evidence)&&t.missing_evidence.length>0:!1}function Kl(e,t){return(e||[]).filter(a=>Ni.includes(a?.key)).length+(t&&typeof t=="object"?1:0)}const Yl={available:"complete",provisional:"partial",processing:"partial",failed:"fdm_failed",pilot_first_window:"pilot_window",restricted:"restricted"};function Zl(e){if(!e||typeof e!="object")return null;const t=Ye(e);return{source:"fdm",label:"FDM",status:Yl[t]||"partial",missing:Array.isArray(e.missing_evidence)?e.missing_evidence.filter(Boolean):[]}}const Ql={available:"Gravação do iPhone verificada no servidor.",provisional:"Gravação do iPhone com estimativa provisória do dispositivo â aguarda o servidor.",processing:"Gravação do iPhone em análise no servidor.",failed:"Gravação do iPhone recebida; a análise do servidor falhou."};function Jl(e){const t=Ye(e);return t==="missing"?null:t==="restricted"?"Detalhes restritos.":t==="pilot_first_window"?`DisponÃvel para a empresa após ${Nn(e.available_after)||"a janela do piloto"} â privacidade do piloto.`:String(e.summary_text||"").trim()||e.status_label||Ql[t]||null}const Pi="Dados de voo · FDM",ec=new Set(["completed","in_progress","closed","landed"]);function tc(e){return e?Array.isArray(e)?e:[e]:[]}function In(e){const t=e?.report_json||e?.json||e?.data||{};if(typeof t=="string")try{return JSON.parse(t)}catch{return{}}return t&&typeof t=="object"?t:{}}function nc(e){const t=e?.evidence||e?.report_json||{};return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function Wi({selectedReport:e,acquisition:t}){const o=In(e),a=nc(t);return Object.keys(a).length===0?o:{...o,...a,missing_evidence:a.missing_evidence??t?.missing_evidence??o?.missing_evidence??[]}}function Bi(e){const t=In(e)?.scoring_basis;return!t||typeof t!="object"||Array.isArray(t)||!("timing"in t)?null:{timing:t.timing??null,captureStates:t.capture_states??void 0,version:String(t.version||"")}}function oc({selectedReport:e,acquisition:t}){if(t)return{timing:t.timing??null,captureStates:t.capture_status?.states,limited:!1};const o=Bi(e);return o?{timing:o.timing,captureStates:o.captureStates,limited:!1}:{timing:void 0,captureStates:void 0,limited:!!e}}function $o({reportJson:e,selectedReport:t,acquisition:o}){const a=e?.missing_evidence??o?.missing_evidence??t?.missing_evidence??t?.missingEvidence;
1return tc(a).filter(Boolean)}function ac(e,t){if(Array.isArray(t.fields))return t.fields.reduce((a,[i,l])=>(e?.[l]!==void 0&&e?.[l]!==null&&(a[i]=e[l]),a),{});const o=[t.key,...t.aliases||[]];for(const a of o)if(e?.[a]!==void 0&&e?.[a]!==null)return e[a];return null}function ic({report:e,acquisition:t}){for(const o of[e,t,t?.evidence?.flight]){const a=Number(o?.leg_index),i=Number(o?.leg_count);if(Number.isFinite(a)&&a>0&&Number.isFinite(i)&&i>0)return{index:a,count:i}}return null}function zi({flightId:e,report:t,flight:o,acquisition:a}){const i=String(t?.flight_number||"").trim(),l=String(o?.flight_number||"").trim(),c=i||l||(e?`Voo ${e}`:"");if(!c)return"";const d=ic({report:t,acquisition:a});return d?`${c} · Perna ${d.index}/${d.count}`:c}function Hi({report:e,flight:t}){const o=String(t?.departure_airport||e?.departure_airport||"").trim(),a=String(t?.arrival_airport||e?.arrival_airport||"").trim();return!o&&!a?"":`${o||"â"} â ${a||"â"}`}function pa(e){return String(e||"").trim().toUpperCase().replace(/[^A-Z0-9]/g,"")}function Ui(e,t){const o=pa(t);return o?(Array.isArray(e)?e:[]).filter(a=>{const i=a?.hfacsAnalysis,l=i?.flightLink;return String(i?.status||"").toLowerCase()==="concluido"&&l?.linked===!0&&pa(l?.flightNumber)===o}).sort((a,i)=>String(i?.hfacsAnalysis?.completedAt||"").localeCompare(String(a?.hfacsAnalysis?.completedAt||""))):[]}function sc(e){return(Array.isArray(e?.hfacs?.levels)?e.hfacs.levels:[]).reduce((t,o)=>t+(Array.isArray(o?.factors)?o.factors:[]).filter(a=>String(a?.description||"").trim()).length,0)}function ro(e){const t=Ke(e);if(!t)return null;const o=new Date(t);return o.setHours(0,0,0,0),o}function rc(e,{today:t=new Date}={}){if(!e)return!1;const o=String(e?.status||"").toLowerCase();if(ec.has(o))return!0;const a=ro(e?.flight_date),i=ro(t);return!a||!i?!1:a.getTime()<=i.getTime()}function lc(e){if(!e)return 0;const t=ro(e?.flight_date),o=t?t.getTime():0,a=Number.isFinite(e?.id)?Number(e.id):0;return o+a}function Ao(e){if(!e)return"";const t=Ke(e);if(!t)return String(e);try{return t.toLocaleDateString("pt-BR",{day:"2-digit",month:"short",year:"numeric"})}catch{return t.toISOString().slice(0,10)}}function Gi(e){const t=String(e?.flight_number||`Voo ${e?.id||""}`).trim(),o=`${String(e?.departure_airport||"â").toUpperCase()} â ${String(e?.arrival_airport||"â").toUpperCase()}`,a=Ao(e?.flight_date||e?.departure_time);return[t,o,a].filter(Boolean).join(" · ")}function Vi(e){return Rn(e).filter(Boolean).map(t=>({value:String(t.id),label:Gi(t),flight:t})).filter(t=>t.value)}function To(e){if(!e)return"â";const t=new Date(e);if(Number.isNaN(t.getTime()))return"â";try{return t.toLocaleTimeString("pt-BR",{hour:"2-digit",minute:"2-digit"})}catch{return t.toISOString().slice(11,16)}}function qi(e,t){const o=e?.generated_at||e?.created_at,a=Ao(o),i=To(o),l=[a,i!=="â"?i:""].filter(Boolean).join(" · "),c=String(e?.status||"").toLowerCase()==="stale"?" (stale)":"";return`${t===0?"Ãltima auditoria":"Auditoria"}${l?` · ${l}`:""}${c}`}const fa={complete:{text:"completo",kind:"ok"},partial:{text:"parcial",kind:"warn"},missing:{text:"ausente",kind:"danger"},not_applicable:{text:"n/a",kind:"neutral"},fdm_failed:{text:"análise falhou",kind:"warn"},pilot_window:{text:"janela do piloto",kind:"neutral"},restricted:{text:"restrito",kind:"neutral"}},cc={metar:"METAR",notams:"NOTAM",fuel_reserve:"CombustÃvel",efrat:"eFRAT",checklist:"Checklist",manifest:"Manifesto",performance:"Performance",flight_plan:"FPL",tankering:"Tankering",sigmet_gamet:"SIGMET",nasa_tlx:"NASA-TLX",debrief:"Debrief",fdm:"FDM"},ma={read_only:"Leitura ao vivo (sem captura externa)",capture:"Captura externa executada",saved_report:"Relatório salvo (snapshot congelado)"};function On(e){const t=String(e||"").trim();return t?t.length>14?`${t.slice(0,8)}â¦${t.slice(-4)}`:t:""}function dc(e,t){if(e.some(a=>a.source==="fdm"))return e;const o=Zl(t?.fdm);return o?[...e,o]:e}function Xi({acquisition:e,selectedReport:t,reportJson:o}){if(e&&typeof e=="object"){const a=e.source_statuses&&typeof e.source_statuses=="object"?e.source_statuses:{};return{mode:e.mode==="capture"?"capture":"read_only",modeLabel:ma[e.mode==="capture"?"capture":"read_only"],evidenceHash:String(e.evidence_hash||""),timestamp:e.acquired_at||"",timestampLabel:"Lido em",schemaVersion:e.schema_version||o?.schema_version||"",snapshotId:e.snapshot_id??o?.snapshot_id??null,sourceStatuses:dc(Object.entries(a).map(([i,l])=>({source:i,label:cc[i]||i,status:String(l?.status||"missing"),missing:Array.isArray(l?.missing)?l.missing:[]}
1)),o),capture:e.capture||null,reportId:null,aiModel:"",promptVersion:""}}return t&&typeof t=="object"?{mode:"saved_report",modeLabel:ma.saved_report,evidenceHash:String(t.evidence_hash||""),timestamp:t.generated_at||t.created_at||"",timestampLabel:"Gerado em",schemaVersion:o?.schema_version||"",snapshotId:o?.snapshot_id??t.audit_snapshot??null,sourceStatuses:[],capture:null,reportId:t.id??null,aiModel:t.ai_model||o?.ai_provider_provenance?.model||"",promptVersion:t.prompt_version||""}:null}function uc(e){return e.missing.length?e.missing.map(t=>Ln(t).title).join(" · "):""}function Ki({reportJson:e,flight:t}){const o=e?.flight;if(!o||typeof o!="object"||!t||typeof t!="object")return[];const a=[],i=(l,c,d)=>{const u=String(c??"").trim(),p=String(d??"").trim();u&&p&&u.toUpperCase()!==p.toUpperCase()&&a.push({label:l,frozen:u,live:p})};return i("Data",o.flight_date,t.flight_date),i("Origem",o.departure_airport,t.departure_airport),i("Destino",o.arrival_airport,t.arrival_airport),i("Aeronave",o.aircraft_tail,t.aircraft_tail||t.aircraft_registration||t?.aircraft?.tail_number),a}async function Rt({reportId:e,downloadPdf:t=Ie.downloadPdf,openWindow:o=window.open,createObjectUrl:a=URL.createObjectURL,revokeObjectUrl:i=URL.revokeObjectURL,setTimeoutFn:l=window.setTimeout}={}){const c=o("","_blank");if(!c)throw new Error("popup_blocked");c.opener=null;try{const d=await t(e),u=a(d);c.location.href=u,l(()=>i(u),6e4)}catch(d){try{c.close?.()}catch{}throw d}}const xa="FDM · iPhone Zulbot",Yi=[{key:"DEC",label:"Decolagem e subida até 10.000 ft",short:"Decolagem",phase:"voo",source:xa},{key:"APR",label:"Aproximação â portões 1.000 / 500 / 300 ft",short:"Aproximação",phase:"voo",source:xa}],ha=Yi.map(e=>e.key),pc={key:"flight",label:"Voo medido",description:"Decolagem até 10.000 ft e aproximação nos portões de 1.000, 500 e 300 ft, medidas pelo iPhone a bordo.",dimensions:["DEC","APR"]},lt=Object.freeze({AVAILABLE:"available",PROVISIONAL:"provisional",PROCESSING:"processing",FAILED:"failed",PILOT_FIRST_WINDOW:"pilot_first_window",RESTRICTED:"restricted"});lt.PILOT_FIRST_WINDOW,lt.RESTRICTED;const fc="Arremetida após aproximação fora dos critérios â decisão correta",mc="Não exigido",xc="Em validação",hc=new Set(["within","outside","indeterminate"]);function at(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function gc(e){return Array.isArray(e)?e:[]}function Zi(e){return Number.isFinite(e)&&e>0?Math.trunc(e):0}function Qi(e,t,o){return`${e} ${e===1?t:o}`}function bc(e){const t=String(e||"").match(/^(\d{4})-(\d{2})-(\d{2})/);return t?`${t[3]}/${t[2]}/${t[1]}`:""}function vc(e){const t=e?new Date(e):null;if(!t||Number.isNaN(t.getTime()))return"";const o=a=>String(a).padStart(2,"0");return`${o(t.getUTCDate())}/${o(t.getUTCMonth()+1)} ${o(t.getUTCHours())}:${o(t.getUTCMinutes())}Z`}function Ji(e){const t=at(e).fdm;return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function yc(e,t){return at(gc(e.gates).find(o=>at(o).gate_ft===t))}function es(e){return e===lt.FAILED?["captura",{statusLabel:"Falha de análise",flag:"A análise do servidor falhou para esta gravação â falha do sistema, fora do Ãndice até a reanálise.",exception:"FDM sem análise"}]:e===lt.PROVISIONAL?["parcial",{flag:"Só o resumo provisório do iPhone â aguardando o recompute do servidor.",exception:"FDM provisório"}]:e!==lt.AVAILABLE?["parcial",{flag:"Gravação recebida; a análise do servidor ainda não terminou.",exception:"FDM em análise"}]:null}function _c(e){const t=es(String(e.status||""));if(t)return t;const o=at(e.coverage);if(o.departure_publishable!==!0){const i=o.departure_pct;return["parcial",{flag:Number.isFinite(i)?`Janela de saÃda retida: cobertura de GPS de ${i}% abaixo do mÃnimo publicável.`:"SaÃda não observada na gravação (sem janela de decolagem publicada).",exception:"SaÃda retida"}]}const a=Zi(at(e.events).open_departure);return a?["parcial",{flag:`${Qi(a,"achado","achados")} da saÃda aguardando a revisão do Safety.`,exception:"Achado a revisar"}]:["ok",{}]}function kc(e){const t=es(String(e.status||""));if(t)return t;const o=at(e.approach);if(!Object.keys(o).length)return["parcial",{flag:"Chegada não observada na gravação.",exception:"Chegada não observada"}];const a=String(o.outcome||""),i=o.go_around_after_outside===!0?fc:"";if(a==="unstable_continued")return String(o.outcome_review||"")!=="dism
1issed"?["lacuna",{statusLabel:"Fora abaixo de 300 ft",flag:"Fora dos critérios abaixo de 300 ft com pouso continuado â estimativa do iPhone ainda não descartada na revisão do Safety.",exception:"Fora abaixo de 300 ft",advisory:i}]:["parcial",{flag:"Desfecho descartado como falso positivo na revisão â sem leitura válida dos portões.",exception:"Desfecho descartado",advisory:i}];if(a==="stable"||a==="go_around"){if(a==="stable"){const d=[500,300].filter(u=>!hc.has(yc(o,u).result)).map(String);if(d.length)return["parcial",{flag:`Portão de ${d.join(" e ")} ft não avaliável na gravação.`,exception:"Portão não avaliável",advisory:i}]}const c=Zi(at(e.events).open_arrival);return c?["parcial",{flag:`${Qi(c,"achado","achados")} da chegada aguardando a revisão do Safety.`,exception:"Achado a revisar",advisory:i}]:a==="go_around"||i?["ok",{statusLabel:"Arremetida registrada",advisory:i}]:["ok",{}]}const l=String(o.note||"").trim().replace(/\.$/,"");switch(a){case"stabilized_late":{const c=Number.isFinite(Number(o.binding_gate_ft))&&o.binding_gate_ft!==null?Number(o.binding_gate_ft):null,d=c===null?"500":c.toLocaleString("pt-BR");return["parcial",{flag:`Estabilizada tarde (${c===null?"após 500 ft":`após o portão vinculante de ${d} ft`}): critérios fora no portão de ${d} ft ou entre ${d} e 300 ft.`,exception:"Estabilizada tarde",advisory:i}]}case"indeterminate":return["parcial",{flag:"Indeterminado: a incerteza do iPhone cruza o limite em algum critério dos portões.",exception:"Aproximação indeterminada",advisory:i}];case"not_assessable":return["parcial",{flag:`Portões não avaliáveis${l?` â ${l}`:""}.`,exception:"Portões não avaliáveis",advisory:i}];case"unknown":return["parcial",{flag:"Sem desfecho â gravação encerrada antes do fim da aproximação.",exception:"Sem desfecho",advisory:i}];default:return["parcial",{flag:"Portões de 500 e 300 ft ainda não avaliados pelo servidor (regras anteriores à escada de portões).",exception:"Portões não avaliados",advisory:i}]}}function jc(e){const t=String(e.status||"");if(t===lt.RESTRICTED)return{statusLabel:"Detalhes restritos",flag:"Perfil sem acesso aos dados FDM â situação não exibida, fora do Ãndice."};if(t===lt.PILOT_FIRST_WINDOW){const o=vc(e.available_after);return{statusLabel:"Janela do piloto",flag:`Dados disponÃveis para a empresa${o?` a partir de ${o}`:" depois da janela do piloto"}. Fora do Ãndice até lá.`}}return null}function Sc(e){const t=at(e.dimensions);if(t.active===!0)return null;const o=t.activation_date?bc(t.activation_date):"";return o?{statusLabel:mc,flag:`Perna anterior à ativação do FDM na auditoria (${o}). Mostrado, fora do Ãndice.`}:{statusLabel:xc,flag:"FDM em validação: a empresa ainda não definiu a data de ativação das dimensões FDM. Mostrado, fora do Ãndice."}}const lo={DEC:{ok:"A decolagem e a subida até 10.000 ft foram gravadas pelo iPhone e analisadas no servidor.",parcial:"A decolagem foi gravada, mas a análise ainda não fechou ou há um achado aguardando revisão.",captura:"A análise do servidor falhou para esta gravação. Não é falha da tripulação e não pesa na nota.",na:"Dados de voo medidos pelo iPhone, mostrados fora da nota."},APR:{ok:"A aproximação foi registrada e ficou dentro dos critérios acompanhados nos portões de 500 e 300 ft.",parcial:"A aproximação foi gravada, mas parte dos portões não pôde ser avaliada ou um achado aguarda revisão.",lacuna:"A estimativa do iPhone indica a aproximação fora dos critérios abaixo de 300 ft com pouso; aguarda a revisão do Safety.",captura:"A análise do servidor falhou para esta gravação. Não é falha da tripulação e não pesa na nota.",na:"Dados de voo medidos pelo iPhone, mostrados fora da nota."}},$c="A tripulação arremeteu: a decisão de arremeter é registrada como evento positivo.";function Ac(e,t,o){return e==="APR"&&t==="ok"&&o.statusLabel==="Arremetida registrada"?$c:lo[e]?.[t]||""}const Tc={ok:"completo",parcial:"parcial",lacuna:"lacuna",captura:"falha de captura"};function wc(e,t){const o=String(t.flag||t.advisory||"").trim();return`Leitura em validação: ${Tc[e]||e}${o?` â ${o}`:"."}`}function Ec(e,t){const o=Ji(e);if(!o)return[];const a=jc(o);if(a)return ha.map(c=>t(c,"na",{...a,ownerNote:lo[c].na}));const i={DEC:_c(o),APR:kc(o)},l=Sc(o);return ha.map(c=>{const[d,u]=i[c];if(l)return t(c,"na",{...l,flag:`${l.flag} ${wc(d,u)}`,validationStatus:d,ownerNote:lo[c].na});const p=Object.fromEntries(Object.entries(u).filter(([,f])=>f));return t(c,d,{...p,ownerNote:Ac(c,d,p)})})}const Xt=[{key:"pre",number:"02",title:"Planejamento e despacho",label:"Pré-voo"},{key:"voo",number:"03",title:"Execução",label:"Em voo"}
1,{key:"pos",number:"04",title:"Fechamento",label:"Pós-voo"}],Kt=[{key:"MET",label:"Meteorologia",short:"Meteorologia",phase:"pre",source:"METAR · TAF · SIGMET · REDEMET"},{key:"NTM",label:"NOTAMs",short:"NOTAM",phase:"pre",source:"AISWEB · DECEA"},{key:"FPL",label:"Plano de voo",short:"FPL",phase:"pre",source:"Checklist Operacional · CGNA"},{key:"CMB",label:"CombustÃvel",short:"CombustÃvel",phase:"pre",source:"eDB · navlog · Checklist"},{key:"PRF",label:"Performance de pista",short:"Performance",phase:"pre",source:"Análise de pista ForeFlight · Checklist"},{key:"FRT",label:"eFRAT e mitigação",short:"eFRAT",phase:"pre",source:"eFRAT Zulbot"},{key:"CHK",label:"Checklist",short:"Checklist",phase:"pre",source:"Checklist Operacional"},{key:"PAX",label:"Manifesto",short:"Manifesto",phase:"pre",source:"Load sheet · combustÃvel de partida · passageiros"},{key:"FAD",label:"Fadiga da tripulação",short:"Fadiga",phase:"pre",source:"Ãndice de fadiga · jornadas"},{key:"EXE",label:"Execução do voo",short:"Execução",phase:"voo",source:"eDB · Agenda"},{key:"TLX",label:"Carga de trabalho (NASA-TLX)",short:"NASA-TLX",phase:"voo",source:"NASA-TLX · WhatsApp/Web"},{key:"DBF",label:"Debrief e eventos",short:"Debrief",phase:"pos",source:"Flight Debrief"},{key:"EDB",label:"Diário de bordo",short:"eDB",phase:"pos",source:"eDB Logbook"}],wo=Object.fromEntries(Kt.map(e=>[e.key,e]));Object.assign(wo,Object.fromEntries(Yi.map(e=>[e.key,e])));const ts={ok:"Completo",parcial:"Parcial",lacuna:"Lacuna",captura:"Falha de captura",na:"N/A"},ns="Captura tardia",os={ok:1,parcial:.5,lacuna:0},co=new Set(["na","captura"]),Lt=[{key:"conforme",min:85,label:"Registros completos",segment:"Completos",headline:"Registros completos."},{key:"ressalvas",min:70,label:"Registros com ressalvas",segment:"Com ressalvas",headline:"Registros quase completos."},{key:"nao_conforme",min:-1/0,label:"Registros incompletos",segment:"Incompletos",headline:"Faltam registros para documentar a operação."}],Pn="Verificações operacionais a revisar",as="O registro indica um limite operacional não atendido. Requer revisão humana antes de qualquer conclusão.",vt=15,yt=30,De=45,hn=[{key:"baixo",label:"Risco baixo",short:"Baixo",max:vt},{key:"moderado",label:"Risco moderado",short:"Moderado",max:yt},{key:"alto",label:"Risco alto",short:"Alto",max:1/0}],Cc=new Set(["none","approved"]),is=new Set(["completed","stale","no_go"]),Fc={divergence:"Resposta divergente da evidência verificada â exige assinatura de outro aprovador.",policy:"A polÃtica de aprovação exige a assinatura do gestor.",score_band:"Escore na faixa que exige aprovação do gestor.",hard_stop:"O eFRAT marcou uma condição de no-go â exige aprovação formal do gestor."},Nc="A aprovação do gestor foi exigida e não foi registrada.",Mc=new Set(["fuel_final","fuel_onboard_arrival","fuel_kilograms","fuel_liters","fuel_gallons"]),ga=[["origin_etd","Origem @ ETD"],["destination_etd","Destino @ ETD"],["origin_eta","Origem @ ETA"],["destination_eta","Destino @ ETA"]],Dc=[["departure","Partida"],["arrival","Chegada"]],ba={origin_etd:{label:"Origem @ ETD",role:"Partida",moment:"ETD"},destination_etd:{label:"Destino @ ETD",role:"Destino na partida",moment:"ETD"},destination_eta:{label:"Destino @ chegada",role:"Chegada",moment:"pouso"}},Rc=[["departure","Partida"],["arrival","Chegada"]];function I(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function St(e){return Array.isArray(e)?e:[]}function Wn(e){const t=I(e);return(ga.some(([a])=>t[a])?ga:Dc).map(([a,i])=>({key:a,label:i,value:t[a]||null}))}function Bn(e){const t=I(e),o=St(t.required_slots).filter(a=>ba[a]);return o.length?o.map(a=>({key:a,...ba[a],value:t[a]||null})):Wn(t)}function zn(e){const t=I(e);return St(t.required_airports).length?Rc.map(([o,a])=>({key:o,label:a,value:t[o]||null})):Wn(t)}function va(e){return!!String(e.value?.raw_metar||"").trim()}function Eo(e){if(!e||e.status!=="available")return null;const t=Array.isArray(e.items)?e.items:[],o=Number.isFinite(e.total_items)?e.total_items:t.length,a=Number.isFinite(e.done_items)?e.done_items:t.filter(p=>p.checked).length,i=Number.isFinite(e.na_items)?e.na_items:t.filter(p=>p.na).length,l=Number.isFinite(e.completion_pct)?e.completion_pct:0,c=Array.isArray(e.gaps)?e.gaps.filter(
1Boolean):[],d=c.length,u={};for(const p of t){const f=p?.category||"Outros";u[f]||(u[f]=[]);const h=p.checked?"done":p.na?"na":"pending";u[f].push({label:p.label||p.key||"Item",state:h})}return{completionLabel:`${l}% concluÃdo`,completionPct:l,counters:{done:a,total:o,na:i,pending:d},gaps:c,byCategory:u}}function Lc(e){const t=Number(e);return e==null||e===""||!Number.isFinite(t)?null:hn.find(o=>t<=o.max)||hn[hn.length-1]}function Pt(e){const t=Number(e);return e==null||e===""||!Number.isFinite(t)?"â":Number.isInteger(t)?String(t):t.toLocaleString("pt-BR",{maximumFractionDigits:1})}function ss(e){return Number.isFinite(e)?Lt.find(t=>e>=t.min)||Lt[Lt.length-1]:null}function rs(e){return e?e.headline:""}function k(e,t,o={}){return{...wo[e],status:t,statusLabel:ts[t],flag:"",exception:"",advisory:"",ownerNote:"",failed:!1,...o}}function ya(e){return!e||e.status==="ok"||e.status==="na"?"":e.exception?e.exception:e.status==="captura"?`${e.short} não capturado`:`${e.short} ${e.status==="lacuna"?"ausente":"parcial"}`}function Ue(e){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} e ${e[e.length-1]}`}const Ic=[["departure","Partida"],["arrival","Chegada"]],cn={none:0,caution:1,warning:2,critical:3};function ls(e){const t=I(e),o=Ic.map(([l,c])=>{const d=I(t[l]);return{key:l,label:c,severity:String(d.severity||"none"),category:d.flight_category||"",hazards:St(d.hazards).filter(u=>u&&u.label),available:!!t[l]}}),a=o.flatMap(l=>l.hazards.map(c=>({...c,phase:l.key,phaseLabel:l.label}))),i=o.reduce((l,c)=>(cn[c.severity]||0)>(cn[l]||0)?c.severity:l,"none");return{phases:o,hazards:a,worstSeverity:String(t.worst_severity||i),adverse:!!t.adverse||a.some(l=>cn[l.severity]>=cn.warning)}}function Oc(e){const t=e.phases.filter(a=>a.hazards.length);return t.length?`Condições de atenção ${t.map(a=>`na ${a.label.toLowerCase()}: ${a.hazards.map(i=>i.label).join(", ")}`).join(" · ")}. Destacado para leitura â não pesa no Ãndice.`:""}const Pc=new Set(["captured","recovered_history","late"]),Wc=["provider_error","not_attempted","no_history"],Wt={provider_error:"Falha do provedor",not_attempted:"Não capturado",no_history:"Sem histórico"},_a={MET:{provider_error:"METAR: falha do provedor",not_attempted:"METAR a recuperar"},NTM:{provider_error:"NOTAM: falha do provedor",not_attempted:"NOTAM não capturado",no_history:"NOTAM sem histórico"}};function Bc(e){const t=e?new Date(e):null;return!t||Number.isNaN(t.getTime())?"":`${String(t.getUTCHours()).padStart(2,"0")}:${String(t.getUTCMinutes()).padStart(2,"0")}Z`}function Co(e,t){switch(t?.capture_state){case"provider_error":return`Falha do provedor (${t.reason||"sem resposta"}) â tentar de novo`;case"not_attempted":return e==="notams"?"Não capturado em tempo real â capturar agora":"Não capturado em tempo real â recuperar do histórico";case"no_history":return"Sem histórico de NOTAM para voo passado";case"recovered_history":{const o=Bc(t.observed_at);return o?`Recuperado do histórico (observado à s ${o})`:"Recuperado do histórico"}case"late":return e==="notams"?"Consulta atual anexada depois do voo (captura pós-voo)":"Observado a mais de 6 h do horário de referência";default:return""}}function cs(e,t,o){const a={};for(const i of t){const l=o[i.key],c=Co(e,l);c&&(a[i.key]={captureState:l.capture_state,text:c})}return a}function ds(e,t,o,a){if(!o.every(d=>a[d.key]?.capture_state))return null;const i=Wc.find(d=>o.some(u=>a[u.key].capture_state===d));if(!i)return null;const l=new Map;for(const d of o){const u=Co(t,a[d.key]);l.set(u,[...l.get(u)||[],d.label])}const c=[...l].map(([d,u])=>{const p=t==="notams"?u.map((f,h)=>h?f.toLowerCase():f):u;return`${Ue(p)}: ${d}`});return{captureState:i,statusLabel:Wt[i],exception:_a[e][i]||_a[e].not_attempted,detail:c.join(" · ")}}function zc(e,t){const o=Bn(e.metar),a=o.filter(va),i=a.filter(u=>u.value?.captured_after_flight),l=Oc(ls(e.weather_assessment)),c=I(t?.metar),d=cs("metar",o,c);if(a.length<o.length){const u=o.filter(h=>!va(h)),p=ds("MET","metar",u,c);if(p){const{detail:h,...b}=p;return k("MET","captura",{...b,flag:`${a.length} de ${o.length} METAR congelados · ${h}. Fora do Ãndice.`,advisory:l,slotNotes:d})}const f=u.map(h=>h.label);return k("MET","captura",{flag:`${a.length} de ${o.length} METAR congelados · faltam ${Ue(f)}. Falha de captura do sistema, fora do Ãndice.`,exception:"METAR não capturado",advisory:l,slotNotes:d})}return i.length?k("MET","captura",{statusLabel:ns,flag:"METAR observado mais de 6 h depois do horário de referência â não prova o tempo da hora do voo. Fora do Ãndice.",exception:"METAR tardio",advisory:l,slotNotes:d}):e.sigmet_gamet?.status!=="available"?k("MET","parcial",{flag:"METAR completo, mas a revisão de SIGMET/GAMET não foi registrada.",exception:"SIGMET pendente",advisory:l,slotNotes:d}):k("MET","ok",{advisory:l,slotNotes:d})}function Hc(e){return Number(e?.items_count)||St(e?.items).length}
1function Uc(e,t){const o=zn(e.notams),a=o.filter(u=>u.value?.status==="ok"),i=a.filter(u=>u.value?.captured_after_flight),l=I(t?.notams),c=cs("notams",o,l);if(a.length<o.length){const u=o.filter(h=>h.value?.status!=="ok"),p=ds("NTM","notams",u,l);if(p){const{detail:h,...b}=p;return k("NTM","captura",{...b,flag:`${a.length} de ${o.length} consultas de NOTAM congeladas · ${h}. Fora do Ãndice.`,slotNotes:c})}const f=u.map(h=>h.label.toLowerCase());return k("NTM","captura",{flag:`${a.length} de ${o.length} consultas de NOTAM congeladas · falta ${Ue(f)}. Falha de captura do sistema, fora do Ãndice.`,exception:"NOTAM não capturado",slotNotes:c})}if(i.length)return k("NTM","captura",{statusLabel:ns,flag:"NOTAMs congelados depois da decolagem â dado atual, não o da hora do voo. Fora do Ãndice.",exception:"NOTAM tardio",slotNotes:c});const d=a.reduce((u,p)=>u+Hc(p.value),0);return k("NTM","ok",{notamCount:d,slotNotes:c})}function Gc(e){const t=I(e.flight_plan);return t.approved||t.approval_code?k("FPL","ok"):t.status==="available"||t.checked?k("FPL","parcial",{flag:"Plano registrado, mas a aprovação CGNA/DECEA não foi anexada.",exception:"FPL sem aprovação"}):k("FPL","lacuna")}function Vc(e){const t=String(e.fuel_reserve?.status||"");return t==="pass"?k("CMB","ok"):t==="warning"?k("CMB","parcial",{flag:"Margem de combustÃvel no pouso abaixo do recomendado.",exception:"Margem baixa"}):t==="fail"?k("CMB","lacuna",{statusLabel:"Abaixo do mÃnimo",flag:"CombustÃvel no pouso abaixo do mÃnimo exigido (alternado + reserva).",exception:"Reserva crÃtica",failed:!0}):t==="pending_logbook"?k("CMB","parcial",{flag:"Aguardando o eDB para fechar uplift e combustÃvel final."}):k("CMB","lacuna")}function qc(e){const t=I(e.performance),o=String(t.verdict||"");if(!o)return t.status==="available"?k("PRF","ok"):k("PRF","lacuna");if(o==="exceeded")return k("PRF","lacuna",{statusLabel:"Pista excedida",flag:"Distância requerida acima da disponÃvel na pista (TORA/LDA).",exception:"Pista excedida",failed:!0});if(o==="ok"){const a=[t.takeoff,t.landing].some(i=>i?.tight);return k("PRF","ok",{advisory:a?"Margem de pista apertada â registro completo, mas vale revisar a análise.":""})}return o==="incomplete"?k("PRF","parcial",{flag:"Análise de pista sem todos os números (requerida à disponÃvel na decolagem e no pouso).",exception:"Pista incompleta"}):o==="confirmed"?k("PRF","parcial",{flag:"Análise de pista marcada no checklist, sem a análise ForeFlight com os números.",exception:"Pista sem números"}):k("PRF","lacuna",{flag:"Nenhuma análise de pista registrada para a perna."})}function Xc(e){return e===He.NOT_FLOWN?k("FRT","ok",{statusLabel:"No-go registrado",advisory:"Decisão conservadora registrada no eFRAT: a perna não voou.",ownerNote:"A tripulação avaliou o risco e decidiu não prosseguir. A decisão está registrada."}):e===He.UNKNOWN?k("FRT","parcial",{statusLabel:"No-go registrado",flag:'O eFRAT registrou "Não prosseguir", mas nada confirma se a perna voou â registre o cancelamento na Agenda ou lance a perna no eDB.',exception:"Execução não confirmada",ownerNote:"A decisão de não prosseguir está registrada. Falta a Agenda ou o eDB confirmar que a perna não voou."}):k("FRT","parcial",{statusLabel:"No-go registrado",flag:'O eFRAT registrou "Não prosseguir" e a perna voou â confirmar com a operação a decisão final (nova avaliação ou aprovação).',exception:"No-go a confirmar",ownerNote:"O eFRAT registrou não prosseguir e o voo aconteceu. Falta o registro da decisão final."})}function Kc(e,t){const o=I(e.efrat),a=String(o.status||""),i=String(o.approval_status||"none");if(!is.has(a))return k("FRT","lacuna");if(a==="no_go")return Xc(t);if(i==="rejected")return k("FRT","lacuna",{statusLabel:"Rejeitado",flag:"O eFRAT foi rejeitado pelo aprovador.",exception:"eFRAT rejeitado",failed:!0});if(i==="required"){const l=Fc[String(o.approval_reason_code||"")]||Nc;return k("FRT","parcial",{flag:l,exception:"eFRAT sem aprovação"})}return a==="stale"?k("FRT","parcial",{flag:"eFRAT desatualizado: a missão mudou depois da avaliação.",exception:"eFRAT desatualizado"}):Cc.has(i)?k("FRT","ok"):k("FRT","parcial",{flag:"Situação de aprovação do eFRAT não registrada."})}function Yc(e){if(!e||e.counters.total<=0)return k("CHK","lacuna");const{done:t,total:o,na:a,pending:i}=e.counters;if(i>0){const l=Math.max(o-a,0);return k("CHK","parcial",{flag:`${i} item(ns) do checklist sem confirmação (${t} de ${l} aplicáveis).`,exception:`Checklist ${t}/${l}`})}return k("CHK","ok")}function Zc(e){const t=I(e.manifest);if(t.not_applicable)return k("PAX","na",{flag:"Perna sem passageiros â manifesto não se aplica."});const o=Number(t.counters?.total)||0;return t.confirmed&&o>0&&t.completion_pct===100?k("PAX","ok"):o>0?k("PAX","parcial",{flag:t.confirmed?"Faltam documentos de passageiros exigidos para o tipo de voo.":"Manifesto ainda não confirmado pela tripulação.",exception:"Manifesto pendente"}):k("PAX","lacuna",{flag:"Nenhum passageiro lançado no manifesto desta perna."})}function Qc(e){const t=I(e.weight_balance),o=I(e.departure_fuel),a=I(e.passengers),i=[];return t.verdict==="missing"?i.push("load sheet"):t.verdict!=="ok"&&i.push("load sheet sem todos os pesos contra os limites"),o.status==="missing"?i.push("combustÃvel de partida"):o.status==="inferred"&&i.push("combustÃvel de partida só inferido da perna anterior"),a.required&&!a.documented&&i.push("documentos dos passageiros"),i}
1function Jc(e){const t=I(e.load_manifest);if(!t.status)return Zc(e);const o=St(t.failed_rules);if(o.length){const i=o.includes("weight_over_limit");return k("PAX","lacuna",{statusLabel:i?"Acima do limite":"Abaixo do plano",flag:i?"Peso acima do limite no load sheet (ZFW, TOW ou LW).":"CombustÃvel a bordo na partida abaixo do requerido pelo navlog.",exception:i?"Acima do peso":"CombustÃvel abaixo do plano",failed:!0})}if(t.status==="complete")return k("PAX","ok");if(t.status==="missing")return k("PAX","lacuna",{flag:"Sem load sheet nem combustÃvel de partida registrados para a perna.",exception:"Manifesto ausente"});const a=Qc(t);return k("PAX","parcial",{flag:a.length?`Manifesto incompleto: ${Ue(a)}.`:"Manifesto incompleto.",exception:"Manifesto parcial"})}const ed=["baixa","moderada","elevada","critica"];function td(e){let t=null;for(const o of Array.isArray(e)?e:[]){const a=ed.indexOf(String(o?.band||"baixa"));(!t||a>t.rank)&&(t={pilot:o,rank:a})}return t?t.pilot:null}function nd(e){const t=I(e.crew_fatigue),o=St(t.pilots);if(t.status!=="available"||!o.length)return k("FAD","captura",{statusLabel:"Sem fonte de fadiga",flag:"Nenhuma fonte de fadiga (escala ou jornadas) chegou ao dossiê desta perna. Fonte indisponÃvel, fora do Ãndice.",exception:"Fadiga sem fonte"});const a=td(o),i=String(a?.band||"");return i==="elevada"||i==="critica"?k("FAD","ok",{advisory:`Ãndice de fadiga ${String(a.band_label||i).toLowerCase()} na tripulação â consultivo: vale revisar escala e descanso. Não pesa no Ãndice.`}):k("FAD","ok")}function Fo(e){return Mc.has(String(e.fuel_reserve?.final_fuel_source||""))}const He=Object.freeze({FLOWN:"flown",NOT_FLOWN:"not_flown",UNKNOWN:"unknown"}),od=new Set(["cancelled","aog"]);function No(e,t){return Fo(I(e))?He.FLOWN:t===void 0?He.UNKNOWN:t?.edb||t?.actual_departure||t?.actual_arrival?He.FLOWN:od.has(String(t?.agenda_status||""))?He.NOT_FLOWN:He.UNKNOWN}function ad(e,t){return No(e,t)===He.FLOWN}function us(e){return String(I(e.efrat).status||"")==="no_go"}const ps=new Set(["MET","NTM","FRT"]),id="Voo não realizado após o no-go registrado no eFRAT: este registro não se aplica.";function sd(e){return e.map(t=>ps.has(t.key)?t:k(t.key,"na",{statusLabel:"Não voada",flag:"Perna não voada: no-go registrado no eFRAT. Registro não se aplica.",ownerNote:id}))}function rd(e,t){if(t===void 0)return Fo(e)?k("EXE","ok"):k("EXE","lacuna");const o=I(t?.edb);return o.takeoff&&o.landing?k("EXE","ok"):t?.edb?k("EXE","parcial",{flag:"Horários de decolagem e pouso incompletos no eDB."}):t?.actual_departure&&t?.actual_arrival?k("EXE","parcial",{flag:"Horários reais só na Agenda â a perna não foi lançada no eDB."}):k("EXE","lacuna",{flag:"Sem horários reais registrados para a perna."})}function ld(e){const t=I(e);if(!t.rated_by_observer)return"";const o=String(t.rater_name||"").trim();return`Avaliado por observador${o?` (${o})`:""} · conta Aviato, laboratório do Zulbot. Não entra no Ãndice de fadiga nem no treino do modelo.`}function cd(e){const t=String(e.nasa_tlx?.status||""),o=ld(e.nasa_tlx);return t==="completed"?k("TLX","ok",{advisory:o}):t==="completed_late"?k("TLX","parcial",{flag:"Avaliação NASA-TLX enviada fora do prazo.",advisory:o}):t&&t!=="unknown"?k("TLX","ok",{advisory:o}):k("TLX","lacuna",{exception:"NASA-TLX pendente"})}function dd(e){const t=I(e.debrief);return t.submitted?t.edited_after_snapshot?k("DBF","ok",{advisory:"Debrief complementado após o snapshot da auditoria â vale a versão mais recente."}):k("DBF","ok"):k("DBF","lacuna",{exception:"Debrief pendente"})}function ud(e,t){if(t===void 0)return Fo(e)?k("EDB","ok"):k("EDB","lacuna",{exception:"eDB pendente"});const o=t?.edb;return o?o.exported_at?k("EDB","ok"):k("EDB","parcial",{flag:"Perna lançada no eDB, mas a exportação ainda não foi feita."}):k("EDB","lacuna",{flag:"A perna ainda não foi lançada no eDB.",exception:"eDB pendente"})}function pd(e,{checklistSummary:t,timing:o,captureStates:a}={}){const i=I(e),l=t===void 0?Eo(i.checklist):t,c=No(i,o),d=c===He.FLOWN,u=[zc(i,a),Uc(i,a),Gc(i),Vc(i),qc(i),Kc(i,c),Yc(l),Jc(i),nd(i),rd(i,o),cd(i),...Ec(i,k),dd(i),ud(i,o)];return us(i)&&!d?sd(u):u}function fd(e,t){const o=I(e);return us(o)&&!ad(o,t)}function fs(e){const t=(e||[]).filter(a=>!co.has(a.status));if(!t.length)return null;const o=t.reduce((a,i)=>a+(os[i.status]||0),0);return Math.round(o/t.length*100)}function Mo(e){const t={ok:0,parcial:0,lacuna:0,captura:0,na:0};for(const a of e||[])t[a.status]=(t[a.status]||0)+1;const o=t.ok+t.parcial+t.lacuna;return{...t,scored:o,applicable:o+t.captura}}function md(e){return Object.fromEntries(Xt.map(t=>{const o=(e||[]).filter(a=>a.phase===t.key);return[t.key,{...Mo(o),total:o.length}]}))}function xd(e,t){const o=new Set;return(Array.isArray(e)?e:[]).map(a=>String(a||"")).filter(a=>a&&!o.has(a)&&o.add(a)).map(a=>{const i=Ln(a),l=vl(i),[c,d]=i.captureSlot||[],u=c?t?.[c]?.[d]:null,p=u?.capture_state||null;return{key:a,...i,reason:Co(c,u)||i.reason,dimension:i.dimension||null,system:l,captureState:p,recapturable:l&&i.target==="capture"&&p!=="no_history",attachable:p==="no_history"}})}const ms=[{key:"met",label:"Meteorologia",description:"METAR de origem e destino na hora do voo, NOTAM e revisão de SIGMET/GAMET.",dimensions:["MET","NTM"]},{key:"fuel",label:"CombustÃvel",description:"Reserva e margem de combustÃvel sobre o mÃnimo exigido.",dimensions:["CMB"]},{key:"perf",label:"Performance",description:"Decolagem e pouso comparados à pista disponÃvel, e plano de voo.",dimensions:["PRF","FPL"]},{key:"risk",label:"Risco",description:"eFRAT e a aprovação do gestor quando exigida.",dimensions:["FRT"]},{key:"crew",label:"Fadiga e carga",description:"Fonte do Ãndice de fadiga e avaliação NASA-TLX. O nÃvel de fadiga é consultivo e não pesa.",dimensions:["FAD","TLX"]},{key:"discipline",label:"Registros da operação",description:"Checklist, manifesto, execução, debrief e diário de bordo.",dimensions:["CHK","PAX","EXE","DBF","EDB"]}];ms.push(pc);function hd(e){const t=Object.fromEntries((e||[]).map(o=>[o.key,o]));return ms.map(o=>{const a=o.dimensions.map(i=>
1t[i]).filter(Boolean);return{key:o.key,label:o.label,description:o.description,value:fs(a),dimensions:a}}).filter(o=>o.dimensions.length)}function Do(e){return(e?.dimensions||[]).filter(t=>t.status==="lacuna"||t.status==="parcial")}function gd(e){const t=(e||[]).filter(a=>Number.isFinite(a.value));if(!t.length)return null;const o=t.reduce((a,i)=>i.value<a.value?i:a);return o.value>=100?null:{...o,culprits:Do(o)}}const bd={MET:{ok:"O tempo nas duas pontas foi registrado na hora da decolagem e do pouso, com os avisos de rota anexados.",parcial:"O tempo da hora do voo foi registrado, mas falta a revisão dos avisos de rota (SIGMET/GAMET).",lacuna:"Não há registro do tempo da hora do voo no dossiê.",captura:"O sistema não conseguiu guardar o tempo da hora do voo. Não é falha da tripulação e não pesa na nota; recapturar resolve."},NTM:{ok:"Os avisos aos aeronavegantes das duas pontas foram consultados antes do voo.",parcial:"Os avisos foram consultados só em parte, ou depois da decolagem.",lacuna:"Não há registro de consulta aos avisos aos aeronavegantes.",captura:"O sistema não conseguiu guardar os avisos das duas pontas. Não é falha da tripulação e não pesa na nota; recapturar resolve."},FPL:{ok:"O plano de voo foi aprovado pelo controle de tráfego antes da partida.",parcial:"O plano foi registrado, mas a aprovação não foi anexada.",lacuna:"Não há plano de voo registrado para esta perna."},CMB:{ok:"A aeronave pousou com o combustÃvel exigido para chegar ao alternado e ainda manter a reserva.",parcial:"O combustÃvel ainda não foi fechado no diário de bordo, ou a margem ficou apertada.",lacuna:"O combustÃvel desta perna não foi comprovado ou ficou abaixo do mÃnimo."},PRF:{ok:"A pista disponÃvel cobria a distância de decolagem e de pouso calculada para o peso do dia.",parcial:"A análise de pista foi feita, mas sem todos os números que comprovam a margem.",lacuna:"Não há análise de pista registrada, ou a distância calculada passou da pista disponÃvel."},FRT:{ok:"O risco do voo foi avaliado e assinado antes do despacho.",parcial:"O risco foi avaliado, mas falta a aprovação ou a avaliação ficou desatualizada.",lacuna:"Não há avaliação de risco válida para este voo."},CHK:{ok:"Todos os itens de preparação do voo foram confirmados.",parcial:"Alguns itens de preparação ficaram sem confirmação.",lacuna:"O checklist de preparação não foi preenchido."},PAX:{ok:"Peso e combustÃvel de partida dentro dos limites, e passageiros a bordo com documentos conferidos.",parcial:"O manifesto está incompleto: falta parte do peso, do combustÃvel de partida ou dos documentos dos passageiros.",lacuna:"Não há manifesto de peso e combustÃvel, ou ele passou de um limite.",na:"Voo sem passageiros: o manifesto não se aplica."},FAD:{ok:"O Ãndice de fadiga da tripulação foi consolidado para este voo. Ele é consultivo: ajuda a planejar escala e descanso e não pesa na nota.",captura:"Nenhuma fonte de fadiga chegou ao dossiê deste voo. Não é falha da tripulação e não pesa na nota.",lacuna:"Não há dados suficientes para avaliar a fadiga da tripulação."},EXE:{ok:"Os horários reais de decolagem e pouso foram registrados.",parcial:"Os horários reais foram registrados só em parte.",lacuna:"Não há horários reais registrados para este voo."},TLX:{ok:"A carga de trabalho do voo foi avaliada.",parcial:"A avaliação de carga de trabalho chegou fora do prazo.",lacuna:"A tripulação ainda não avaliou a carga de trabalho do voo."},DBF:{ok:"O relato pós-voo foi enviado. Complementos feitos depois também contam.",lacuna:"O relato pós-voo ainda não foi enviado."},EDB:{ok:"O voo foi fechado no diário de bordo eletrônico.",parcial:"O voo foi lançado no diário de bordo, mas ainda não foi exportado.",lacuna:"O voo ainda não foi lançado no diário de bordo eletrônico."}},vd={MET:{provider_error:"O provedor de meteorologia não respondeu quando o sistema tentou guardar o tempo da hora do voo. Não é falha da tripulação e não pesa na nota; tentar de novo resolve.",not_attempted:"O tempo da hora do voo não foi guardado em tempo real. Não é falha da tripulação e não pesa na nota; recuperar do histórico resolve."},NTM:{provider_error:"O provedor de NOTAM não respondeu quando o sistema tentou guardar os avisos. Não é falha da tripulação e não pesa na nota; tentar de novo resolve.",not_attempted:"Os avisos das duas pontas não foram guardados em tempo real. Não é falha da tripulação e não pesa na nota; capturar agora resolve.",no_history:"Os avisos da hora do voo não foram guardados e não existe histórico de NOTAM para voo passado. Não é falha da tripulação e não pesa na nota."}},yd="Este registro não se aplica a este voo.";function _d(e,t,o){const a=bd[e];if(!a)return"";const i=t==="captura"?vd[e]?.[o]:"";return t==="na"?a.na||yd:i||a[t]||a.lacuna||""}function kd(e){return e?e.ownerNote||_d(e.key,e.status,e.captureState):""}const jd={checkwx:"CheckWX",aviationweather:"AviationWeather",aisweb:"AISWE
1B",redemet:"REDEMET"},Sd=[["EDB","eDB Logbook"],["FRT","eFRAT"],["CHK","Checklist Operacional"],["PAX","Manifesto"],["TLX","NASA-TLX"],["DBF","Flight Debrief"],["FAD","Ãndice de fadiga"]];function $d(e){const t=String(e||"").trim().toLowerCase();return t?jd[t]||t.toUpperCase():""}function Ad(e,t){const o=I(e),a=new Set;for(const l of[o.metar,o.notams])for(const c of Wn(l)){const d=$d(c.value?.source);d&&a.add(d)}const i=new Set((t||[]).filter(l=>l.status==="ok"||l.status==="parcial").map(l=>l.key));for(const[l,c]of Sd)i.has(l)&&a.add(c);return(o.performance?.document||o.load_manifest?.weight_balance?.document)&&a.add("ForeFlight"),String(o.nasa_tlx?.completion_channel||"")==="whatsapp"&&a.add("WhatsApp"),["available","provisional"].includes(String(o.fdm?.status||""))&&a.add("FDM · iPhone"),[...a]}function Td(e){return Array.isArray(e.top_risks)&&e.top_risks.length?e.top_risks.filter(Boolean):e.main_risk?[e.main_risk]:[]}function wd({index:e,verdict:t,dimensions:o,grounded:a=!1,executionConfirmed:i=!0}){if(!t||!Number.isFinite(e))return"";const l=o||[],c=l.filter(m=>m.status==="lacuna").map(m=>m.short.toLowerCase()),d=l.filter(m=>m.status==="parcial").map(m=>m.short.toLowerCase()),u=l.filter(m=>m.status==="captura").map(m=>m.short),p=u.length?` ${Ue(u)} ${u.length>1?"ficaram":"ficou"} fora do Ãndice (fonte não obtida pelo sistema).`:"";if(a&&!i)return`No-go registrado no eFRAT sem registro de execução: os registros de voo ficam fora do Ãndice até a operação confirmar que a perna não voou.${p}`;if(a)return`Perna não voada: o no-go registrado no eFRAT documenta a decisão e os registros de voo não se aplicam.${p}`;const f=[...Lt].reverse().find(m=>m.min>e);if(!f){const m=[...c,...d],_=m.length?` ${Ue(m)} ${m.length>1?"seguem em aberto":"segue em aberto"}, sem tirar a faixa.`:"";return`${m.length?"Registros na faixa completa.":"Todos os registros aplicáveis estão completos."}${_}${p}`}const h=f.min-e,b=(c.length?c:d).slice(0,3),x=b.length?`: ${b.length>1?"pesam":"pesa"} ${Ue(b)}${c.length>3?` e mais ${c.length-3}`:""}.`:".";return`${h===1?"Falta 1 ponto":`Faltam ${h} pontos`} para ${f.label.toLowerCase()}${x}${p}`}const uo="meteorologia do dia, nÃvel de risco do eFRAT, nÃvel de fadiga e conteúdo do debrief",An="O Ãndice mede se os registros existem e estão completos. Não avalia a tripulação nem diz se o voo foi seguro.",xs="Completo vale 1, parcial ½, ausente 0; Ãndice = pontos ÷ registros considerados à 100.";function hs(e){const t=e?.dimensions||[],o=t.filter(l=>!co.has(l.status)),a=o.filter(l=>l.status!=="ok").map(l=>({key:l.key,label:l.label,short:l.short,status:l.status,points:100*(1-(os[l.status]||0))/o.length})).sort((l,c)=>c.points-l.points),i=t.filter(l=>co.has(l.status)).map(l=>({key:l.key,label:l.label,short:l.short,status:l.status,statusLabel:l.statusLabel}));return{index:Number.isFinite(e?.index)?e.index:null,total:t.length,scored:o.length,counts:Mo(t),grounded:!!e?.grounded,losses:a,excluded:i}}const Ed={lacuna:"ausente",parcial:"parcial"},gs=3;function bs(e){const t=Number.isFinite(e)?Math.max(0,e):0;return`â${t>=1?String(Math.round(t)):t.toLocaleString("pt-BR",{maximumFractionDigits:1})}`}function Ro(e,t=gs){return e.length<=t?Ue(e):`${e.slice(0,t).join(", ")} e mais ${e.length-t}`}function vs(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function gn(e,t,o){return`${e} ${e===1?t:o}`}function ys({capture:e=[],notApplicable:t=[],grounded:o=!1}){const a=[];if(e.length&&a.push(`${Ro(e)} â fonte não obtida pelo sistema, não é falha da tripulação`),t.length){const i=o?"perna não voada":"não se aplica";a.push(t.length>gs?`${gn(t.length,"registro","registros")} â ${i}`:`${Ue(t)} â ${i}`)}return a.length?`${vs(a.join("; "))}.`:""}function Cd(e){const{index:t,total:o=0,scored:a=0,counts:i={},grounded:l=!1,losses:c=[],excluded:d=[]}=e||{};if(!Number.isFinite(t))return{rows:[{key:"base",label:"Sem Ãndice",text:"Nenhum registro desta perna pôde ser pontuado."}],disclaimer:An};const u=[gn(i.ok||0,"completo","completos"),i.parcial?gn(i.parcial,"parcial","parciais"):"",i.lacuna?gn(i.lacuna,"ausente","ausentes"):""].filter(
1Boolean),p=c.map(h=>`${h.short} ${Ed[h.status]||"ausente"} (${bs(h.points)})`),f=ys({capture:d.filter(h=>h.status==="captura").map(h=>h.short),notApplicable:d.filter(h=>h.status==="na").map(h=>h.short),grounded:l});return{rows:[{key:"base",label:`${t}/100`,text:`${a} de ${o} registros considerados: ${Ue(u)}.`},{key:"rule",label:"Como conta",text:xs},{key:"losses",label:"O que mais pesou",text:p.length?`${Ro(p)}.`:"Nada: todos os registros considerados estão completos."},...f?[{key:"excluded",label:"Fora da conta",text:f}]:[],{key:"never",label:"Não entra no Ãndice",text:`${vs(uo)}.`}],disclaimer:An}}function Hn({evidence:e,missingEvidence:t,timing:o,captureStates:a}={}){const i=I(e),l=Eo(i.checklist),c=pd(i,{checklistSummary:l,timing:o,captureStates:a}),d=fd(i,o),u=fs(c),p=ss(u),f=I(i.efrat),h=is.has(String(f.status||""))?Lc(f.score):null,b=Array.isArray(t)?t:i.missing_evidence,x=c.filter(v=>v.failed).map(v=>({key:v.key,label:v.short,text:v.exception})),m=xd(b,a).filter(v=>!d||ps.has(v.dimension)),_=hd(c);return{dimensions:c,dimensionByKey:Object.fromEntries(c.map(v=>[v.key,v])),index:u,verdict:p,grounded:d,headline:rs(p),why:wd({index:u,verdict:p,dimensions:c,grounded:d,executionConfirmed:No(i,o)!==He.UNKNOWN}),counts:Mo(c),phases:md(c),frat:{score:h?Number(f.score):null,band:h,decision:String(f.risk_classification||"").trim()||(h?h.label:""),mainRisk:f.main_risk||null,topRisks:Td(f)},findings:m,systemFindings:m.filter(v=>v.system),crewFindings:m.filter(v=>!v.system),failedRules:x,captureGaps:c.filter(v=>v.status==="captura").map(v=>v.key),weather:ls(i.weather_assessment),exceptions:c.filter(v=>ya(v)).map(v=>({key:v.key,text:ya(v),status:v.status})),envelope:_,weakPoint:gd(_),sources:Ad(i,c),checklistSummary:l,fdm:Ji(i)}}function Yt({report:e,acquisition:t}={}){for(const o of[e,t,t?.evidence?.flight]){const a=Number(o?.leg_index),i=Number(o?.leg_count);if(Number.isFinite(a)&&a>0&&Number.isFinite(i)&&i>0)return{index:a,count:i}}return null}function Lo(e){const t=I(e),o=I(t.evidence);return Hn({evidence:o,missingEvidence:o.missing_evidence??t.missing_evidence??[],timing:t.timing??null,captureStates:t.capture_status?.states})}function ka(e,t,o){const a=I(o?.[e]),i={total:t.length,present:0,recovered:0,late:0,noHistory:0,reasons:[]};for(const l of t){const c=a[l.key]||{};Pc.has(c.capture_state)&&(i.present+=1),c.capture_state==="recovered_history"&&(i.recovered+=1),c.capture_state==="late"&&(i.late+=1),c.capture_state==="no_history"&&(i.noHistory+=1),c.capture_state==="provider_error"&&c.reason&&!i.reasons.includes(c.reason)&&i.reasons.push(c.reason)}return i}function Fd(e){const t=I(e),o=t.capture_status?.states;if(!o?.metar&&!o?.notams)return null;const a=I(t.evidence);return{metar:ka("metar",Bn(a.metar),o),notams:ka("notams",zn(a.notams),o)}}function Nd(e,t){if(!e||!t)return e||t||null;const o=(a,i)=>({total:a.total+i.total,present:a.present+i.present,recovered:a.recovered+i.recovered,late:a.late+i.late,noHistory:a.noHistory+i.noHistory,reasons:[...new Set([...a.reasons,...i.reasons])]});return{metar:o(e.metar,t.metar),notams:o(e.notams,t.notams)}}function _s(e){return e.length?`falha do provedor (${e.join(", ")})`:""}function Md({total:e,present:t,recovered:o,reasons:a}){return e?[t?`METAR ${o?"recuperado":"capturado"}: ${t} de ${e}`:`METAR: 0 de ${e}`,_s(a)].filter(Boolean).join(" · "):""}function Dd({total:e,present:t,late:o,noHistory:a,reasons:i}){return e?!t&&a===e?"NOTAM: sem histórico para voo passado":[t?`NOTAM ${o?"anexado (consulta atual)":"capturado"}: ${t} de ${e}`:`NOTAM: 0 de ${e}`,a?"sem histórico para voo passado":"",_s(i)].filter(Boolean).join(" · "):""}function Rd(e){return e?[Md(e.metar),Dd(e.notams)].filter(Boolean).join(" · "):""}const Ld={baixa:"ok",moderada:"warn",elevada:"danger",critica:"danger"};function rt(e){if(!e)return"";const t=new Date(e);if(Number.isNaN(t.getTime()))return"";try{return t.toLocaleString("pt-BR",{day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit"})}catch{return t.toISOString().slice(0,16).replace("T"," ")}}const ja=[["origin_etd","Origem @ ETD"],["destination_etd","Destino @ ETD"],["origin_eta","Origem @ ETA"],["destination_eta","Destino @ ETA"]];function Bt(e,t=[]){return ja.some(([a])=>e?.[a])?ja.map(([a,i])=>({key:a,label:i,value:e?.[a]||null})):t.map(([a,i])=>({key:a,label:i,value:e?.[a]||null}))}function Id(e,t){if(!e||e.status!=="ok")return{label:e?.airport?`${t} · ${e.airport}`:t,value:e?.status==="skipped_historical"?String(e.reason||"Captura pós-voo não realizada."):"",missing:!0};const o=Array.isArray(e.items)?e.items:[],a=o.slice(0,4).join(` 2`),i=o.length>4?` 3+ ${o.length-4} adicionais`:"",l=rt(e.captured_at),c=[l?`capturado ${l}`:"",e.captured_after_flight?"PÃS-VOO (dado atual, não da hora do voo)":""].filter(
3Boolean).join(" · ");return{label:`${t} · ${e.airport}`,value:`${o.length?`${a}${i}`:"Sem NOTAMs ativos."}${c?` 4· ${c}`:""}`,missing:!1,postFlight:!!e.captured_after_flight}}function Od(e){const t=Bt(e,[["departure","Partida"],["arrival","Chegada"]]),o=t.filter(a=>a.value?.status==="ok");return o.length===t.length&&t.length>0?{kind:"ok",text:`${o.length} OK`}:o.length>=1?{kind:"warn",text:"Parcial"}:{kind:"warn",text:"IndisponÃvel"}}function Pd(e){const t=Bt(e,[["departure","Partida"],["arrival","Chegada"]]),o=t.filter(a=>a.value?.status==="ok");return o.length===t.length&&t.length===4?"NOTAMs congelados para origem e destino nos horários de ETD e ETA.":o.length===t.length?"NOTAMs anexados para partida e chegada.":o.length>0?"NOTAMs parcialmente disponÃveis â verifique os slots restantes.":'NOTAMs ainda não anexados ao dossiê. A captura usa AISWEB (AISWEB_API_KEY/AISWEB_API_PASS) com fallback CheckWX (CHECKWX_API_KEY) â clique em "Capturar evidências" após configurar.'}function Wd(e){return Bt(e,[["departure","Partida"],["arrival","Chegada"]]).filter(t=>t.value?.status==="ok").length}function Re(e){return e!=null&&e!==""?`${Math.round(Number(e))} kg`:"â"}function Sa(e){return e!=null&&e!==""?`${Math.round(Number(e))} m`:"â"}function Zn(e){if(e==null||e==="")return"â";const t=Number(e);return Number.isNaN(t)?String(e):`R$ ${t.toLocaleString("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2})}`}const Bd={checklist_initial_fuel:"Checklist Operacional",previous_arrival_plus_uplift:"Perna anterior + uplift",previous_leg_plus_uplift:"Perna anterior + uplift",panel_measurement:"Medição de painel",emb550_fms:"Tela FMS (EMB550)",fuel_onboard_departure:"eDB (COMB INI)",fuel_initial:"eDB (COMB INI)",fuel_start:"eDB (COMB INI)",fuel_onboard_start:"eDB (COMB INI)",fuel_final:"eDB (COMB FIN)",fuel_onboard_arrival:"eDB (COMB FIN)",fuel_kilograms:"eDB (kg)",fuel_liters:"eDB (litros)",fuel_gallons:"eDB (galões)"};function dn(e){return e?Bd[String(e)]||String(e).replace(/_/g," "):"â"}const $a={navlog_block:"navlog (taxi+trip+alt+reserva)",alternate_plus_reserve_45:"alternado + reserva 45 min"},Aa={final_fuel:"final",initial_fuel:"inicial"};function zd(e){const t=e?.fuel_evidence||{};return{initial:Re(t.initial_fuel_kg),final:Re(t.final_fuel_kg),margin:Re(t.margin_kg),status:String(t.status||"")||"â",capturedAt:e?.captured_at||e?.target_time||""}}function Hd(e){const t=[];for(const[o,a]of[["etd","Congelado @ ETD"],["eta","Congelado @ ETA"]]){const i=e?.[o];if(!i)continue;const l=zd(i),c=rt(l.capturedAt);t.push({label:a,value:`INI ${l.initial} · FIN ${l.final} · MARGEM ${l.margin}${c?` 5· congelado ${c}`:""}`,missing:!1})}return t}function ks(e){const t=e?.counts&&typeof e.counts=="object"?e.counts:null,o=l=>Number.isFinite(Number(l))?Number(l):0,a=o(t?.sigmet_total),i=o(t?.gamet_total);return{hasCounts:!!t&&Object.keys(t).length>0,sigmetTotal:a,sigmetRoute:o(t?.sigmet_route),gametTotal:i,gametRoute:o(t?.gamet_route),total:a+i,routeFirs:Array.isArray(e?.route_firs)?e.route_firs.filter(Boolean).map(String):[]}}function Ud(e,t){return e?.status!=="available"?{kind:"warn",text:"Pendente"}:t.total>0?{kind:t.sigmetRoute+t.gametRoute>0?"danger":"warn",text:`${t.total} ativo${t.total===1?"":"s"}`}:t.hasCounts?{kind:"ok",text:"Sem aviso ativo"}:{kind:"ok",text:"OK"}}function Gd(e,t){return t.total>0?`${t.total} aviso(s) no briefing REDEMET â ver notas/mapas do checklist.`:t.hasCounts?"Nenhum SIGMET/GAMET ativo no briefing capturado.":e?.checked?"Sem texto de SIGMET capturado â item checado pelo operador.":""}const js={flight_debrief:"Debrief da perna",flight_debrief_number_match:"Debrief (nº do voo)",audit_snapshot:"Snapshot congelado"},Ta={atc:"ATC (controle de tráfego aéreo)",pilot_error:"Fatores humanos",ground_handling:"Operações de solo",weather:"Meteorologia",mechanical:"Mecânico / técnico",communication:"Comunicação",security:"Segurança / proteção",wildlife:"Fauna / colisão com ave",other:"Outro"};function Ss(e){const t=String(e||"").trim();if(!t)return"";if(Ta[t])return Ta[t];const o=t.replace(/_/g," ");return o.charAt(0).toUpperCase()+o.slice(1)}function $s(e){const t=e&&typeof e=="object"?e:{},o=t.data&&typeof t.data=="object"?t.data:{},a=i=>t[i]!==void 0&&t[i]!==null&&t[i]!==""?t[i]:o[i];return{title:a("title")||"",description:a("description")||"",category:a("category")||"",severity:a("severity"),flightPhase:a("flight_phase")||"",legsSummary:a("legs_summary"),submittedAt:a("submitted_at")||"",source:t.source||"",editedAfterSnapshot:!!t.edited_after_snapshot}}const wa=["baixa","moderada","elevada","critica"];function As(e){let t="baixa";for(const o of e||[]){const a=String(o?.band||"baixa");wa.indexOf(a)>wa.indexOf(t)&&(t=a)}return t}function Vd(e){const t=As(e);return(e||[]).find(a=>String(a?.band||"")===t)?.band_label||t}function Ts({reportJson:e={},checklistSummary:t}){const o=e?.departure_metar_analysis,a=e?.arrival_metar_analysis,i=e?.fuel_reserve_analysis,l=e?.efrat_analysis,c=e?.nasa_tlx_analysis,d=e?.debrief_summary,u=z=>!z||String(z).toLowerCase().includes("missing"),p=e?.metar||{},h=Bt(p,[["departure","Partida"],["arrival","Chegada"]]).map(z=>{const se=z.value,Ae=z.key==="arrival"||z.key==="destination_eta"?a:o,Te=se?.raw_metar||"",we=!!Te||!u(Ae),Me=rt(se?.observed_at),et=rt(se?.target_time),ae=[et?`alvo ${et}`:"",Me?`obs ${Me}
5`:""].filter(Boolean).join(" · ");return{label:`${z.label}${se?.airport?` · ${se.airport}`:""}`,value:Te?`${Te}${ae?` 6· ${ae}`:""}`:u(Ae)?"":String(Ae),missing:!we}}),b=h.filter(z=>!z.missing).length,x=b===h.length&&h.length>0,m=b<h.length,_=x?{kind:"ok",text:`${b} OK`}:m?{kind:"danger",text:"Lacunas"}:{kind:"warn",text:"Pendente"},v=e?.fuel_reserve||{},A=e?.notams||{},F=e?.performance||{},M=e?.flight_plan||{},E=e?.tankering||{},T=e?.sigmet_gamet||{},D=e?.registered_risks||{},W=e?.nasa_tlx||{},U=e?.debrief||{},ge=Od(A),Ce=Bt(A,[["departure","Partida"],["arrival","Chegada"]]),B=Wd(A),Fe=Ce.length||2,be=F?.values||{},R=E?.data||{},Ze=Object.keys(D?.frat_selected_risks||{}).length,ie=D?.tem||{},Be=e?.crew_fatigue||{},pe=Array.isArray(Be.pilots)?Be.pilots:[],ve=["unavailable","error"].includes(String(e?.ai_status||""))?"":String(e?.crew_fatigue_analysis||"").trim(),je=String(v?.status||""),Qe=["pass","warning","fail"].includes(je),le=e?.manifest||{},oe=le?.counters||{},Se=oe.total||0,$e=Number.isFinite(le?.completion_pct)?le.completion_pct:0,Je=!!le?.international,wt=Array.isArray(le?.passengers)?le.passengers:[],Z=!!le?.confirmed&&Se>0&&$e===100,Ne=e?.efrat?.main_risk||null,Ve=T?.texts||{},Q=ks(T),Y=$s(U);
6return{metar:{pill:_,subtitle:x?"METAR congelado para origem e destino nos horários de ETD e ETA.":"METAR de ETD/ETA ainda incompleto â o agente tenta capturar automaticamente enquanto o dado está fresco.",cells:h,count:`${b}/${h.length||2}`},notams:{pill:ge,subtitle:Pd(A),cells:Ce.map(z=>Id(z.value,z.label)),count:`${B}/${Fe}`},fuel:{pill:je==="pass"?{kind:"ok",text:"OK"}:je==="warning"?{kind:"warn",text:"Atenção"}:je==="fail"?{kind:"danger",text:"Reserva crÃtica"}:je==="pending_logbook"?{kind:"warn",text:"Aguardando eDB"}:{kind:"warn",text:"Pendente"},subtitle:u(i)?je==="pending_logbook"?`CombustÃvel inicial ${dn(v?.initial_fuel_source)}. Lance a perna no eDB para fechar uplift${v?.final_fuel_kg==null?" e combustÃvel final":""}.`:Qe?`Cadeia de combustÃvel consolidada (${dn(v?.initial_fuel_source)} â eDB).`:"Plano de combustÃvel ainda não consolidado para esta perna.":ke(String(i),220),metrics:[{k:"Inicial",v:Re(v?.initial_fuel_kg)},{k:"Fonte inicial",v:dn(v?.initial_fuel_source),kind:v?.initial_fuel_source?void 0:"mute"},{k:"Uplift",v:Re(v?.uplift_kg)},{k:"Final",v:Re(v?.final_fuel_kg)},{k:"Fonte final",v:dn(v?.final_fuel_source),kind:v?.final_fuel_source?void 0:"mute"},{k:"Alternado",v:Re(v?.alternate_fuel_kg),kind:v?.alternate_fuel_kg==null?"mute":void 0},{k:"Reserva 45 min",v:Re(v?.reserve_45_kg)},{k:"Requerido",v:v?.required_total_kg!=null?`${Math.round(v.required_total_kg)} kg${$a[v?.required_total_source]?` · ${$a[v.required_total_source]}`:""}`:"â",kind:v?.required_total_kg==null?"mute":void 0},{k:"Margem",v:v?.margin_kg!=null?`${Math.round(v.margin_kg)} kg`:"â",kind:v?.status==="fail"?"danger":v?.status==="warning"?"warn":void 0},{k:"Endurance",v:v?.endurance_remaining_minutes!=null?`${Math.round(v.endurance_remaining_minutes)} min${Aa[v?.endurance_basis]?` (${Aa[v.endurance_basis]})`:""}`:"â"}],snapshotCells:Hd(e?.fuel_snapshots),count:Qe?"1/1":"0/1"},manifest:{pill:Z?{kind:"ok",text:"100%"}:Se===0?{kind:"warn",text:"Sem passageiros"}:{kind:"warn",text:`${$e}%`},subtitle:Se===0?"Nenhum passageiro lançado no manifesto desta perna.":`Manifesto ${Je?"internacional (GENDEC)":"doméstico"} · ${oe.complete||0} de ${Se} com documentação completa · ${le?.confirmed?"confirmado pela tripulação":"ainda não confirmado"}.`,metrics:[{k:"Passageiros",v:Se||"â"},{k:"Completos",v:`${oe.complete||0} / ${Se||0}`},{k:"Pendentes",v:oe.incomplete||0,kind:(oe.incomplete||0)>0?"warn":void 0},{k:"Regime",v:Je?"Internacional":"Doméstico"},{k:"Confirmação",v:le?.confirmed?"Confirmado":"Pendente",kind:le?.confirmed?void 0:"warn"}],passengers:wt,count:`${oe.complete||0}/${Se||0}`},efrat:{pill:u(l)&&!Number.isFinite(e?.efrat?.score)?{kind:"warn",text:"Pendente"}:{kind:"ok",text:Number.isFinite(e?.efrat?.score)?`Score ${e.efrat.score}`:"OK"},subtitle:u(l)?Number.isFinite(e?.efrat?.score)?`eFRAT enviado${e?.efrat?.risk_classification?` â classificação ${e.efrat.risk_classification}`:""}.`:"eFRAT pré-voo ainda não enviado para esta perna.":ke(String(l),220),metrics:[{k:"Score",v:e?.efrat?.score??"â"},{k:"Risco principal",v:Ne?`${Ne.label}${Ne.value!=null?` (${Ne.value})`:""}`:"â",kind:Ne?"warn":"mute"},{k:"Status",v:e?.efrat?.status??"â"},{k:"Aprovação",v:e?.efrat?.approval_status??"â"}],count:u(l)&&!Number.isFinite(e?.efrat?.score)?"0/1":"1/1"},checklist:{pill:t?t.counters.pending>0?{kind:"warn",text:"Pendente"}:{kind:"ok",text:"100%"}:{kind:"warn",text:"Pendente"},subtitle:t?`Checklist operacional ${t.completionLabel}. ${t.counters.pending} pendência(s) crÃtica(s) e ${t.counters.na} N/A em ${t.counters.total} itens.`:"Checklist operacional ainda não preenchido para esta perna.",metrics:t?[{k:"Itens",v:`${t.counters.done} / ${t.counters.total}`},{k:"Pendentes",v:String(t.counters.pending),kind:t.counters.pending?"warn":"good"},{k:"N/A",v:String(t.counters.na)}]:[{k:"Itens",v:"â"},{k:"Pendentes",v:"â",kind:"mute"},{k:"N/A",v:"â",kind:"mute"}],count:t?`${t.counters.done}/${t.counters.total}`:"0/â"},performance:{pill:F?.status==="available"?{kind:"ok",text:"OK"}:{kind:"warn",text:"Pendente"},subtitle:F?.status==="available"?"Dados de pista, performance e W&B preservados a partir do Checklist Operacional.":"Performance, análise de pista ou W&B ainda não foram consolidados para esta perna.",metrics:[{k:"TODR · Decolagem",v:Sa(be?.takeoff_distance_m)},{k:"TOW · Decolagem",v:Re(be?.takeoff_weight_kg)},{k:"LDR · Pouso",v:Sa(be?.landing_distance_m),kind:be?.landing_distance_m==null?"mute":void 0},{k:"LW · Pouso",v:Re(be?.landing_weight_kg),kind:be?.landing_weight_kg==null?"mute":void 0},{k:"W&B",v:F?.wb_checked?"ok":"â",kind:F?.wb_checked?"good":"mute"}],notes:F?.notes||"",count:F?.status==="available"?"1/1":"0/1"},flightPlan:{pill:M?.approved?{kind:"ok",text:"Aprovado"}:M?.status==="available"?{kind:"warn",text:"Registrado"}:{kind:"warn",text:"Pendente"},subtitle:M?.approval_code?ke(String(M.approval_code),220):"Plano de voo aprovado (RPL/FPL) ainda não registrado no dossiê.",metrics:[{k:"Checked",v:M?.checked?"sim":"â",kind:M?.checked?"good":"mute"},{k:"Aprovado",v:M?.approved?"sim":"â",kind:M?.approved?"good":"warn"},{k:"FL",v:M?.flight_level||"â"}],count:M?.status==="available"?"1/1":"0/1"},tankering:{pill:E?.status==="available"?{kind:R?.result_action==="FUEL_AT_DEST"?"warn":"ok",text:"Calculado"}:{kind:"warn",text:"Pendente"},subtitle:E?.status==="available"?`Resultado: ${R?.result_action||"análise registrada"}.`:"Análise de fuel tankering ainda não registrada para esta perna.",metrics:[{k:"Origem",v:R?.origin_price!=null?Zn(R.origin_price):"â"},{k:"Destino",v:R?.destination_price!=null?Zn(R.destination_price):"â"},{k:"Uplift Orig.",v:Re(R?.origin_uplift_kg)},{k:"Economia",v:Zn(R?.result_savings)}],count:E?.status==="available"?"1/1":"0/1"},sigmet:{pill:Ud(T,Q),subtitle:T?.notes?ke(String(T.notes),220):T?.status==="available"?"SIGMET/GAMET ou mapas meteorológicos anexados ao dossiê.":"SIGMET/GAMET ainda não anexado ao dossiê operacional.",cells:[["departure","Partida"],["arrival","Chegada"]].map(([z,se])=>{const Ae=Ve?.[z],Te=Ae?.raw_text||"",we=Ae?.captured_after_flight?` 7· captura pós-voo (dado atual, não da hora do voo)`:"";return{label:`${se}${Ae?.airport?` · ${Ae.airport}`:""}`,value:Te?`${Te}${we}`:Gd(T,Q),missing:!Te&&!T?.checked&&!Q.total}}),metrics:[{k:"Checked",v:T?.checked?"sim":"â",kind:T?.checked?"good":"mute"},{k:"SIGMET",v:Q.hasCounts?`${Q.sigmetRoute}/${Q.sigmetTotal} na rota`:"â",kind:Q.sigmetTotal?"warn":Q.hasCounts?"good":"mute"},{k:"GAMET",v:Q.hasCounts?`${Q.gametRoute}/${Q.gametTotal} na rota`:"â",kind:Q.gametTotal?"warn":Q.hasCounts?"good":"mute"},{k:"FIR",v:Q.routeFirs.length?Q.routeFirs.join(", "):"â"},{k:"Texto",v:["departure","arrival"].filter(z=>Ve?.[z]?.raw_text).length||"â"},{k:"Mapas",v:Object.keys(T?.maps||{}).length||"â"},{k:"Captura",v:rt(T?.captured_at)||"â",kind:T?.captured_at?void 0:"mute"}],count:T?.status==="available"?"1/1":"0/1"},nasa:{pill:u(c)&&W?.status!=="available"?{kind:"danger",text:"Lacuna"}:{kind:"ok",text:"OK"},subtitle:u(c)&&W?.status!=="available"?"Avaliação subjetiva de carga ainda não submetida pela tripulação após a perna.":ke(String(c||"NASA-TLX registrado para esta perna."),220),metrics:[{k:"Score",v:W?.actual_tlx_score??"â"},...[["mental_demand","Mental"],["physical_demand","FÃsica"],["temporal_demand","Temporal"],["performance","Performance"],["effort","Esforço"],["frustration","Frustração"]].map(([z,se])=>({k:se,v:W?.dimensions?.[z]??"â",kind:W?.dimensions?.[z]==null?"mute":void 0}))],count:u(c)&&W?.status!=="available"?"0/1":"1/1"},risks:{pill:D?.status==="available"?{kind:"ok",text:`${Ze||1} reg.`}:{kind:"neutral",text:"Sem registro"},subtitle:D?.ai_report?.narrative?"Riscos do eFRAT/TEM preservados â relatório de risco gerado por IA disponÃvel no popup.":D?.status==="available"?"Riscos do eFRAT/TEM e divergências IA-operador preservados para consulta futura.":"Nenhum risco estruturado foi registrado para esta perna.",aiReport:D?.ai_report||null,metrics:[{k:"eFRAT",v:String(Ze||"â")},{k:"Risco principal",v:D?.main_risk?`${D.main_risk.label}${D.main_risk.value!=null?` (${D.main_risk.value})`:""}`:"â",kind:D?.main_risk?"warn":"mute"},{k:"Ameaça TEM",v:ie?.primary_threat||"â"},{k:"Decisão",v:ie?.operation_decision||"â"}],count:D?.status==="available"?"1/1":"0/1"}
7,fatigue:{pill:Be?.status==="available"&&pe.length?{kind:Ld[As(pe)]||"neutral",text:pe.length===1?pe[0].band_label||"OK":`Pior: ${Vd(pe)}`}:{kind:"neutral",text:"IndisponÃvel"},subtitle:Be?.status==="available"&&pe.length?`Fadiga composta da tripulação â jornada, repouso, madrugadas, Ãndice de Fadiga (iOS) e NASA-TLX. ${Be?.advisory||""}`:"Sem fontes de fadiga consolidadas para a tripulação desta perna (jornadas, iOS e NASA-TLX).",pilots:pe,aiNarrative:ve,count:String(pe.length||0)},debrief:{pill:u(d)&&!U?.submitted?{kind:"danger",text:"Lacuna"}:Y.editedAfterSnapshot?{kind:"warn",text:"Editado"}:{kind:"ok",text:"OK"},subtitle:u(d)&&!U?.submitted?"Debrief de voo ainda não enviado. Sem áudio nem notas do PIC.":ke(String(d||Y.title||Y.description||"Debrief registrado."),220),metrics:[{k:"Categoria",v:Ss(Y.category)||"â"},{k:"Severidade",v:Y.severity??"â"},{k:"Fase",v:Y.flightPhase||"â"},{k:"Eventos",v:Array.isArray(Y.legsSummary)?Y.legsSummary.length:"â"},{k:"Fonte",v:js[Y.source]||Y.source||"â",kind:"mute"},{k:"Enviado",v:rt(Y.submittedAt)||"â",kind:Y.submittedAt?void 0:"mute"}],count:u(d)&&!U?.submitted?"0/1":"1/1"}}}const ws=/^(\d{4})-(0[1-9]|1[0-2])$/,qd=[["edb","com eDB","com eDB"],["flown_without_edb","voado sem eDB","voados sem eDB"],["no_go","No-go","No-go"],["unresolved","sem desfecho","sem desfecho"]],Ea={popupBlocked:"O navegador bloqueou a nova aba do PDF. Permita pop-ups para abrir o PDF do perÃodo.",failed:"Não foi possÃvel gerar o PDF do perÃodo. Tente de novo em instantes."};function Xd(e){return!e||typeof e!="object"?"":qd.filter(([t])=>Number(e[t])>0).map(([t,o,a])=>$(Number(e[t]),o,a)).join(" · ")}function po(e){return!!e?.cohort&&e.cohort!=="edb"}function Kd(e){return ws.test(String(e||""))}function Mt(e){const t=Ke(e);return t?`${t.getFullYear()}-${me(t.getMonth()+1)}`:""}function Zt(e){const t=String(e||"").match(ws);return t?{year:Number(t[1]),monthIndex:Number(t[2])-1}:null}function Yd(e,t){const o=Zt(e);if(!o)return"";const a=new Date(o.year,o.monthIndex+t,1);return`${a.getFullYear()}-${me(a.getMonth()+1)}`}function Zd(e=12,t=new Date){const o=Mt(t);return Array.from({length:e},(a,i)=>Yd(o,-i))}function Es(e){const t=Zt(e);return t?Ei(t.monthIndex):""}function Io(e){const t=Zt(e);return t?`${jo(t.monthIndex)} ${t.year}`:""}function Oe(e){const t=Zt(e);return t?`${Ei(t.monthIndex)} de ${t.year}`:""}function Cs(e){const t=Zt(e);if(!t)return"";const o=new Date(t.year,t.monthIndex+1,0).getDate();return`01 a ${me(o)} ${jo(t.monthIndex)} ${t.year}`}function Ca(e){const t=Ke(e?.flight_date),o=t?t.getTime():0,a=Ti(e?.departure_time),[i,l]=a?a.split(":").map(Number):[0,0];return o+(i*60+l)*6e4}function _t(e){return[...e||[]].sort((t,o)=>Ca(o.flight)-Ca(t.flight))}function Fs(e){return gl(e?.flight_number)||`leg-${e?.id}`}function Qd(e){const t=new Map;for(const o of _t(e)){const a=Fs(o.flight);t.has(a)||t.set(a,[]),t.get(a).push(o)}return[...t.entries()].map(([o,a])=>{const i=[...a].reverse(),l=i.map(p=>p.audit?.index).filter(Number.isFinite),c=[...new Set(i.map(p=>p.flight?.flight_date).filter(Boolean))].sort(),d=i.reduce((p,f)=>p+(Number(f.flight?.block_minutes)||0),0),u=i.length?[String(i[0].flight?.departure_airport||"â").toUpperCase(),...i.map(p=>String(p.flight?.arrival_airport||"â").toUpperCase())]:[];return{key:o,flightNumber:String(i[0]?.flight?.flight_number||"").trim(),legs:i.map((p,f)=>{const h=Yt({acquisition:p.acquisition});return{...p,legIndex:h?.index??f+1,legCount:h?.count??i.length}}),datesLabel:c.length>1?`${xn(c[0]).slice(0,2)}â${xn(c[c.length-1])}`:xn(c[0]),blockMinutes:d,chain:u,edgeVerdicts:i.map(p=>p.audit?.verdict?.key||null),index:l.length?Math.round(l.reduce((p,f)=>p+f,0)/l.length):null}})}function Jd(e){return e?e.counts.parcial+e.counts.lacuna+(e.counts.captura||0):0}function Qn(e,t){return t==="ressalvas"?e.filter(o=>Jd(o.audit)>0):t==="mitigacao"?e.filter(o=>["moderado","alto"].includes(o.audit?.frat?.band?.key)):e}function eu(e){return Xt.map(t=>{const o=(e?.dimensions||[]).filter(i=>i.phase===t.key),a=o.filter(i=>i.status!=="na");return{key:t.key,label:t.label,cells:o.map(i=>({key:i.key,status:i.status,tip:`${i.label}: ${i.statusLabel}`})),ok:a.filter(i=>i.status==="ok").length,applicable:a.length,total:o.length}})}const tu=Object.fromEntries(Xt.map(e=>[e.key,Kt.filter(t=>t.phase===e.key).length]));function Fa(e){const t=e.filter(Number.isFinite);return t.length?t.reduce((o,a)=>o+a,0)/t.length:null}function kt(e){const t=Ot(e?.flight?.flight_number)||`Voo ${e?.flight?.id??""}`,o=Yt({acquisition:e?.acquisition});return o&&o.count>1?`${t} · perna ${o.index}`:t}function nu(e,t=4){const o=new Map;for(const a of e){const i=a.audit.frat;for(const l of i.topRisks||[]){const c=String(l?.label||l?.risk_id||"").trim();if(!c)continue;const d=o.get(c)||{label:c,count:0,top:null};d.count+=1,(!d.top||(i.score??-1)>(d.top.score??-1))&&(d.top={score:i.score,band:i.band,entry:a}),o.set(c,d)}}return[...o.values()].sort((a,i)=>i.count-a.count||(i.top.score??-1)-(a.top.score??-1)||a.label.localeCompare(i.label)).slice(0,t)}function ou(e){const t=String(e||"");return t.length>1&&t[0]!==t[0].toLowerCase()&&t[1]===t[1].toLowerCase()?t[0].toLowerCase()+t.slice(1):t}function au(e){return _t(e).filter(t=>(t.audit.failedRules||[]).length).map(t=>({entryKey:t.key,flight:t.flight,flightLabel:kt(t),checks:t.audit.failedRules.map(o=>({key:o.key,label:o.label,text:o.text}))}))}function Oo(e){const t=(e||[]).map(o=>o.text?`${o.label} (${ou(o.text)})`:o.label);return t.length<=1?t.join(""):`${t.slice(0,-1).join(", ")} e ${t[t.length-1]}`}function iu(e){return e?.length?{title:Pn,note:as,rows:e.map(t=>({...t,text:Oo(t.checks)}))}:{title:"",note:"",rows:[]}}function su(e){const t=e||[],o=t.filter(d=>
7d.status==="ready"&&Number.isFinite(d.audit?.index)),a=new Map,i=new Map;for(const d of o){const u=hs(d.audit);for(const p of u.losses){const f=a.get(p.key)||{key:p.key,label:p.label,short:p.short,points:0,legs:0,lacuna:0,parcial:0};f.points+=p.points,f.legs+=1,f[p.status]=(f[p.status]||0)+1,a.set(p.key,f)}for(const p of u.excluded){const f=i.get(p.key)||{key:p.key,label:p.label,short:p.short,captura:0,na:0};f[p.status]+=1,i.set(p.key,f)}}const l=o.length;return{index:l?Math.round(o.reduce((d,u)=>d+u.audit.index,0)/l):null,legCount:t.length,averaged:l,failed:t.filter(d=>d.status==="error").length,dimensionCount:Kt.length,losses:[...a.values()].map(d=>({...d,points:d.points/l})).sort((d,u)=>u.points-d.points||d.label.localeCompare(u.label)),excluded:[...i.values()]}}function ru(e){return[e.lacuna?`ausente em ${$(e.lacuna,"voo","voos")}`:"",e.parcial?`parcial em ${$(e.parcial,"voo","voos")}`:""].filter(Boolean).join(" e ")}function lu(e,{monthKey:t}={}){const{index:o,legCount:a=0,averaged:i=0,failed:l=0,dimensionCount:c=Kt.length,losses:d=[],excluded:u=[]}=e||{},p=Io(t);if(!Number.isFinite(o))return{rows:[{key:"base",label:"Sem Ãndice",text:`Nenhum voo avaliado ainda${p?` em ${p}`:""}: o Ãndice é a média dos voos avaliados.`}],disclaimer:An};const f=`${a} ${a===1?"elegÃvel":"elegÃveis"}${p?` em ${p}`:""}`,h=l?` ${$(l,"voo não pôde ser lido e fica","voos não puderam ser lidos e ficam")} fora da média.`:"",b=d.map(m=>`${m.short}, ${ru(m)} (${bs(m.points)})`),x=ys({capture:u.filter(m=>m.captura).map(m=>`${m.short} (${$(m.captura,"voo","voos")})`),notApplicable:u.filter(m=>m.na).map(m=>`${m.short} (${$(m.na,"voo","voos")})`)});return{rows:[{key:"base",label:`${o}/100`,text:`Média dos voos avaliados: ${$(i,"voo lido","voos lidos")} de ${f}.${h}`},{key:"rule",label:"Como conta",text:`Cada voo tem ${c} registros, do pré ao pós-voo. ${xs}`},{key:"losses",label:"O que mais pesou",text:b.length?`${Ro(b)}.`:"Nada: todos os registros considerados estão completos."},...x?[{key:"excluded",label:"Fora da conta",text:x}]:[],{key:"never",label:"Não entra no Ãndice",text:`${uo.charAt(0).toUpperCase()}${uo.slice(1)}.`}],disclaimer:An}}function Ns(e){const t=e||[],o=t.filter(m=>m.status==="ready"&&m.audit),a=Fa(o.map(m=>m.audit.index)),i=a===null?null:Math.round(a),l=o.reduce((m,_)=>({ok:m.ok+_.audit.counts.ok,parcial:m.parcial+_.audit.counts.parcial,lacuna:m.lacuna+_.audit.counts.lacuna,captura:m.captura+(_.audit.counts.captura||0),scored:m.scored+(_.audit.counts.scored??_.audit.counts.applicable),applicable:m.applicable+_.audit.counts.applicable}),{ok:0,parcial:0,lacuna:0,captura:0,scored:0,applicable:0}),c=o.filter(m=>m.audit.frat.band),d=Object.fromEntries(hn.map(m=>[m.key,0]));for(const m of c)d[m.audit.frat.band.key]+=1;const u=Fa(c.map(m=>m.audit.frat.score)),p=_t(o).flatMap(m=>m.audit.findings.map(_=>({..._,entryKey:m.key,flight:m.flight,flightLabel:kt(m)}))),f=new Set;t.some(m=>!po(m.flight))&&f.add("eDB Logbook"),t.some(m=>po(m.flight))&&f.add("Agenda de voos");for(const m of o)for(const _ of m.audit.sources||[])f.add(_);const h={conforme:0,ressalvas:0,nao_conforme:0};for(const m of o)m.audit.verdict&&(h[m.audit.verdict.key]+=1);const b=ss(i),x=au(o);return{legCount:t.length,readyCount:o.length,loadingCount:t.filter(m=>m.status==="loading").length,errorCount:t.filter(m=>m.status==="error").length,missionCount:new Set(t.map(m=>Fs(m.flight))).size,blockMinutes:t.reduce((m,_)=>m+(Number(_.flight?.block_minutes)||0),0),index:i,verdict:b,headline:rs(b),observations:x,failedLegs:x.length,verdictCounts:h,evidence:{...l,pct:l.scored?Math.round(l.ok/l.scored*100):null},conformingLegs:o.filter(m=>m.audit.counts.parcial+m.audit.counts.lacuna===0).length,frat:{assessed:c.length,average:u===null?null:Math.round(u*10)/10,bands:d,mitigated:d.moderado+d.alto,coveragePct:o.length?Math.round(c.length/o.length*100):null},findings:p,legsWithFindings:new Set(p.map(m=>m.entryKey)).size,systemFindingCount:p.filter(m=>m.system).length,captureEntryKeys:[...new Set(p.filter(m=>m.recapturable).map(m=>m.entryKey))],threats:nu(o),sources:[...f],trend:[..._t(o)].reverse().map(m=>({key:m.key,entry:m,index:m.audit.index,verdictKey:m.audit.verdict?.key||null,dateLabel:Gt(m.flight?.flight_date),destination:String(m.flight?.arrival_airport||"").toUpperCase(),frat:m.audit.frat,label:kt(m)}))}}function cu(e){const t=e.filter(Number.isFinite);return t.length?Math.max(0,Math.min(70,Math.floor((Math.min(...t)-5)/10)*10)):70}function du(e){if(!e.legCount)return{headline:"Nenhum voo elegÃvel neste m
7ês.",paragraph:"Escolha outro mês para ver a auditoria do perÃodo."};if(!e.readyCount)return{headline:e.errorCount===e.legCount?"Não foi possÃvel ler os registros.":"Lendo os registros do perÃodoâ¦",paragraph:`${$(e.legCount,"voo elegÃvel encontrado","voos elegÃveis encontrados")}. O Ãndice aparece assim que cada dossiê é lido.`};const t=[];return t.push(e.readyCount===e.legCount?`${e.readyCount} de ${e.legCount} voos lidos.`:`${e.readyCount} de ${e.legCount} voos lidos até agora.`),e.conformingLegs===e.readyCount?t.push("Em todos, os registros aplicáveis estão completos."):e.conformingLegs>0?t.push(`Em ${e.conformingLegs}, todos os registros aplicáveis estão completos.`):t.push("Nenhum voo está com todos os registros completos."),e.frat.assessed?e.frat.mitigated?t.push(`${$(e.frat.mitigated,"voo exigiu","voos exigiram")} mitigação de risco (eFRAT moderado ou alto).`):t.push("Todos os eFRAT registrados ficaram na faixa de risco baixo."):t.push("Nenhum voo tem eFRAT registrado."),t.push(e.findings.length?`${$(e.findings.length,"registro em aberto","registros em aberto")} em ${$(e.legsWithFindings,"voo","voos")}.`:"Nenhum registro em aberto."),e.evidence?.captura&&t.push(`${$(e.evidence.captura,"fonte não obtida pelo sistema ficou","fontes não obtidas pelo sistema ficaram")} fora do Ãndice.`),{headline:e.headline??e.verdict?.headline??"",paragraph:t.join(" ")}}function Un(e){return`https://wa.me/?text=${encodeURIComponent(e)}`}function uu({monthKey:e,summary:t}){const o=[`Auditoria de safety · ${Oe(e)}`];return t.index!==null&&o.push(`Ãndice de registros ${t.index}/100 · ${t.verdict?.label||""}`),o.push(`${t.readyCount} de ${t.legCount} voos lidos · ${$(t.missionCount,"missão","missões")} · ${ko(t.blockMinutes)} h de bloco`),t.evidence.pct!==null&&o.push(`Registros completos: ${t.evidence.pct}%`),o.push(`Registros em aberto: ${t.findings.length}`),t.failedLegs&&o.push(`${Pn}: ${$(t.failedLegs,"voo","voos")}`),o.push("â Zulbot"),o.join(` 8`)}function pu({flightLabel:e,routeSummary:t,dateLabel:o,audit:a,fdm:i=null}){const l=[`Dossiê de safety · ${e}`];(t||o)&&l.push([t,o].filter(Boolean).join(" · ")),a?.index!==null&&a?.index!==void 0&&(l.push(`Ãndice de registros ${a.index}/100 · ${a.verdict?.label||""}`),l.push(`${a.counts.ok} de ${a.counts.scored} registros completos`));const c=a?.findings||[];l.push(c.length?`Registros em aberto: ${c.map(u=>u.title).join("; ")}`:"Sem registros em aberto."),a?.failedRules?.length&&l.push(`${Pn}: ${Oo(a.failedRules)}`);const d=Jl(i);return d&&l.push(Pi,d),l.push("â Zulbot"),l.join(` 9`)}const fu=120*1e3,mu=12,xu=3,hu=2,Na={running:!1,done:0,total:0,failed:0,failures:[],outcome:null},Tn=new Map,Po=new Map;let zt=0;function Ms(e){return!!e&&Date.now()-e.at<fu}function bn(e,t){return e?.response?.data?.detail||e?.message||t}function Ht(e,t=Sn()){return`${t}|${e}`}function gu(){Tn.clear(),Po.clear(),zt+=1}yi(gu);function bu(){const[e,t]=y.useState(()=>Sn());return y.useEffect(()=>yi(o=>t(Sn(o))),[]),e}function Wo(e,t,{identity:o,generation:a}){a===zt&&Po.set(Ht(String(e),o),{at:Date.now(),acquisition:t})}function Bo(){return{identity:Sn(),generation:zt}}function Ma(e){const t=Tn.get(Ht(e));if(!Ms(t))return null;const{flights:o,truncated:a,cohortLabel:i,cohortCounts:l,eligibleCount:c}=t;return{flights:o,truncated:a,cohortLabel:i,cohortCounts:l,eligibleCount:c}}async function vu(e,t){const o=await Ie.getRecentFlights({month:e}),a=new Map;let i=o,l=1;for(;;){for(const d of Rn(i))d?.id&&!a.has(d.id)&&a.set(d.id,d);if(!i?.next_cursor||l>=mu||t())break;i=await Ie.getRecentFlights({month:e,cursor:i.next_cursor}),l+=1}const c=o?.cohort_counts;return{flights:[...a.values()],truncated:o?.truncated===!0||!!i?.next_cursor,cohortLabel:String(o?.cohort_label||""),cohortCounts:c&&typeof c=="object"?c:null,eligibleCount:Number.isFinite(o?.eligible_count)?o.eligible_count:null}}function yu(e,t){!e||!t||Wo(e,t,Bo())}
9function Da(e){const t=String(e.id),o=Po.get(Ht(t));return Ms(o)?{key:t,flight:e,status:"ready",audit:Lo(o.acquisition),acquisition:o.acquisition,error:""}:null}function Ra(e){return{key:String(e.id),flight:e,status:"loading",audit:null,acquisition:null,error:""}}const Jn={flights:[],truncated:!1,cohortLabel:"",cohortCounts:null,eligibleCount:null};function zo(e){const t=bu(),[o,a]=y.useState(()=>{const d=Ma(e);return{...d||Jn,loading:!!e&&!d,error:""}}),[i,l]=y.useState(0);y.useEffect(()=>{if(!e){a({...Jn,loading:!1,error:""});return}const d=Ma(e);if(d){a({...d,loading:!1,error:""});return}let u=!1;const p={identity:t,generation:zt};return a(f=>({...f,loading:!0,error:""})),vu(e,()=>u).then(f=>{u||(p.generation===zt&&Tn.set(Ht(e,p.identity),{at:Date.now(),...f}),a({...f,loading:!1,error:""}))}).catch(f=>{u||a({...Jn,loading:!1,error:bn(f,"Não foi possÃvel carregar os voos do mês.")})}),()=>{u=!0}},[e,i,t]);const c=y.useCallback(()=>{Tn.delete(Ht(e)),l(d=>d+1)},[e]);return{...o,reload:c}}async function La(e){const t=Bo(),o=await Ie.acquireEvidence(e.id);return Wo(e.id,o,t),{status:"ready",audit:Lo(o),acquisition:o,error:""}}function Ds(e){const[t,o]=y.useState(()=>(e||[]).map(u=>Da(u)||Ra(u))),a=y.useCallback((u,p)=>{o(f=>f.map(h=>h.key===u?{...h,...p}:h))},[]);y.useEffect(()=>{const u=(e||[]).map(x=>Da(x)||Ra(x));o(u);const p=u.filter(x=>x.status==="loading");let f=!1,h=0;const b=async()=>{for(;!f&&h<p.length;){const x=p[h];h+=1;try{const m=await La(x.flight);f||a(x.key,m)}catch(m){f||a(x.key,{status:"error",error:bn(m,"Falha ao ler as evidências.")})}}};for(let x=0;x<Math.min(xu,p.length);x+=1)b();return()=>{f=!0}},[e,a]);const i=y.useCallback(async u=>{const p=(e||[]).find(f=>String(f.id)===String(u));if(p){a(String(u),{status:"loading",error:""});try{a(String(u),await La(p))}catch(f){a(String(u),{status:"error",error:bn(f,"Falha ao ler as evidências.")})}}},[e,a]),[l,c]=y.useState(Na),d=y.useCallback(async(u,{force:p=!1}={})=>{const f=new Set((u||[]).map(String)),h=(e||[]).filter(m=>f.has(String(m.id)));if(!h.length)return;c({...Na,running:!0,total:h.length});let b=0;const x=async()=>{for(;b<h.length;){const m=h[b];b+=1;let _=null,v=null;try{const A=Bo(),F=await Ie.captureExternalEvidence(m.id,{force:p});Wo(m.id,F,A),a(String(m.id),{status:"ready",audit:Lo(F),acquisition:F,error:""}),v=Fd(F)}catch(A){_={key:String(m.id),reason:bn(A,"A captura externa não respondeu.")}}c(A=>({...A,done:A.done+1,failed:A.failed+(_?1:0),failures:_?[...A.failures,_]:A.failures,outcome:Nd(A.outcome,v)}))}};await Promise.all(Array.from({length:Math.min(hu,h.length)},x)),c(m=>({...m,running:!1}))},[e,a]);return{entries:t,retryEntry:i,captureEntries:d,capture:l}}const Ho=[{key:"todas",label:"Todas"},{key:"pre",label:"Pré-voo"},{key:"voo",label:"Em voo"},{key:"pos",label:"Pós-voo"},{key:"fdm",label:"FDM"},{key:"pendencias",label:"Lacunas"}],_u=[{key:"proprietario",label:"Proprietário"},{key:"operacional",label:"Operacional"}],ku=new Set(["parcial","lacuna","captura"]);function Gn(e,t){return e?t==="todas"?!0:t==="pendencias"?ku.has(e.status):t==="fdm"?Ni.includes(e.key):e.phase===t:!1}function ju(e){return e==="fdm"?null:e==="pendencias"?{complete:!0,text:"Nenhum registro em aberto neste voo. Todos os registros estão completos."}:e==="todas"?{complete:!1,text:"Nenhuma evidência foi lida para este voo ainda."}:{complete:!1,text:`Nenhum registro de ${Ho.find(o=>o.key===e)?.label||"esta fase"} neste voo. Escolha âTodasâ para ver o dossiê inteiro.`}}function Su(e,{fdm:t=null}={}){const o=e||[];return Object.fromEntries(Ho.map(a=>[a.key,a.key==="fdm"?Kl(o,t):o.filter(i=>Gn(i,a.key)).length]))}function $u(e){const t=[`${e.total} ${e.total===1?"registro":"registros"}`,`${e.ok} ${e.ok===1?"completo":"completos"}`];
9return e.lacuna&&t.push(`${e.lacuna} ${e.lacuna===1?"lacuna":"lacunas"}`),e.parcial&&t.push(`${e.parcial} ${e.parcial===1?"parcial":"parciais"}`),e.captura&&t.push(`${e.captura} fora do Ãndice`),e.na&&t.push(`${e.na} n/a`),t.join(" · ")}const Le="pendencias",Rs="Registros que ainda não chegaram ao dossiê. Um registro em aberto não significa que a tarefa deixou de ser feita.",Au="O Zulbot não guarda o histórico de registros já fechados: a lista mostra o que segue em aberto nos dossiês",Ls=[{owner:H.system,title:"Sistema · captura",tag:"captura",note:"O sistema não guardou o registro na hora do voo. Não é falha da tripulação e não pesa no Ãndice."},{owner:H.crew,title:"Tripulação ou despacho",tag:"tripulação",note:"Registros lançados nos módulos do Zulbot (checklist, eFRAT, eDB, debrief, NASA-TLX)."},{owner:H.operator,title:"Cadastro do operador",tag:"operador",note:"Dados de cadastro da empresa (aeronave), não registros do voo."}],Tu=Object.fromEntries(Ls.map(e=>[e.owner,e])),wu=[{key:"metar",label:"METAR · origem e destino",matches:e=>e.system&&e.dimension==="MET"},{key:"notam",label:"NOTAM · partida e chegada",matches:e=>e.system&&e.dimension==="NTM"},{key:"passengers",label:"Manifesto de passageiros",matches:e=>["missing_passenger_documents","missing_manifest"].includes(e.key)},{key:"load",label:"Manifesto · peso e combustÃvel",matches:e=>["missing_weight_balance","missing_departure_fuel"].includes(e.key)},{key:"aircraft",label:"Aeronave · consumo médio",matches:e=>e.key==="missing_burn_rate"},{key:"tlx",label:"NASA-TLX pós-voo",matches:e=>e.dimension==="TLX"},{key:"efrat",label:"eFRAT pré-voo",matches:e=>e.dimension==="FRT"},{key:"debrief",label:"Debrief",matches:e=>e.dimension==="DBF"},{key:"sigmet",label:"SIGMET/GAMET · revisão",matches:e=>e.key==="missing_sigmet_gamet"},{key:"performance",label:"Análise de pista",matches:e=>e.dimension==="PRF"},{key:"fuel",label:"CombustÃvel no eDB",matches:e=>e.dimension==="CMB"},{key:"checklist",label:"Checklist operacional",matches:e=>e.dimension==="CHK"},{key:"fpl",label:"Plano de voo aprovado",matches:e=>e.dimension==="FPL"}];function Eu(e){return wu.find(t=>t.matches(e))||{key:`other-${Vt(e)}`,label:"Outros registros"}}function Cu(e){const t=new Map;for(const o of e||[]){const a=Eu(o),i=t.get(a.key)||{key:a.key,label:a.label,owner:Vt(o),count:0,entryKeys:new Set};i.count+=1,i.entryKeys.add(o.entryKey),t.set(a.key,i)}return[...t.values()].map(({entryKeys:o,...a})=>({...a,legs:o.size,firstEntryKey:[...o][0]||""})).sort((o,a)=>a.count-o.count||o.label.localeCompare(a.label))}function eo(e){return[...new Set(e.map(t=>t.entryKey))]}function Fu(e){const t=e||[],o=t.filter(a=>a.recapturable);return{count:t.length,legs:eo(t).length,recapturableCount:o.length,recapturableEntryKeys:eo(o),groups:Ls.map(a=>{const i=t.filter(l=>Vt(l)===a.owner);return{...a,findings:i,count:i.length,legs:eo(i).length,kinds:Cu(i)}}).filter(a=>a.count)}}function Nu(e){return e.count?`${$(e.count,"registro em aberto","registros em aberto")} em ${$(e.legs,"voo","voos")}.`:"Nenhum registro em aberto."}function Mu(e){if(!e)return"";if(e.running)return`Capturando ${e.done} de ${e.total} voosâ¦`;if(!e.total)return"";const t=e.failed?`Captura concluÃda · ${e.failed} de ${e.total} voos não foram capturados.`:`Captura concluÃda em ${$(e.total,"voo","voos")}.`,o=Rd(e.outcome);return o?`${t} ${o}.`:t}const Du=10;function Ru({monthKey:e,findings:t,limit:o=Du}){const a=t||[],i=[`Lembrete de registros · Auditoria de safety · ${Oe(e)}`];for(const l of a.slice(0,o))i.push(`⢠${l.flightLabel} â ${l.title}`);return a.length>o&&i.push(`⢠+${$(a.length-o,"registro","registros")}`),i.push("Quando puder, complete esses registros no Zulbot. Obrigado!"),i.join(` 10`)}function Is({flightLabel:e,routeSummary:t,findings:o}){const a=o||[],i=a.length>1;return[`${i?"Lembrete de registros":"Lembrete de registro"} · ${e}${t?` (${t})`:""}`,...a.map(l=>`⢠${l.title}`),`Quando puder, complete ${i?"esses registros":"esse registro"} no Zulbot. Obrigado!`].join(` 11`)}const g='"Barlow Condensed", "Barlow", sans-serif',ut='"Barlow", "Roboto", "Helvetica", "Arial", sans-serif',s={page:"var(--color-bg)",surface:"var(--color-neutral-100)",ink:"var(--color-text)",ink2:"var(--color-neutral-900)",muted:"color-mix(in srgb, var(--color-text) 64%, var(--color-bg))",faint:"var(--color-neutral-500)",line:"var(--color-neutral-300)",lineSoft:"var(--color-neutral-200)",lineDash:"var(--color-neutral-400)",crosshair:"var(--color-neutral-600)",grid:"var(--color-neutral-200)",axis:"var(--color-neutral-500)",accent:"var(--color-accent)",accentInk:"var(--color-accent-800)",accentDeep:"var(--color-accent-900)",steelSoft:"color-mix(in srgb, var(--color-accent) 10%, var(--color-neutral-100))",steelHover:"color-mix(in srgb, var(--color-accent) 5%, var(--color-neutral-100))",ringTrack:"color-mix(in srgb, var(--color-accent) 8%, var(--color-neutral-200))",flagBg:"var(--color-surface)",codeBg:"var(--color-surface)",white:"#fff",whatsapp:"#25D366"},he=`repeating-linear-gradient(135deg, ${s.ink2} 0 1.5px, transparent 1.5px 4px)`,Vn=`repeating-linear-gradient(135deg, ${s.accent} 0 1.5px, transparent 1.5px 4px)`,Os={backgroundColor:s.surface,backgroundImage:`linear-gradient(${s.grid} 1px, transparent 1px), linear-gradient(90deg, ${s.grid} 1px, transparent 1px)`,backgroundSize:"22px 22px"},j={good:{fg:s.accentInk,bg:"transparent",bd:s.accent,dot:s.accent,bs:"solid"}
11,partial:{fg:s.ink,bg:"transparent",bd:s.ink2,dot:he,bs:"solid"},gap:{fg:s.white,bg:s.ink2,bd:s.ink2,dot:s.white,bs:"solid"},info:{fg:s.accentInk,bg:s.steelSoft,bd:s.steelSoft,dot:s.accent,bs:"solid"},capture:{fg:s.accentInk,bg:s.steelSoft,bd:s.accent,dot:Vn,bs:"dashed"},na:{fg:s.muted,bg:"transparent",bd:s.faint,dot:"transparent",bs:"dashed"}},Lu={ok:j.good,parcial:j.partial,lacuna:j.gap,captura:j.capture,na:j.na},fo={ok:{bg:s.accent,border:`1px solid ${s.accent}`},parcial:{bg:he,border:`1px solid ${s.ink2}`},lacuna:{bg:s.ink2,border:`1px solid ${s.ink2}`},captura:{bg:Vn,border:`1px dashed ${s.accent}`},na:{bg:"transparent",border:`1px dashed ${s.faint}`}},Iu={ok:s.accent,parcial:s.ink2,lacuna:s.ink2,captura:s.accent,na:s.faint},We={conforme:s.accent,ressalvas:s.accentDeep,nao_conforme:s.ink2},mo={baixo:j.good,moderado:j.partial,alto:j.gap},Ou={VFR:j.good,MVFR:j.partial,IFR:j.gap,LIFR:j.gap},Ps={fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".2em",textTransform:"uppercase",color:s.muted},te={fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".16em",textTransform:"uppercase",color:s.muted},C={met:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",ntm:"M3 11l18-5v12L3 14v-3z M11.6 16.8a3 3 0 1 1-5.8-1.6",fpl:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15 M3 19a3 3 0 1 0 6 0a3 3 0 1 0 -6 0 M15 5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0",cmb:"M3 22h12 M4 9h10 M14 22V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v18 M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0V9.83a2 2 0 0 0-.59-1.42L18 5",prf:"M12 14l4-4 M3.34 19a10 10 0 1 1 17.32 0",frt:"M12 2l9 4v6c0 5-4 9-9 10-5-1-9-5-9-10V6l9-4z M9 12l2 2 4-4",chk:"M3 17l2 2 4-4 M3 7l2 2 4-4 M13 6h8 M13 12h8 M13 18h8",pax:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2 M5 7a4 4 0 1 0 8 0a4 4 0 1 0 -8 0 M22 21v-2a4 4 0 0 0-3-3.87 M16 3.13a4 4 0 0 1 0 7.75",fad:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",exe:"M21 16v-2l-8-5V3.5a1.5 1.5 0 0 0-3 0V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5L21 16z",tlx:"M22 12h-4l-3 9L9 3l-3 9H2",dbf:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",edb:"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z",dec:"M2 22h20 M6.36 17.4 4 17l-2-4 1.1-.55a2 2 0 0 1 1.8 0l.17.1a2 2 0 0 0 1.8 0L8 12 5 6l.9-.45a2 2 0 0 1 2.09.2l4.02 3a2 2 0 0 0 2.1.2l4.19-2.06a2.41 2.41 0 0 1 1.73-.17L21 7a1.4 1.4 0 0 1 .87 1.99l-.38.76c-.23.46-.6.84-1.07 1.08L7.58 17.2a2 2 0 0 1-1.22.18Z",apr:"M2 22h20 M3.77 10.77 2 9l2-4.5 1.1.55c.55.28.9.84.9 1.45s.35 1.17.9 1.45L8 8.5l3-6 1.05.53a2 2 0 0 1 1.09 1.52l.72 5.4a2 2 0 0 0 1.09 1.52l4.4 2.2c.42.22.78.55 1.01.96l.6 1.03c.49.88-.06 1.98-1.06 2.1l-1.18.15c-.47.06-.95-.02-1.37-.24L4.29 11.15a2 2 0 0 1-.52-.38Z",calendar:"M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z M16 2v4 M8 2v4 M3 10h18",chevronDown:"M6 9l6 6 6-6",chevronRight:"M9 18l6-6-6-6",chevronLeft:"M15 18l-6-6 6-6",arrowLeft:"M12 19l-7-7 7-7 M19 12H5",whatsapp:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",download:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4 M7 10l5 5 5-5 M12 15V3",print:"M6 9V2h12v7 M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2 M6 14h12v8H6z",refresh:"M21 12a9 9 0 1 1-2.64-6.36L21 8 M21 3v5h-5",crosshair:"M2 12a10 10 0 1 0 20 0a10 10 0 1 0 -20 0 M8 12a4 4 0 1 0 8 0a4 4 0 1 0 -8 0 M22 12h-4 M6 12H2 M12 6V2 M12 22v-4",lock:"M3 11h18v11H3z M7 11V7a5 5 0 0 1 10 0v4",alert:"M10.3 3.86l-8.4 14a2 2 0 0 0 1.7 3h16.8a2 2 0 0 0 1.7-3l-8.4-14a2 2 0 0 0-3.4 0z M12 9v4 M12 17h.01",check:"M20 6L9 17l-5-5",radar:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0 M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0 M12 3v9l6 4",file:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2v6h6 M8 13h8 M8 17h5",sparkle:"M12 3l1.9 5.6L19.5 10l-5.6 1.9L12 17.5l-1.9-5.6L4.5 10l5.6-1.4z",info:"M2 12a10 10 0 1 0 20 0a10 10 0 1 0 -20 0 M12 16v-4 M12 8h.01"};function q({d:e,size:t=15,color:o="currentColor",strokeWidth:a=2,fill:i="none",sx:l}){return n.jsx(r,{component:"svg","aria-hidden":"true",width:t,height:t,viewBox:"0 0 24 24",fill:i,stroke:i==="none"?o:"none",strokeWidth:a,strokeLinecap:"round",strokeLinejoin:"round",sx:{flex:"none",...l},children:n.jsx("path",{d:e})})}const Pu=`linear-gradient(${s.crosshair},${s.crosshair}) center/1px 100% no-repeat, linear-gradient(${s.crosshair},${s.crosshair}
11) center/100% 1px no-repeat`,Wu=[{top:-7,left:-7},{top:-7,right:-7},{bottom:-7,left:-7},{bottom:-7,right:-7}];function Ws(){return Wu.map(e=>n.jsx(r,{component:"span","aria-hidden":"true",sx:{position:"absolute",width:13,height:13,pointerEvents:"none",background:Pu,...e}},`${e.top??"b"}-${e.left??"r"}`))}function ne({children:e,grid:t=!1,sx:o,...a}){return n.jsxs(r,{sx:{position:"relative",minWidth:0,bgcolor:s.surface,border:`1px solid ${s.line}`,...t?Os:null,...o},...a,children:[n.jsx(Ws,{}),e]})}function xe({children:e,sx:t,component:o="span",...a}){return n.jsx(r,{component:o,sx:{...Ps,...t},...a,children:e})}function $t({children:e,sx:t,component:o="span",...a}){return n.jsx(r,{component:o,sx:{...te,...t},...a,children:e})}function Uo({children:e,sx:t,color:o}){return n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.75,...t},children:[n.jsx(xe,{sx:{whiteSpace:"nowrap",...o?{color:o}:null},children:e}),n.jsx(r,{component:"span",sx:{flex:1,minWidth:24,height:"1px",bgcolor:s.line}})]})}function Bs({num:e,size:t}){return n.jsx(r,{component:"span",sx:{width:t,height:t,flex:"none",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:s.ink2,color:s.white,fontFamily:g,fontSize:t>=44?19:15,fontWeight:600,letterSpacing:".04em"},children:e})}function At({num:e,title:t,kicker:o,meta:a,right:i,id:l}){return n.jsxs(r,{id:l,sx:{display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:"space-between",gap:"12px 20px",pb:1.75,borderBottom:`1px dashed ${s.lineDash}`},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.75,flexWrap:"wrap",minWidth:0},children:[e?n.jsx(Bs,{num:e,size:44}):null,n.jsx(r,{component:"h2",sx:{m:0,fontFamily:g,fontWeight:700,fontSize:{xs:26,md:32},lineHeight:1,color:s.ink},children:t}),o?n.jsx(xe,{children:o}):null,a?n.jsx(r,{component:"span",sx:{fontSize:15,color:s.muted},children:a}):null]}),i]})}function zs({num:e,title:t,kicker:o,right:a}){return n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap",pb:1.75,borderBottom:`1px dashed ${s.lineDash}`},children:[e?n.jsx(Bs,{num:e,size:34}):null,n.jsx(r,{component:"h3",sx:{m:0,fontFamily:g,fontWeight:700,fontSize:24,lineHeight:1.05,color:s.ink},children:t}),o?n.jsx(xe,{children:o}):null,a?n.jsx(r,{sx:{ml:"auto"},children:a}):null]})}const Ia={outline:{bg:"transparent",bd:s.line,fg:s.ink,hoverBd:s.accent,hoverFg:s.accentInk},primary:{bg:s.accent,bd:s.accent,fg:s.white,hoverFilter:"brightness(1.08)"},dark:{bg:s.ink2,bd:s.ink2,fg:s.white,hoverFilter:"brightness(1.15)"},steel:{bg:"transparent",bd:s.accent,fg:s.accentInk,hoverBg:s.steelSoft},whatsapp:{bg:"transparent",bd:s.line,fg:s.ink,hoverBd:s.whatsapp}},Oa={md:{padding:"10px 16px",fontSize:15},sm:{padding:"7px 10px",fontSize:14}};function Hs(e,t){const o=Ia[e]||Ia.outline;return{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:1,...Oa[t]||Oa.md,fontFamily:g,fontWeight:600,letterSpacing:".14em",textTransform:"uppercase",whiteSpace:"nowrap",cursor:"pointer",borderRadius:0,textDecoration:"none",bgcolor:o.bg,border:`1px solid ${o.bd}`,color:o.fg,transition:"border-color .15s, color .15s, background-color .15s, filter .15s","&:hover":{textDecoration:"none",color:o.hoverFg||o.fg,...o.hoverBd?{borderColor:o.hoverBd}:null,...o.hoverBg?{bgcolor:o.hoverBg}:null,...o.hoverFilter?{filter:o.hoverFilter}:null},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:2},'&:disabled, &[aria-disabled="true"]':{opacity:.45,cursor:"not-allowed",filter:"none"}}}function X({variant:e="outline",size:t="md",icon:o,iconColor:a,children:i,sx:l,...c}){const d=a||(e==="whatsapp"?s.whatsapp:"currentColor");return n.jsxs(r,{component:"button",type:"button",sx:{...Hs(e,t),...l},...c,children:[o?n.jsx(q,{d:o,size:15,color:d}):null,i]})}function Qt({href:e,children:t,variant:o="whatsapp",size:a="md",sx:i,...l}){return n.jsxs(r,{component:"a",href:e,target:"_blank",rel:"noopener noreferrer",sx:{...Hs(o,a),...i},...l,children:[n.jsx(q,{d:C.whatsapp,size:15,color:o==="primary"?s.white:s.whatsapp}),t]})}function Ge({children:e,sx:t,...o}){return n.jsx(r,{component:"button",type:"button",sx:{p:0,border:0,bgcolor:"transparent",curs
11or:"pointer",fontFamily:g,fontSize:14,fontWeight:600,letterSpacing:".1em",textTransform:"uppercase",color:s.accentInk,whiteSpace:"nowrap","&:hover":{textDecoration:"underline"},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:2},...t},...o,children:e})}function ee({tone:e=j.good,children:t,size:o="md",sx:a,...i}){const l=o==="sm";return n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:"7px",px:l?.875:1.25,py:l?"2px":.5,fontFamily:g,fontSize:l?12:13,fontWeight:600,letterSpacing:l?".08em":".12em",textTransform:"uppercase",whiteSpace:"nowrap",color:e.fg,background:e.bg,border:`1px ${e.bs} ${e.bd}`,...a},...i,children:[l?null:n.jsx(r,{component:"span",sx:{width:7,height:7,flex:"none",background:e.dot,boxShadow:`inset 0 0 0 1px ${e.bd}`}}),t]})}function Us({children:e,sx:t}){return n.jsx(r,{component:"span",sx:{px:1,py:"3px",border:`1px solid ${s.line}`,fontFamily:g,fontSize:14,fontWeight:500,letterSpacing:".04em",color:s.ink2,whiteSpace:"nowrap",...t},children:e})}function Bu(){return n.jsx(r,{component:"span","aria-hidden":"true",sx:{width:7,height:7,display:"inline-block",bgcolor:s.accent,animation:"safetyAuditPulse 3s ease-in-out infinite","@keyframes safetyAuditPulse":{"0%, 100%":{opacity:.4},"50%":{opacity:1}},"@media (prefers-reduced-motion: reduce)":{animation:"none"}}})}function ce({status:e,color:t,kind:o="cell",size:a=10}){if(o==="bar")return n.jsx(r,{component:"span",sx:{width:4,height:14,bgcolor:t}});if(o==="line")return n.jsx(r,{component:"span",sx:{width:16,borderTop:`1.5px dashed ${s.ink2}`}});const i=e?fo[e]:{bg:t,border:`1px solid ${t}`};return n.jsx(r,{component:"span",sx:{width:a,height:a,flex:"none",boxSizing:"border-box",background:i.bg,border:i.border}})}function Go({children:e,sx:t}){return n.jsx(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"8px 16px",fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".1em",textTransform:"uppercase",color:s.ink2,...t},children:e})}function de({swatch:e,children:t}){return n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75},children:[e,t]})}function Ut({label:e,options:t,value:o,onChange:a,ariaLabel:i,testIdPrefix:l}){return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.625},children:[e?n.jsx($t,{children:e}):null,n.jsx(r,{role:"group","aria-label":i||e,sx:{display:"flex",flexWrap:"wrap",gap:"1px",bgcolor:s.line,border:`1px solid ${s.line}`},children:t.map(c=>{const d=c.key===o;return n.jsxs(r,{component:"button",type:"button","aria-pressed":d,"data-testid":c.testId||(l?`${l}-${c.key}`:void 0),onClick:()=>a(c.key),sx:{display:"inline-flex",alignItems:"center",gap:"7px",px:1.75,py:1.125,border:0,borderRadius:0,cursor:"pointer",fontFamily:g,fontWeight:600,fontSize:15,letterSpacing:".14em",textTransform:"uppercase",whiteSpace:"nowrap",bgcolor:d?s.ink2:s.surface,color:d?s.white:s.ink2,"&:hover":d?null:{bgcolor:s.steelHover},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:-2}},children:[c.label,c.count!==void 0?n.jsx(r,{component:"span",sx:{fontSize:12,opacity:.7,fontVariantNumeric:"tabular-nums"},children:c.count}):null]},c.key)})})]})}const zu=Object.fromEntries(Lt.map(e=>[e.key,e.segment])),Pa=[{key:"nao_conforme",share:70,compact:"< 70",named:"Incompletos < 70"},{key:"ressalvas",share:15,compact:"70â84 ressalvas",named:"Ressalvas 70â84"},{key:"conforme",share:15,compact:"⥠85 completos",named:"Completos ⥠85"}];function Gs({verdictKey:e,size:t="md",sx:o}){const a=t==="md";return n.jsxs(r,{component:"span","data-testid":"verdict-pill",sx:{display:"inline-flex",alignItems:"center",gap:1.25,height:a?44:34,px:a?2:1.5,bgcolor:We[e]||s.ink2,color:s.white,fontFamily:g,fontSize:a?18:15,fontWeight:600,letterSpacing:".14em",textTransform:"uppercase",whiteSpace:"nowrap",...o},children:[n.jsx(r,{component:"span",sx:{width:8,height:8,bgcolor:s.white,flex:"none"}}),zu[e]||"â"]})}function Vs({index:e,labels:t="compact",showValue:o=!0,sx:a}){const i=Number.isFinite(e),l=`${Math.max(0,Math.min(100,i?e:0))}%`;return n.jsxs(r,{sx:{flex:"1 1 240px",minWidth:200,...a},"aria-label":i?`Ãndice de registros ${e} na escala de 0 a 100`:"Ãndice indisponÃvel",role:"img",children:[n.jsx(r,{sx:{display:"flex",height:8,gap:"2px"},children:Pa.map(c=>n.jsx(r,{component:"span",sx:{flex:c.share,bgcolor:We[c.key]}},c.key))}),n.jsx(r,{sx:{position:"relative",height:o?26:14},children:i?n.jsxs(n.Fragment,{children:[n.jsx(r,{component:"span",sx:{position:"absolute",left:l,top:0,width:0,height:0,borderLeft:"6px solid transparent",borderRight:"6px solid transparent",borderBottom:`8px solid ${s.ink2}`,transform:"translateX(-50%)"}}),o?n.jsx(r,{component:"span",sx:{position:"absolute",left:l,top:9,transform:"translateX(-50%)",fontFamily:g,fontSize:12,fontWeight:700,color:s.ink},children:e}):null]}):null}),n.jsx(r,{sx:{display:"flex",justifyContent:"space-between",gap:1,fontFamily:g,fontSize:11,fontWeight:600,letterSpacing:".1em",textTransform:"uppercase",color:s.muted},children:Pa.map(c=>n.jsx("span",{children:c[t]||c.compact},c.key))})]})}const Hu={ok:{bgcolor:s.accent},na:{border:`1px dashed ${s.faint}`},captura:{background:Vn,border:`1px solid ${s.accent}`}};function qs({items:e,sx:t}){return n.jsx(r,{sx:{display:"flex",gap:"3px",...t},role:"img","aria-label":`${e.filter(o=>o.status==="ok").length} de ${e.length} completos`,children:e.map(o=>n.jsx(r,{component:"span",title:`${o.label}: ${o.statusLabel}`,sx:{flex:1,height:8,boxSizing:"border-box",...Hu[o.status]||{bgcolor:s.ink2}}},o.key))})}function Dt({value:e,unit:t}
11){return n.jsxs(r,{component:"span",sx:{display:"flex",alignItems:"baseline",gap:.5},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:36,lineHeight:1,color:s.ink,pb:"3px",borderBottom:`1px dashed ${s.muted}`,fontVariantNumeric:"tabular-nums"},children:e}),t?n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:18,fontWeight:600,color:s.muted},children:t}):null]})}function Xs({score:e,size:t=40,stroke:o=4,color:a=s.accent,fontSize:i=16,children:l}){const c=(t-o*2)/2,d=2*Math.PI*c,u=Number.isFinite(e)?Math.max(0,Math.min(100,e))/100*d:0,p=t/2;return n.jsxs(r,{sx:{position:"relative",width:t,height:t,flex:"none"},children:[n.jsxs("svg",{width:t,height:t,viewBox:`0 0 ${t} ${t}`,"aria-hidden":"true",children:[n.jsx("circle",{cx:p,cy:p,r:c,fill:"none",stroke:s.ringTrack,strokeWidth:o}),n.jsx("circle",{cx:p,cy:p,r:c,fill:"none",stroke:a,strokeWidth:o,strokeDasharray:`${u.toFixed(2)} ${d.toFixed(2)}`,transform:`rotate(-90 ${p} ${p})`})]}),n.jsx(r,{sx:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",fontFamily:g,fontWeight:700,fontSize:i,lineHeight:1,color:s.ink},children:l??(Number.isFinite(e)?e:"â")})]})}function Ks(e,t,o,a){const i=Math.PI*(1-e);return`${(t+a*Math.cos(i)).toFixed(1)} ${(o-a*Math.sin(i)).toFixed(1)}`}const ht={cx:24,cy:26,r:18},Wa=Ks(vt/De,ht.cx,ht.cy,ht.r),Ba=Ks(yt/De,ht.cx,ht.cy,ht.r);function Uu({score:e}){const t=Number.isFinite(e),o=t?Math.max(0,Math.min(1,e/De)):0;return n.jsxs("svg",{width:"48",height:"32",viewBox:"0 0 48 32","aria-hidden":"true",style:{flex:"none"},children:[n.jsx("path",{d:`M6 26 A18 18 0 0 1 ${Wa}`,stroke:s.accent,strokeWidth:"4",fill:"none"}),n.jsx("path",{d:`M${Wa} A18 18 0 0 1 ${Ba}`,stroke:s.ink2,strokeWidth:"4",fill:"none",strokeDasharray:"1.2 2.4"}),n.jsx("path",{d:`M${Ba} A18 18 0 0 1 42 26`,stroke:s.ink2,strokeWidth:"4",fill:"none"}),t?n.jsx("polygon",{points:"24,10 22.3,26 25.7,26",fill:s.ink,transform:`rotate(${(o*180-90).toFixed(1)} 24 26)`}):null,n.jsx("circle",{cx:"24",cy:"26",r:"3.2",fill:s.ink}),n.jsx("circle",{cx:"24",cy:"26",r:"1.1",fill:s.surface})]})}const xo=[140,128],Ys=135,Vo=270;function wn(e,t){const o=(Ys+Vo*e/100)*Math.PI/180;return[xo[0]+t*Math.cos(o),xo[1]+t*Math.sin(o)]}function un(e,t,o=96){const[a,i]=wn(e,o),[l,c]=wn(t,o),d=(t-e)*Vo/100>180?1:0;return`M${a.toFixed(1)} ${i.toFixed(1)} A${o} ${o} 0 ${d} 1 ${l.toFixed(1)} ${c.toFixed(1)}`}const Gu=[{key:"nao_conforme",label:"< 70 incompletos",swatch:{bgcolor:s.line}},{key:"ressalvas",label:"70â84 com ressalvas",swatch:{background:he,border:`1px solid ${s.ink2}`}},{key:"conforme",label:"⥠85 completos",swatch:{bgcolor:s.accent}}];function Vu(){return n.jsx(r,{"data-testid":"index-dial-legend",sx:{display:"flex",justifyContent:"center",flexWrap:"wrap",gap:"6px 14px",mt:1.5,fontFamily:g,fontSize:11,fontWeight:600,letterSpacing:".1em",textTransform:"uppercase",color:s.muted},children:Gu.map(e=>n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75},children:[n.jsx(r,{component:"span",sx:{width:10,height:10,boxSizing:"border-box",flex:"none",...e.swatch}}),e.label]},e.key))})}function qu({score:e}){const t=Number.isFinite(e),o=Ys+Vo*(t?Math.max(0,Math.min(100,e)):0)/100-270,[a,i]=wn(70,120),[l,c]=wn(85,120),[d,u]=xo;return n.jsx(r,{sx:{width:"100%",maxWidth:300,mx:"auto"},children:n.jsxs(r,{sx:{position:"relative"},children:[n.jsxs("svg",{viewBox:"0 0 280 230",width:"100%",role:"img","aria-label":t?`Ãndice de registros ${e} de 100`:"Ãndice indisponÃvel",style:{display:"block"},children:[n.jsx("path",{d:un(0,100,110),stroke:s.lineDash,strokeWidth:"7",fill:"none",strokeDasharray:"1.5 16.4"}),n.jsx("path",{d:un(0,100),stroke:s.line,strokeWidth:"12",fill:"none"}),n.jsx("path",{d:un(70,85),stroke:s.ink2,strokeWidth:"12",fill:"none",strokeDasharray:"2 3.2"}),n.jsx("path",{d:un(85,100),stroke:s.accent,strokeWidth:"12",fill:"none"}),n.jsx("text",{x:a,y:i+4,textAnchor:"middle",style:{fontFamily:g,fontSize:12,fill:s.muted},children:"70"}),n.jsx("text",{x:l,y:c+4,textAnchor:"middle",style:{fontFamily:g,fontSize:12,fill:s.muted},children:"85"}),t?n.jsx("polygon",{points:`${d},44 ${d-4.2},${u} ${d+4.2},${u}`,fill:s.ink,transform:`rotate(${o.toFixed(1)} ${d} ${u})`}
11):null,n.jsx("circle",{cx:d,cy:u,r:"8",fill:s.ink}),n.jsx("circle",{cx:d,cy:u,r:"2.8",fill:s.surface})]}),n.jsxs(r,{sx:{position:"absolute",left:0,right:0,bottom:4,display:"flex",justifyContent:"center",alignItems:"baseline",gap:"6px"},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:60,lineHeight:1,letterSpacing:"-.02em",color:s.ink},children:t?e:"â"}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:600,fontSize:18,color:s.muted},children:"/100"})]})]})})}const Xu={tooltip:{sx:{maxWidth:380,p:"12px 14px",borderRadius:0,bgcolor:s.ink,color:s.white}}},Ku={width:28,height:28,flex:"none",p:0,display:"inline-flex",alignItems:"center",justifyContent:"center",border:`1px solid ${s.line}`,borderRadius:0,bgcolor:s.surface,color:s.accentInk,cursor:"help","&:hover":{borderColor:s.accent},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:2}};function za({explanation:e,sx:t}){return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.75,fontSize:13,lineHeight:1.45,...t},children:[n.jsx(r,{component:"dl",sx:{m:0,display:"flex",flexDirection:"column",gap:.75},children:(e?.rows||[]).map(o=>n.jsxs(r,{children:[n.jsx(r,{component:"dt",sx:{fontFamily:g,fontSize:12,fontWeight:700,letterSpacing:".12em",textTransform:"uppercase",opacity:.8},children:o.label}),n.jsx(r,{component:"dd",sx:{m:0},children:o.text})]},o.key))}),e?.disclaimer?n.jsx(r,{component:"p",sx:{m:0,fontWeight:600},children:e.disclaimer}):null]})}function Zs({explanation:e,label:t,children:o,placement:a="bottom",testId:i="index-explainer",sx:l}){const[c,d]=y.useState(!1),u=y.useRef(""),p=()=>d(!1),f={onPointerEnter:x=>{x.pointerType!=="touch"&&d(!0)},onPointerLeave:x=>{x.pointerType!=="touch"&&d(!1)},onPointerDown:x=>{u.current=x.pointerType},onClick:()=>{const x=u.current==="touch";u.current="",d(m=>x?!m:!0)}},h=()=>{u.current!=="touch"&&d(!0)},b=n.jsx(kn,{title:n.jsx(za,{explanation:e}),open:c,onClose:p,placement:a,describeChild:!0,disableFocusListener:!0,disableHoverListener:!0,disableTouchListener:!0,slotProps:Xu,children:n.jsx(r,{component:"button",type:"button","aria-label":"Como o Ãndice é calculado","data-testid":`${i}-button`,...f,onFocus:h,onBlur:p,sx:{...Ku,displayPrint:"none",...t?null:{position:"absolute",top:-6,right:-6,zIndex:1}},children:n.jsx(q,{d:C.info,size:15})})});return n.jsx(xi,{onClickAway:p,children:n.jsxs(r,{"data-testid":i,onKeyDown:x=>{x.key==="Escape"&&p()},sx:{position:"relative",minWidth:0,...l},children:[t?n.jsxs(r,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1},children:[t,b]}):b,n.jsx(r,{"data-testid":`${i}-target`,...f,sx:{cursor:"help"},children:o}),n.jsx(za,{explanation:e,sx:{display:"none",displayPrint:"flex",mt:1,fontSize:11,color:s.ink2}})]})})}const nt=[300,230],ct=[150,115],Ha=70;function mt(e,t,o){const a=(-90+360/t*e)*Math.PI/180;return[ct[0]+Ha*o*Math.cos(a),ct[1]+Ha*o*Math.sin(a)]}function Yu(e,t){const o=`${e/nt[0]*100}%`,a=`${t/nt[1]*100}%`;return Math.abs(e-ct[0])<6?t<ct[1]?{left:o,top:a,transform:"translate(-50%, calc(-100% - 6px))",alignItems:"center"}:{left:o,top:`calc(${a} + 6px)`,transform:"translateX(-50%)",alignItems:"center"}:e>ct[0]?{left:`calc(${o} + 10px)`,top:a,transform:"translateY(-50%)",alignItems:"flex-start"}:{left:`calc(${o} - 10px)`,top:a,transform:"translate(-100%, -50%)",alignItems:"flex-end"}}const Ua=18,Zu={tooltip:{sx:{maxWidth:300,p:"10px 12px",borderRadius:0,bgcolor:s.ink,color:s.white}}};function Qs(e){return e.value===null?"fora do Ãndice":`${e.value} de 100`}function Qu({axis:e}){const t=e.value!==null&&e.value<100?Do(e)[0]:null;return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.75,fontSize:13,lineHeight:1.4},children:[n.jsxs(r,{component:"span",sx:{fontFamily:g,fontSize:15,fontWeight:700},children:[e.label," · ",e.value===null?"â (fora do Ãndice)":Qs(e)]}),e.description?n.jsx(r,{component:"span",children:e.description}):null,e.dimensions.length?n.jsx(r,{component:"ul",sx:{m:0,pl:2},children:e.dimensions.map(o=>n.jsx("li",{children:`${o.short}: ${o.statusLabel}`},o.key))}):null,t?.flag?n.jsx(r,{component:"span",children:t.flag}):null]})}function Ga({axis:e,open:t,onClose:o,children:a}){return n.jsx(kn,{title:n.jsx(Qu,{axis:e}),open:t,onClose:o,placement:"top",describeChild:!0,disableFocusListener:!0,disableHoverListener:!0,disableTouchListener:!0,slotProps:Zu,children:a})}function Ju({axes:e,onJump:t}){const[o,a]=y.useState(null),i=y.useRef(""),l=e.length,c=x=>e.map((m,_)=>mt(_,l,x).map(v=>v.toFixed(1)).join(",")).join(" "),d=e.map((x,m)=>mt(m,l,(x.value??0)/100).map(_=>_.toFixed(1)).join(",")).join(" "),u=()=>a(null),p=(x,m)=>o?.key===x.key&&o.anchor===m,f=x=>{a(null);const m=Do(x)[0]||x.dimensions[0];m&&t&&t(m.key)},h=(x,m)=>({onPointerEnter:_=>{_.pointerType!=="touch"&&a({key:x.key,anchor:m})},onPointerLeave:_=>{_.pointerType!=="touch"&&a(v=>v?.key===x.key&&v.anchor===m?null:v)},onPointerDown:_=>{i.current=_.pointerType},onClick:()=>{const _=i.current==="touch";if(i.current="",!_){f(x);return}a(v=>v?.key===x.key?null:{key:x.key,anchor:m})}}),b=x=>({...h(x,"label"),onFocus:()=>{i.current!=="touch"&&a({key:x.key,anchor:"label"})},onBlur:()=>a(m=>m?.key===x.key?null:m),onKeyDown:m=>{i.current="",m.key==="Enter"||m.key===" "?(m.preventDefault(),f(x)):m.key==="Escape"&&u()}});return n.jsx(xi,{onClickAway:u,children:n.jsxs(r,{role:"group","aria-label":"Envelope de safety",sx:{position:"relative",width:"100%",maxWidth:420,aspectRatio:`${nt[0]} / ${nt[1]}`,mx:"auto"},children:[n.jsxs("svg",{viewBox:`0 0 ${nt[0]} ${nt[1]}`,style:{position:"absolute",inset:0,width:"100%",height:"100%"},"aria-hidden":"true",children:[n.jsx("polygon",{points:c(1),fill:s.lineSoft,stroke:s.lineDash,strokeWidth:"1"}),[.75,.5,.25].map(x=>n.jsx("polygon",{points:c(x),fill:"none",stroke:s.line,strokeWidth:"1"},x)),e.map((x,m)=>{const[_,v]=mt(m,l,1);return n.jsx("line",{x1:ct[0],y1:ct[1],x2:_,y2:v,stroke:s.line,strokeWidth:"1"},x.key)}),n.jsx("polygon",{points:d,fill:"color-mix(in srgb, var(--color-accent) 24%, transparent)",stroke:s.accent,strokeWidth:"2",strokeLinejoin:"miter"}),e.map((x,m)=>{const[_,v]=mt(m,l,(x.value??0)/100);return n.jsxs("g",{children:[o?.key===x.key?n.jsx("rect",{x:_-6.5,y:v-6.5,width:"13",height:"13",fill:"none",stroke:s.accentDeep,strokeWidth:"1"}):null,n.jsx("rect",{x:_-3.5,y:v-3.5,width:"7",height:"7",fill:x.value===null?s.surface:s.accentDeep,stroke:s.surface,strokeWidth:"1.5"})]},`dot-${x.key}`)})]}),e.map((x,m)=>{if(!x.value)return null;const[_,v]=mt(m,l,x.value/100);return n.jsx(Ga,{axis:x,open:p(x,"vertex"),onClose:u,children:n.jsx(r,{"aria-hidden":"true","data-testid":`radar-vertex-${x.key}`,...h(x,"vertex"),sx:{position:"absolute",left:`${_/nt[0]*100}%`,top:`${v/nt[1]*100}%`,width:Ua,height:Ua,transform:"translate(-50%, -50%)",cursor:"pointer"}})},`vertex-${x.key}`)}),e.map((x,m)=>{const[_,v]=mt(m,l,1);return n.jsx(Ga,{axis:x,open:p(x,"label"),onClose:u,children:n.jsxs(r,{role:"button",tabIndex:0,"aria-label":`${x.label} ${Qs(x)} â detalhes`,"data-testid":`radar-axis-${x.key}`,...b(x),sx:{position:"absolute",display:"flex",flexDirection:"column",whiteSpace:"nowrap",cursor:"pointer",outline:"none","&:hover > span:first-of-type":{color:s.accentInk},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:2},...Yu(_,v)},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".1em",textTransform:"uppercase",color:s.muted},children:x.label}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:21,fontWeight:700,lineHeight:1,color:s.ink},children:x.value===null?"â":x.value})]})},`label-${x.key}`)})]})})}function ho({pct:e,height:t=6,color:o=s.accent,track:a=s.line}){const i=Number.isFinite(e)?Math.max(0,Math.min(100,e)):0;return n.jsx(r,{component:"span",sx:{position:"relative",display:"block",height:t,bgcolor:a},children:n.jsx(r,{component:"span",sx:{position:"absolute",left:0,top:0,bottom:0,width:`${i}%`,bgcolor:o}})})}function ep(){return n.jsx(r,{component:"span",sx:{width:8,height:8,flex:"none",mt:"6px",background:he,boxShadow:`inset 0 0 0 1px ${s.ink2}`}})}function tp({children:e,sx:t,component:o="p"}){return n.jsx(r,{component:o,sx:{m:0,fontFamily:ut,fontSize:16,lineHeight:1.55,color:s.ink2,...t},children:e})}function P({children:e,sx:t,component:o="span",...a}){return n.jsx(r,{component:o,sx:{fontSize:14,lineHeight:1.45,color:s.muted,...t},...a,children:e})}const Tt=60*1e3,En=60*Tt,Js=4,er=92,np=7,Va=46,op=58,go=3,pn=4,a
11p=30*Tt,ip=new Set(["MET","NTM","CMB","FRT","PRF","PAX"]),sp={checkwx:"CheckWX",aviationweather:"AviationWeather",aisweb:"AISWEB",redemet:"REDEMET"};function ye(e){if(!e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t.getTime()}function qa(e,t){const o=Ke(e),a=wi(t);return!o||a===null?null:o.getTime()+a*Tt}function Xa(e,t){const o=String(e||"").trim().toLowerCase();return sp[o]||(o?o.toUpperCase():t)}function tr(e){const t=ye(e?.actual_departure),o=ye(e?.actual_arrival);if(t!==null&&o!==null&&o>t)return{off:t,on:o,source:"agenda"};const a=e?.edb,i=qa(a?.date,a?.takeoff||a?.block_off);let l=qa(a?.date,a?.landing||a?.block_on);return i!==null&&l!==null?(l<=i&&(l+=24*En),{off:i,on:l,source:"edb"}):null}function Ka(e,t){const o=String(t.value?.airport||"").trim().toUpperCase(),a=o?`${e} ${o}`:e;return t.label?`${a} · ${t.label}`:a}function rp(e){const t=Bn(e.metar).filter(a=>a.value).map(a=>({key:"MET",label:Ka("METAR",a),at:ye(a.value.observed_at),source:Xa(a.value.source,"METAR"),note:String(a.value.raw_metar||"").trim().slice(0,80),lateFlag:a.value.captured_after_flight})),o=zn(e.notams).filter(a=>a.value).map(a=>{const i=Number(a.value.items_count);return{key:"NTM",label:Ka("NOTAM",a),at:ye(a.value.captured_at),source:Xa(a.value.source,"AISWEB"),note:Number.isFinite(i)?`${i} ${i===1?"NOTAM aplicável":"NOTAMs aplicáveis"}`:"",lateFlag:a.value.captured_after_flight}});return[...t,...o]}function lp({evidence:e,timing:t,dimensions:o}){const a=e&&typeof e=="object"?e:{},i=Object.fromEntries((o||[]).map(h=>[h.key,h.status])),l=Object.fromEntries((o||[]).map(h=>[h.key,h.phase])),c=[...rp(a),{key:"MET",label:"SIGMET/GAMET",at:ye(a.sigmet_gamet?.captured_at),source:"REDEMET",note:"Avisos de rota"},{key:"CMB",label:"CombustÃvel · ETD",at:ye(a.fuel_snapshots?.etd?.captured_at),source:"eDB · navlog",note:"Fonte inicial"},{key:"CMB",label:"CombustÃvel congelado",at:ye(a.fuel_snapshots?.eta?.captured_at),source:"eDB · navlog",note:"Fonte final"},{key:"FRT",label:"eFRAT",at:ye(a.efrat?.ai_report?.saved_at||a.registered_risks?.ai_report?.saved_at),source:"eFRAT Zulbot",note:a.efrat?.risk_classification?`Decisão: ${a.efrat.risk_classification}`:""},{key:"PRF",label:"Análise de pista",at:ye(a.performance?.document?.uploaded_at),source:"ForeFlight",note:a.performance?.document?.filename||""},{key:"PAX",label:"Load sheet",at:ye(a.load_manifest?.weight_balance?.document?.uploaded_at),source:"ForeFlight",note:a.load_manifest?.weight_balance?.document?.filename||""},{key:"TLX",label:"NASA-TLX",at:ye(a.nasa_tlx?.completed_at),source:"NASA-TLX",note:a.nasa_tlx?.rated_by_observer?"Avaliado por observador":""},{key:"DBF",label:"Debrief",at:ye(a.debrief?.submitted_at||a.debrief?.data?.submitted_at),source:"Flight Debrief",note:""},{key:"EDB",label:"eDB exportado",at:ye(t?.edb?.exported_at),source:"eDB Logbook",note:""}],d=tr(t),u=c.filter(h=>h.at!==null&&i[h.key]!=="na").map(({lateFlag:h,...b})=>({...b,status:i[b.key]||"ok",late:typeof h=="boolean"?h:!!d&&ip.has(b.key)&&b.at>d.off}));if(d){const h=d.source==="agenda"?"Agenda":"eDB";u.push({key:"EXE",label:"Decolagem",at:d.off,status:"milestone",milestone:"off",late:!1,source:h,note:"OFF"}),u.push({key:"EXE",label:"Pouso",at:d.on,status:"milestone",milestone:"on",late:!1,source:h,note:"ON"})}const p=new Set(u.map(h=>h.key)),f=(o||[]).filter(h=>h.status!=="na"&&!p.has(h.key)).map(h=>({key:h.key,label:h.short,status:h.status,phase:l[h.key]||"pre"}));return{events:u.sort((h,b)=>h.at-b.at),flight:d,untimed:f}}function bo(e){return e.status==="milestone"?e.milestone||"off":e.late?"late":"registered"}const nr={registered:"Registrado",late:"Após a decolagem",off:"OFF",on:"ON"};function or(e){const t=Math.round(e/Tt);return t>=60?dt(t):`${t} min`}function Ya(e){return`${Gt(new Date(e))} ${V(e)}`}function cp(e){return{key:e.key,time:V(e.at),name:e.label,meta:[Gt(new Date(e.at)),e.source,nr[bo(e)],e.note].filter(Boolean).join(" · ")}}function dp(e){const t=e[0],o=e[e.length-1];return{key:t.key,time:`${V(t.at)}â${V(o.at)}`,name:e.map(a=>a.label).join(" · "),meta:`${e.length} registros · ${[...new Set(e.map(a=>
11a.source).filter(Boolean))].join(" · ")}`}}function up(e){const t=[];for(const o of e){const a=t[t.length-1];a&&o.x-a.x0<np?(a.items.push(o),a.x=(a.x0+o.x)/2):t.push({x0:o.x,x:o.x,items:[o]})}return t}function pp(e){const t=Array(go).fill(-1/0);return e.map(o=>{const a=o.x>op,i=a?o.x-Va:o.x,l=a?o.x:o.x+Va;let c=t.findIndex(f=>f<=i);c<0&&(c=go-1),t[c]=l;const d=o.items,u=d.length===1,p=d[0];return{id:`${p.key}-${p.at}-${d.length}`,key:p.key,leftPct:o.x,lane:c,alignRight:a,count:d.length,kind:u?bo(p):"cluster",time:u?V(p.at):`${V(p.at)}â${V(d[d.length-1].at)}`,title:u?p.label:`${d.length} registros`,meta:u?[p.source,nr[bo(p)]].filter(Boolean).join(" · "):`${d.slice(0,2).map(f=>f.label).join(" · ")}${d.length>2?` +${d.length-2}`:""}`,detail:u?cp(p):dp(d)}})}function fp(e,t,o){const a=t-e;return Array.from({length:pn+1},(i,l)=>{const c=e+a*l/pn,d=l>0&&l<pn;let u="";return o&&d&&(u=a>20*En?Gt(new Date(c)):V(c)),{leftPct:Js+l/pn*er,label:u}})}function fn({key:e,name:t,t0:o,t1:a,records:i,untimedCount:l,countLabel:c}){const d=Math.max(a-o,Tt),u=f=>Js+(f-o)/d*er,p=i.map(f=>({...f,x:u(f.at)})).sort((f,h)=>f.x-h.x);return{key:e,name:t,range:i.length||e==="voo"?`${Ya(o)} â ${Ya(a)} · ${or(a-o)}`:"Nenhum registro",countLabel:c??`${i.length} com hora${l?` · ${l} sem hora`:""}`,markers:pp(up(p)),ticks:fp(o,a,e!=="voo"),edges:[]}}function mp({events:e,flight:t,untimed:o=[]}){const a=(e||[]).filter(m=>m.status!=="milestone");if(!a.length&&!t)return null;const i=m=>o.filter(_=>_.phase===m).length;if(!t){const m=a.map(F=>F.at),_=Math.min(...m),v=Math.max(...m),A=Math.max((v-_)*.1,15*Tt);return{bands:[fn({key:"all",name:"Registros do voo",t0:_-A,t1:v+A,records:a,untimedCount:o.length})],timedCount:a.length}}const l=a.filter(m=>m.at<t.off),c=a.filter(m=>m.at>=t.off&&m.at<=t.on),d=a.filter(m=>m.at>t.on),u=l.length?Math.min(...l.map(m=>m.at)):t.off-En,p=d.length?Math.max(...d.map(m=>m.at)):t.on+En,f=p+Math.max((p-t.on)*.15,ap),h=t.source==="agenda"?"pela Agenda":"pelo eDB",b=i("voo"),x=fn({key:"voo",name:"Em voo",t0:t.off,t1:t.on,records:c,countLabel:[`OFF · ON ${h}`,c.length?`${c.length} em voo`:"",b?`${b} sem hora`:""].filter(Boolean).join(" · ")});return x.range=`${V(t.off)} â ${V(t.on)} · ${or(t.on-t.off)}`,x.edges=[{kind:"off",time:V(t.off),label:"Decolagem · OFF",alignRight:!1,lane:0},{kind:"on",time:V(t.on),label:"Pouso · ON",alignRight:!0,lane:1}],{bands:[fn({key:"pre",name:"Pré-voo",t0:u,t1:t.off,records:l,untimedCount:i("pre")}),x,fn({key:"pos",name:"Pós-voo",t0:t.on,t1:f,records:d,untimedCount:i("pos")})],timedCount:a.length}}const xp={ok:j.good,warn:j.partial,danger:j.gap,neutral:j.na},xt={borderRadius:0};function hp({provenance:e}){const[t,o]=y.useState(!1),a=[{k:e.timestampLabel,v:To(e.timestamp)},{k:"Schema",v:e.schemaVersion||"â"},{k:"Snapshot",v:e.snapshotId!=null?`#${e.snapshotId}`:"sem snapshot congelado"}];e.reportId!=null&&a.push({k:"Relatório",v:`#${e.reportId}`}),e.aiModel&&a.push({k:"Modelo IA",v:e.aiModel}),e.promptVersion&&a.push({k:"Prompt",v:e.promptVersion});const i=async()=>{const c=String(e.evidenceHash||"");if(c)try{await navigator.clipboard?.writeText(c),o(!0),setTimeout(()=>o(!1),1800)}catch{}},l=e.mode==="saved_report"?j.na:e.mode==="capture"?j.partial:j.good;return n.jsxs(r,{"data-testid":"safety-audit-provenance",sx:{px:2,py:1.25,border:`1px solid ${s.line}`,bgcolor:s.surface,display:"flex",flexWrap:"wrap",alignItems:"center",gap:1.5,rowGap:1},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:0},children:[n.jsx($t,{children:"Procedência"}),n.jsx(ee,{tone:l,children:e.modeLabel})]}),n.jsx(kn,{title:e.evidenceHash||"Hash indisponÃvel",placement:"top",children:n.jsxs(r,{component:"button",type:"button",onClick:i,"data-testid":"safety-audit-evidence-hash",sx:{display:"inline-flex",alignItems:"center",gap:.75,px:1,py:.5,border:`1px solid ${s.line}`,bgcolor:s.page,color:s.ink2,fontFamily:g,fontSize:14,fontWeight:700,cursor:e.evidenceHash?"pointer":"default"},children:[n.jsxs("span",{children:["hash ",On(e.evidenceHash)||"â"]}),t?n.jsx(r,{component:"span",sx:{color:s.accentInk},children:"copiado"}):null]})}),a.map(c=>n.jsxs(r,{component:"span",sx:{fontSize:14,color:s.muted},children:[c.k,": ",n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:15,color:s.ink2},children:c.v})]},c.k)),e.sourceStatuses.length?n.jsx(r,{sx:{display:"flex",flexWrap:"wrap",gap:.75,ml:{md:"auto"}},"data-testid":"safety-audit-source-statuses",children:e.sourceStatuses.map(c=>{const d=fa[c.status]||fa.missing;return n.jsx(kn,{title:uc(c)||d.text,placement:"top",children:n.jsx(r,{component:"span",sx:{dis
11play:"inline-flex"},children:n.jsx(ee,{size:"sm",tone:xp[d.kind]||j.na,children:`${c.label} · ${d.text}`})})},c.source)})}):null]})}function gp({error:e,onClearError:t,isStale:o,reportJson:a,acquisition:i,openRecordCount:l,provenance:c,identityDrift:d,limitedScoring:u=!1}){const p=a?.ai_status==="unavailable"||a?.ai_status==="error";return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1.5,"&:empty":{display:"none"}},children:[e?n.jsx(_e,{severity:"error",onClose:t,sx:xt,children:e}):null,o?n.jsx(_e,{severity:"warning",sx:xt,children:"Esta auditoria está marcada como stale. Gere novamente para refletir as evidências mais recentes do voo."}):null,p?n.jsx(_e,{severity:"info",sx:xt,children:"Snapshot operacional salvo com todas as evidências do voo. A leitura editorial por IA ficou indisponÃvel neste momento â clique em âRegenerar auditoriaâ para incluÃ-la quando o serviço voltar."}):null,i?n.jsxs(_e,{severity:l?"warning":"success",icon:n.jsx(q,{d:C.check,size:18}),sx:xt,children:[l?`${l===1?"1 registro em aberto":`${l} registros em aberto`} nas evidências atuais.`:"Evidências atuais sem registros em aberto."," ","Gere a auditoria para salvar o relatório com este snapshot."]}):null,u?n.jsx(_e,{severity:"info","data-testid":"safety-audit-limited-scoring",sx:xt,children:"Leitura limitada: esta versão foi salva antes de a auditoria guardar os horários da perna, então a execução do voo não está confirmada e o Ãndice pode diferir do exibido na geração. Gere a auditoria novamente para registrar a base completa."}):null,d.length?n.jsxs(_e,{severity:"warning","data-testid":"safety-audit-identity-drift",sx:xt,children:["Este relatório foi gerado com a identidade congelada do voo e a perna mudou depois:"," ",d.map(f=>`${f.label} ${f.frozen} â ${f.live}`).join(" · "),"."," ","Os cards abaixo descrevem o voo como estava na geração."]}):null,c?n.jsx(hp,{provenance:c}):null]})}const bp=[{key:"pre",label:"Preparação · pré-voo"},{key:"voo",label:"Execução · em voo"},{key:"pos",label:"Fechamento · pós-voo"}],vp=[{label:"Os registros em uma frase",width:"72%"},{label:"O que pesou · com fonte e hora",width:"88%"},{label:"O que fazer até o próximo voo",width:"56%"}],yp={ai:{tone:j.info,label:"Gerada · I.A. Zulbot"},automatic:{tone:j.partial,label:"Resumo automático · I.A. indisponÃvel"},empty:{tone:j.na,label:"Não gerada"}},_p=new Set(["unavailable","error"]),kp={not_configured:"Leitura por I.A. não configurada no servidor.",provider_failed:"O provedor de I.A. não respondeu.",invalid_response:"A I.A. devolveu uma resposta inválida."},jp="Falha inesperada na leitura por I.A.";function Sp(e,t){const o=String(e?.executive_summary||"").trim();if(_p.has(e?.ai_status)){const i=String(t||"").trim()||o;return i?{mode:"automatic",summary:i,reason:kp[e?.ai_error_code]||jp}:{mode:"empty"}}const a=String(e?.final_conclusion||"").trim();return!o&&!a?{mode:"empty"}:{mode:"ai",summary:o,conclusion:o.includes(a)?"":a}}const $p={px:1.25,py:"6px",bgcolor:s.surface,fontSize:14,fontWeight:600,color:s.ink};function Ap({block:e}){return n.jsxs(r,{sx:{flex:1,minWidth:120,position:"relative",height:62,mb:"34px"},children:[n.jsx("svg",{viewBox:"0 0 300 62",preserveAspectRatio:"none",width:"100%",height:"62",style:{display:"block"},"aria-hidden":"true",children:n.jsx("path",{d:"M8 56 Q150 -22 292 56",fill:"none",stroke:s.accent,strokeWidth:"1.5",strokeDasharray:"4 4",vectorEffect:"non-scaling-stroke"})}),n.jsx(r,{component:"span",sx:{position:"absolute",left:0,bottom:"1px",width:11,height:11,bgcolor:s.ink2}}),n.jsx(r,{component:"span",sx:{position:"absolute",right:0,bottom:"1px",width:11,height:11,bgcolor:s.ink2}}),n.jsxs(r,{component:"span",sx:{position:"absolute",left:"50%",top:0,transform:"translate(-50%, -10px)",display:"inline-flex",alignItems:"center",gap:1,height:34,px:1.25,bgcolor:s.white,border:`1px solid ${s.line}`,color:s.accent,fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".08em",whiteSpace:"nowrap"},children:[n.jsx(q,{d:C.exe,size:16,fill:"currentColor",strokeWidth:0}),n.jsx(r,{component:"span",sx:{color:s.ink},children:e?`${e} bloco`:"Bloco â"})]})]})}function Za({code:e,time:t,align:o}){return n.jsxs(r,{sx:{textAlign:o==="right"?"right":"left"},children:[n.jsx(r,{component:"p",sx:{m:0,fontFamily:g,fontWeight:700,fontSize:{xs:48,md:64},lineHeight:.9,letterSpacing:"-.01em",color:s.ink},children:e||"â"}),n.jsxs(r,{component:"p",sx:{m:0,mt:1.5,fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".16em",textTransform:"uppercase",color:s.muted},children:[t.label," ",n.jsx(r,{component:"b",sx:{fontSize:16,color:s.ink,letterSpacing:".04em"},children:t.clock})]})]})}function to({label:e,value:t,color:o=s.ink,sx:a}){return n.jsxs(r,{sx:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:1.25,...a},children:[n.jsx(r,{component:"span",sx:{...te,fontSize:11},children:e}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:16,fontWeight:700,color:o,textAlign:"right"},children:t})]})}function Tp({audit:e,recordCount:t,sourceCount:o,onJumpToGaps:a}){const i=e.findings.length,l=e.frat.band?`eFRAT ${e.frat.score} · ${String(e.frat.band.label).toLowerCase()}
11`:"eFRAT não avaliado";return n.jsxs(r,{sx:{flex:".8 1 260px",minWidth:0,p:"24px 24px 22px",bgcolor:s.steelSoft},"data-testid":"hero-quick-read",children:[n.jsx(xe,{component:"p",sx:{m:0},children:"Leitura rápida"}),n.jsx(r,{sx:{mt:2,display:"flex",flexDirection:"column",gap:1.75},children:bp.map(c=>{const d=e.dimensions.filter(p=>p.phase===c.key),u=e.phases[c.key];return n.jsxs(r,{children:[n.jsx(to,{label:c.label,value:`${u.ok}/${u.applicable}`}),n.jsx(qs,{items:d,sx:{mt:.75}})]},c.key)})}),n.jsx(r,{component:"span",sx:{display:"block",height:"1px",bgcolor:s.line,m:"18px 0 14px"}}),n.jsx(to,{label:"Risco geral",value:l,color:e.frat.band?s.accentInk:s.muted}),n.jsx(to,{label:"Custódia",value:`${$(t,"registro","registros")} · ${$(o,"fonte","fontes")}`,sx:{mt:1.25}}),i?n.jsxs(X,{variant:"steel",onClick:a,sx:{width:"100%",mt:2.25,height:44},"data-testid":"hero-jump-gaps",children:["Ver ",i===1?"o registro em aberto":`os ${i} registros em aberto`," â"]}):null]})}function wp({failedRules:e}){return e?.length?n.jsxs(r,{"data-testid":"hero-observations",sx:{display:"flex",flexDirection:"column",gap:.5,mt:2,p:"10px 12px",border:`1px solid ${s.ink2}`,boxShadow:`inset 4px 0 0 ${s.ink2}`},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1,color:s.ink},children:[n.jsx(q,{d:C.alert,size:15}),n.jsx(xe,{sx:{color:s.ink,fontSize:12},children:Pn})]}),n.jsx(r,{component:"span",sx:{fontSize:15,color:s.ink},children:Oo(e)}),n.jsx(P,{children:as})]}):null}function Ep({audit:e}){const t=e.verdict,o=e.findings.length,a=e.counts.captura,i=y.useMemo(()=>Cd(hs(e)),[e]);return n.jsxs(r,{sx:{flex:"1 1 340px",minWidth:0,p:"24px 28px 22px",borderRight:{md:`1px solid ${s.line}`}},children:[n.jsx(Uo,{children:"Situação dos registros do voo"}),n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:2.5,mt:2.25},children:[n.jsx(Zs,{explanation:i,placement:"right",testId:"leg-index-explainer",sx:{flex:"none"},children:n.jsxs(Xs,{score:e.index,size:88,stroke:7,color:We[t?.key]||s.accent,fontSize:34,children:[n.jsx("span",{children:Number.isFinite(e.index)?e.index:"â"}),n.jsx(r,{component:"span",sx:{mt:.5,fontSize:11,fontWeight:600,letterSpacing:".16em",textTransform:"uppercase",color:s.muted},children:"Ãndice"})]})}),n.jsxs(r,{sx:{minWidth:0},children:[t?n.jsx(Gs,{verdictKey:t.key,sx:{height:40}}):n.jsx(ee,{tone:j.na,children:"Sem registros avaliados"}),n.jsxs(r,{component:"p",sx:{m:0,mt:1.25,fontSize:16,lineHeight:1.4,color:s.ink},children:[n.jsxs("b",{children:[e.counts.ok," de ",e.counts.scored]})," registros completos ·"," ",o?n.jsx("b",{children:$(o,"registro em aberto","registros em aberto")}):"nenhum registro em aberto",a?n.jsxs(r,{component:"span",sx:{color:s.muted},children:[" · ",a," fora do Ãndice (fonte não obtida)"]}):null]})]})]}),n.jsx(Vs,{index:e.index,labels:"named",showValue:!1,sx:{mt:2.25,minWidth:0}}),e.why?n.jsx(r,{component:"p",sx:{m:0,mt:2,fontSize:15,lineHeight:1.5,color:s.ink2,textWrap:"pretty"},"data-testid":"hero-verdict-why",children:e.why}):null,n.jsx(wp,{failedRules:e.failedRules})]})}function Cp({facts:e,audit:t,legInfo:o,flightNumber:a,recordCount:i,sourceCount:l,onJumpToGaps:c}){const d=[e.tail,e.model,e.dateLabel].filter(Boolean).join(" · "),u=[e.crew,e.passengers?`${$(e.passengers,"pax","pax")}${e.scope?` · ${e.scope}`:""}`:e.scope,e.edbExported?`eDB exportado ${e.edbExported}`:""].filter(Boolean);return n.jsxs(ne,{"data-testid":"safety-audit-hero",sx:{display:"flex",flexWrap:"wrap"},children:[n.jsxs(r,{sx:{flex:"1.5 1 520px",minWidth:0,p:{xs:2.5,md:"24px 28px 26px"},borderRight:{md:`1px solid ${s.line}`},...Os},children:[n.jsxs(r,{sx:{display:"flex",justifyContent:"space-between",gap:1.5,flexWrap:"wrap"},children:[n.jsxs(xe,{component:"p",sx:{m:0},children:["Dossiê de evidências · ",a,o&&o.count>1?` · perna ${o.index}`:""]}),d?n.jsx(xe,{component:"p",sx:{m:0},children:d}):null]}),n.jsxs(r,{sx:{display:"flex",alignItems:"flex-end",gap:1.75,mt:2.75},children:[n.jsx(Za,{code:e.departure,time:e.off}),n.jsx(Ap,{block:e.block}),n.jsx(Za,{code:e.arrival,time:e.on,align:"right"})]}),u.length?n.jsx(r,{sx:{display:"flex",flexWrap:"wrap",gap:1,mt:2.75},children:u.map(p=>n.jsx(Us,{sx:$p,children:p},p))}):null]}),n.jsx(Ep,{audit:t}),n.jsx(Tp,{audit:t,recordCount:i,sourceCount:l,onJumpToGaps:c})]})}function Fp({recordCount:e,generating:t,onGenerate:o}){return n.jsxs(r,{sx:{flex:1,p:"20px 24px 22px",display:"flex",flexDirection:"column",gap:1.75},"data-testid":"dossier-editorial-empty",children:[n.jsxs(r,{component:"p",sx:{m:0,fontSize:16,lineHeight:1.5,maxWidth:"60ch",color:s.ink},children:["Ainda não gerada para esta perna. A I.A. lê os ",n.jsx("b",{children:$(e,"registro","registros")})," da cadeia de custódia e escreve três parágrafos, sempre com a fonte de cada afirmação."]}),n.jsx(r,{sx:{display:"flex",flexDirection:"column",gap:1},children:vp.map((a,i)=>n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"28px minmax(0,1fr)",gap:1.5,alignItems:"center",p:"10px 12px",border:`1px dashed ${s.faint}`},children:[n.jsx(r,{component:"span",sx:{height:24,display:"grid",placeItems:"center",border:`1px solid ${s.lineDash}`,fontFamily:g,fontSize:12,fontWeight:600,color:s.ink},children:i+1}
11),n.jsxs("span",{children:[n.jsx(r,{component:"span",sx:{display:"block",fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".12em",textTransform:"uppercase",color:s.ink},children:a.label}),n.jsx(r,{component:"span",sx:{display:"block",mt:.5,height:8,width:a.width,background:`repeating-linear-gradient(90deg, ${s.lineSoft} 0 6px, transparent 6px 10px)`}})]})]},a.label))}),o?n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.75,flexWrap:"wrap",mt:"auto",pt:.75},children:[n.jsx(X,{variant:"dark",icon:C.sparkle,onClick:o,disabled:t,"aria-busy":t||void 0,sx:{minHeight:46},"data-testid":"dossier-editorial-generate",children:t?"Gerando leituraâ¦":"Gerar leitura editorial"}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".06em",color:s.muted},children:"~40 s · só com registros deste dossiê · nada sai do voo sem fonte"})]}):null]})}function Np({summary:e,conclusion:t,footer:o,children:a}){return n.jsxs(r,{sx:{flex:1,p:"20px 24px 22px",display:"flex",flexDirection:"column",gap:1.75,fontSize:16,lineHeight:1.55},children:[e?n.jsx(r,{component:"p",sx:{m:0,color:s.ink},children:e}):null,t?n.jsx(r,{component:"p",sx:{m:0,color:s.ink2},children:t}):null,a,o?n.jsx(r,{component:"p",sx:{m:0,mt:"auto",fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".06em",color:s.muted},children:o}):null]})}function Mp({reason:e,generating:t,onGenerate:o}){return n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap"},children:[n.jsx(P,{component:"p",sx:{m:0},"data-testid":"dossier-editorial-ai-reason",children:e}),o?n.jsx(X,{size:"sm",icon:C.sparkle,onClick:o,disabled:t,"aria-busy":t||void 0,"data-testid":"dossier-editorial-retry",children:t?"Gerandoâ¦":"Tentar leitura por I.A."}):null]})}function Dp({reportJson:e,deterministicSummary:t,recordCount:o,sourceCount:a,generatedLabel:i,generating:l,onGenerate:c}){const d=Sp(e,t),u=yp[d.mode],p=[i,$(o,"registro lido","registros lidos"),$(a,"fonte no dossiê","fontes no dossiê")].filter(Boolean).join(" · ");return n.jsxs(ne,{sx:{display:"flex",flexDirection:"column"},"data-testid":"dossier-editorial",children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap",p:"18px 24px 14px",borderBottom:`1px solid ${s.lineSoft}`},children:[n.jsx(r,{component:"span",sx:{width:36,height:36,display:"flex",alignItems:"center",justifyContent:"center",bgcolor:s.ink2,color:s.white},children:n.jsx(q,{d:C.file,size:17})}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"2px",minWidth:0,flex:1},children:[n.jsx(xe,{sx:{fontSize:12},children:"00 · Resumo executivo"}),n.jsx(r,{component:"h3",sx:{m:0,fontFamily:g,fontWeight:600,fontSize:26,letterSpacing:"-.01em",lineHeight:1.1,color:s.ink},children:"Leitura editorial do voo"})]}),n.jsx(ee,{tone:u.tone,"data-testid":"dossier-editorial-status",children:u.label})]}),d.mode==="empty"?n.jsx(Fp,{recordCount:o,generating:l,onGenerate:c}):n.jsx(Np,{summary:d.summary,conclusion:d.conclusion,footer:p,children:d.mode==="automatic"?n.jsx(Mp,{reason:d.reason,generating:l,onGenerate:c}):null})]})}function Rp(e){const t=(e||[]).filter(o=>Number.isFinite(o.value));return t.length?Math.round(t.reduce((o,a)=>o+a.value,0)/t.length):null}function Lp({weakPoint:e,onJump:t}){const[o,...a]=e.culprits||[];return n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.25,mt:"auto",p:"12px 14px",bgcolor:s.ringTrack},"data-testid":"envelope-weak-point",children:[n.jsx(r,{component:"span",sx:{width:11,height:11,flex:"none",border:`1px solid ${s.ink2}`,background:he}}),n.jsxs(r,{component:"span",sx:{fontSize:15,color:s.ink,minWidth:0},children:[n.jsxs("b",{children:["Ãrea com mais lacunas: ",e.label," ",e.value]}),o?` · ${o.flag||`${o.label}: ${String(o.statusLabel||"").toLowerCase()}`}`:"",a.length?` (+${$(a.length,"item","itens")})`:""]}),o&&t?n.jsx(Ge,{onClick:()=>t(o.key),sx:{ml:"auto",fontSize:13,letterSpacing:".12em"},children:"Ir à evidência â"}):null]})}function Ip({audit:e,onJump:t}){const o=Rp(e.envelope);return n.jsxs(ne,{sx:{p:"22px 24px 18px",display:"flex",flexDirection:"column",gap:1},"data-testid":"dossier-envelope",children:[n.jsxs(r,{sx:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:1,flexWrap:"wrap"},children:[n.jsx(r,{component:"h3",sx:{m:0,fontFamily:g,fontWeight:600,fontSize:26,lineHeight:1.1,color:s.ink},children:"Envelope de safety"}),n.jsxs(r,{component:"span",sx:{...Ps,fontSize:11},children:["0â100 por área",o!==null?` · média ${o}`:""]})]}),n.jsx(Ju,{axes:e.envelope,onJump:t}),e.weakPoint?n.jsx(Lp,{weakPoint:e.weakPoint,onJump:t}):null]})}function Op({reportJson:e,deterministicSummary:t,audit:o,recordCount:a,generatedLabel:i,generating:l,onGenerate:c,onJump:d}){return n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0,1fr)",lg:"3fr minmax(320px, 2fr)"},gap:2.75},children:[n.jsx(Dp,{reportJson:e,deterministicSummary:t,recordCount:a,sourceCount:o.sources.length,generatedLabel:i,generating:l,onGenerate:c}),n.jsx(Ip,{audit:o,onJump:d})]})}const Pp=/^S[BDIJNSW][A-Z0-9]{2}$/,Wp=/^[A-Z][A-Z0-9]{3}$/;function Bp(e,t){const o=[e,t].map(a=>String(a||"").trim().toUpperCase());return o.every(a=>Wp.test(a))?o.every(a=>Pp.test(a))?"doméstico":"internacional":""}function zp(e){const t=xn(e),o=V(e);return t&&o?`${t} ${o}`:""}function Qa(e,t,o,a,i){if(e)return{label:a,clock:e};const l=V(t);if(l)return{label:a,clock:l};const c=V(o);return c?{label:i,clock:c}:{label:a,clock:"--:--"}}function Hp({flight:e,reportJson:t,timing:o}){const a=t?.flight||{},i=o?.edb||{},l=tr(o),c=Number(i.block_minutes)>0?Number(i.block_minutes):l?Math.round((l.on-l.off)/6e4):null,d=Number(t?.manifest?.counters?.total)||Number(e?.passengers)||0,u=[e?.commander_name?`CMT ${e.commander_name}`:"",e?.copilot_name?`CO-P ${e.copilot_name}
11`:""].filter(Boolean).join(" · "),p=a.departure_airport||e?.departure_airport||"â",f=a.arrival_airport||e?.arrival_airport||"â";return{departure:p,arrival:f,off:Qa(i.block_off,o?.actual_departure,o?.planned_departure,"OFF","ETD"),on:Qa(i.block_on,o?.actual_arrival,o?.planned_arrival,"ON","ETA"),block:c&&c>0?dt(c):"",tail:a.aircraft_tail||e?.aircraft_registration||e?.aircraft_tail||"",model:a.aircraft_model||e?.aircraft_model||"",dateLabel:jt(a.flight_date||e?.flight_date),etd:V(o?.planned_departure),crew:u,passengers:d,scope:Bp(p,f),edbExported:zp(i.exported_at)}}function Up({planned:e,actualInstant:t,actualClock:o}){const a=e?new Date(e):null;if(!a||Number.isNaN(a.getTime()))return null;if(t){const c=new Date(t);if(!Number.isNaN(c.getTime()))return Math.round((c.getTime()-a.getTime())/6e4)}const i=wi(o);if(i===null)return null;let l=i-(a.getHours()*60+a.getMinutes());return l>720&&(l-=1440),l<-720&&(l+=1440),l}function Gp(e){if(e==null)return{text:"â",strong:!1};if(Math.abs(e)<=2)return{text:"no horário",strong:!1};const t=Math.abs(e);return{text:`${e>0?"+":"â"}${t>=60?dt(t):`${t} min`}`,strong:t>=15}}const Pe=30,qo=48,Vp=Pe+20+qo*go,Ja={3:"5fr 2fr 5fr",1:"minmax(0,1fr)"},qp={key:"",time:"â",name:"Passe o mouse sobre um registro",meta:"Hora · fonte · status · observação"},Xp=new Set(["lacuna","captura"]);function It(e,t=12){const o={display:"inline-block",width:t,height:t,flex:"none",boxSizing:"border-box"};return e==="late"?{...o,border:`1px solid ${s.ink2}`,background:he}:e==="off"||e==="on"?{...o,width:t-2,height:t-2,bgcolor:s.ink2,transform:"rotate(45deg)"}:{...o,bgcolor:s.accent}}function no({label:e,value:t,unit:o}){return n.jsxs(r,{children:[n.jsx(r,{component:"p",sx:{m:0,...te,fontSize:11},children:e}),n.jsxs(r,{component:"p",sx:{m:0,mt:"2px",fontFamily:g,fontSize:26,fontWeight:600,lineHeight:1,color:s.ink},children:[t," ",o?n.jsx(r,{component:"span",sx:{fontSize:14,color:s.muted},children:o}):null]})]})}function Kp({detail:e,onJump:t}){return n.jsxs(r,{"aria-live":"polite","data-testid":"custody-detail",sx:{ml:"auto",flex:"1 1 320px",maxWidth:520,minHeight:64,display:"grid",gridTemplateColumns:"auto minmax(0,1fr) auto",alignItems:"center",gap:1.75,p:"10px 14px",border:`1px solid ${s.line}`,borderLeft:`3px solid ${s.accent}`,bgcolor:s.surface},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:18,fontWeight:600,lineHeight:1,minWidth:52,color:s.ink},children:e.time}),n.jsxs(r,{component:"span",sx:{minWidth:0},children:[n.jsx(r,{component:"span",sx:{display:"block",fontSize:15,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:s.ink},children:e.name}),n.jsx(r,{component:"span",sx:{display:"block",mt:"2px",...te,letterSpacing:".1em",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.meta})]}),e.key?n.jsxs(r,{component:"button",type:"button",onClick:()=>t(e.key),sx:{display:"inline-flex",alignItems:"center",gap:.75,height:34,px:1.5,border:`1px solid ${s.line}`,bgcolor:"transparent",cursor:"pointer",fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".12em",textTransform:"uppercase",color:s.ink,whiteSpace:"nowrap","&:hover":{borderColor:s.ink2},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:2}},children:["Ir à evidência",n.jsx(q,{d:C.chevronRight,size:13})]}):n.jsx("span",{})]})}function Yp({marker:e,showLabel:t,onHover:o,onJump:a}){const i=e.kind==="cluster",l=Pe+16+e.lane*qo,c=e.kind==="late"?s.ink2:s.accent;return n.jsxs(r,{component:"button",type:"button",onMouseEnter:()=>o(e.detail),onFocus:()=>o(e.detail),onClick:()=>a(e.key),"aria-label":`${e.time} ${e.title} â ir à evidência`,title:t?void 0:`${e.time} · ${e.title}`,sx:{position:"absolute",left:`${e.leftPct}%`,top:0,width:0,height:0,p:0,border:0,bgcolor:"transparent",cursor:"pointer",zIndex:2,"&:hover, &:focus-visible":{zIndex:4,outline:"none"},"&:focus-visible .custody-label":{outline:`2px solid ${s.accent}`}},children:[i?n.jsx(r,{component:"span",sx:{position:"absolute",left:-10,top:Pe-10,width:20,height:20,display:"grid",placeItems:"center",bgcolor:s.ink2,color:s.white,fontFamily:g,fontSize:12,fontWeight:700},children:e.count}):n.jsx(r,{component:"span",sx:{...It(e.kind),position:"absolute",left:-6,top:Pe-6}}),t?n.jsxs(n.Fragment,{children:[n.jsx(r,{component:"span",sx:{position:"absolute",left:0,top:Pe+10,width:"1px",height:l-Pe-10,borderLeft:`1px dashed ${s.lineDash}`}}),n.jsxs(r,{component:"span",className:"custody-label",sx:{position:"absolute",top:l,[e.alignRight?"right":"left"]:0,textAlign:e.alignRight?"right":"left",p:"4px 8px",bgcolor:s.page,border:`1px solid ${s.lineSoft}`,[e.alignRight?"borderRight":"borderLeft"]:`2px solid ${c}`,whiteSpace:"nowrap",maxWidth:230,overflow:"hidden"}
11,children:[n.jsxs(r,{component:"span",sx:{display:"block",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontFamily:ut,fontSize:14,color:s.ink},children:[n.jsx(r,{component:"b",sx:{fontFamily:g,fontSize:15,fontWeight:700,letterSpacing:".02em"},children:e.time})," ",e.title]}),n.jsx(r,{component:"span",sx:{display:"block",mt:"1px",...te,fontSize:11,letterSpacing:".1em",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.meta})]})]}):null]})}function Zp({edge:e}){return n.jsxs(r,{component:"span",sx:{position:"absolute",left:e.alignRight?"100%":0,top:0},children:[n.jsx(r,{component:"span",sx:{...It(e.kind,14),position:"absolute",left:-6,top:Pe-6}}),n.jsxs(r,{component:"span",sx:{position:"absolute",top:Pe+16+e.lane*qo,[e.alignRight?"right":"left"]:10,whiteSpace:"nowrap",textAlign:e.alignRight?"right":"left",color:s.ink},children:[n.jsx(r,{component:"b",sx:{fontFamily:g,fontSize:15,fontWeight:700},children:e.time})," ",n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".12em",textTransform:"uppercase"},children:e.label})]})]})}function Qp({band:e,onHover:t,onJump:o}){const a=e.key==="voo";return n.jsxs(r,{"data-testid":`custody-band-${e.key}`,sx:{position:"relative",minWidth:0,pb:.75,bgcolor:a?s.steelSoft:"transparent",borderLeft:a?`1px solid ${s.line}`:0,borderRight:a?`1px solid ${s.line}`:0},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:1.25,flexWrap:"wrap",p:"0 10px 4px"},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".16em",textTransform:"uppercase",whiteSpace:"nowrap",color:a?s.accentDeep:s.accentInk},children:e.name}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".06em",color:s.muted,whiteSpace:"nowrap"},children:e.range})]}),n.jsxs(r,{sx:{position:"relative",height:Vp,mx:1.25},children:[n.jsx(r,{component:"span",sx:{position:"absolute",left:0,right:0,top:Pe,height:"1px",bgcolor:s.axis}}),e.ticks.map(i=>n.jsxs(r,{component:"span",children:[n.jsx(r,{component:"span",sx:{position:"absolute",left:`${i.leftPct}%`,top:Pe-3,width:"1px",height:7,bgcolor:s.axis}}),i.label?n.jsx(r,{component:"span",sx:{position:"absolute",left:`${i.leftPct}%`,top:Pe-24,transform:"translateX(-50%)",fontFamily:g,fontSize:11,fontWeight:600,color:s.faint,whiteSpace:"nowrap"},children:i.label}):null]},i.leftPct)),e.markers.map(i=>n.jsx(Yp,{marker:i,showLabel:!a,onHover:t,onJump:o},i.id)),e.edges.map(i=>n.jsx(Zp,{edge:i},i.kind))]}),n.jsx(r,{component:"p",sx:{m:0,p:"6px 10px 0",...te,fontSize:12,letterSpacing:".08em"},children:e.countLabel})]})}function Jp(){const e=(t,o)=>n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:1},children:[t,o]});return n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:"8px 20px",flexWrap:"wrap",fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".1em",textTransform:"uppercase",color:s.ink2},children:[e(n.jsx(r,{component:"span",sx:It("registered")}),"Registrado"),e(n.jsx(r,{component:"span",sx:It("late",11)}),"Após a decolagem"),e(n.jsx(r,{component:"span",sx:It("off",12)}),"OFF · ON"),e(n.jsx(r,{component:"span",sx:{width:18,height:18,display:"grid",placeItems:"center",bgcolor:s.ink2,color:s.white,fontSize:11},children:"3"}),"Registros agrupados")]})}function ef({untimed:e,onHover:t,onJump:o}){return e.length?n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},"data-testid":"custody-untimed",children:[n.jsx(r,{component:"span",sx:{...te,fontSize:12,letterSpacing:".14em",mr:.5},children:"Sem horário"}),e.map(a=>{const i=Xp.has(a.status),l={key:a.key,time:"â",name:`${a.label} · sem horário`,meta:i?"Sem registro no dossiê":"Registro sem hora gravada"};return n.jsxs(r,{component:"button",type:"button",onMouseEnter:()=>t(l),onFocus:()=>t(l),onClick:()=>o(a.key),sx:{display:"inline-flex",alignItems:"center",gap:"7px",height:28,px:"9px",border:`1px solid ${i?s.ink2:s.line}`,bgcolor:"transparent",cursor:"pointer",color:s.ink,fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".08em",textTransform:"uppercase","&:hover":{bgcolor:s.ink2,color:s.white},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:2}},children:[n.jsx(r,{component:"span",sx:{width:9,height:9,border:"1px solid currentColor",background:i?he:"transparent"}}),a.label]},a.key)})]}):null}function tf({events:e,flight:t,untimed:o,evidenceHash:a,onJump:i}){const[l,c]=y.useState(qp),d=y.useMemo(()=>mp({events:e,flight:t,untimed:o}),[e,t,o]),u=y.useMemo(()=>new Set(e.map(f=>
11f.source).filter(Boolean)).size,[e]),p=d?.timedCount??0;return n.jsxs(ne,{"data-testid":"safety-audit-custody-timeline",children:[n.jsxs(r,{sx:{display:"flex",alignItems:"stretch",gap:3,flexWrap:"wrap",p:"16px 24px",borderBottom:`1px dashed ${s.lineDash}`},children:[n.jsxs(r,{sx:{display:"flex",gap:3.5,flexWrap:"wrap",alignItems:"center"},children:[n.jsx(no,{label:"Com hora",value:p,unit:p===1?"registro":"registros"}),n.jsx(no,{label:"Sem hora",value:o.length,unit:o.length===1?"item":"itens"}),n.jsx(no,{label:"Fontes",value:u}),n.jsxs(r,{children:[n.jsx(r,{component:"p",sx:{m:0,...te,fontSize:11},children:"Hash do dossiê"}),n.jsxs(r,{component:"p",sx:{m:0,mt:.5,display:"inline-flex",alignItems:"center",gap:1,fontFamily:g,fontSize:14,fontWeight:600,letterSpacing:".04em",color:s.ink},children:[n.jsx(q,{d:C.lock,size:13}),a?`sha256 · ${On(a)}`:"Sem hash"]})]})]}),n.jsx(Kp,{detail:l,onJump:i})]}),d?n.jsx(r,{sx:{overflowX:"auto"},children:n.jsx(r,{sx:{display:"grid",gridTemplateColumns:Ja[d.bands.length]||Ja[1],minWidth:860,p:"20px 24px 6px"},children:d.bands.map(f=>n.jsx(Qp,{band:f,onHover:c,onJump:i},f.key))})}):n.jsx(r,{sx:{p:"18px 24px",fontSize:15,color:s.muted},children:"Nenhum registro deste voo tem horário gravado ainda."}),n.jsxs(r,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:2,flexWrap:"wrap",p:"14px 24px 16px",borderTop:`1px solid ${s.lineSoft}`},children:[n.jsx(Jp,{}),n.jsx(ef,{untimed:o,onHover:c,onJump:i})]})]})}const ar=y.createContext({custodyFor:()=>""}),nf=/^(\d{3}|VRB)(\d{2,3})(?:G(\d{2,3}))?(KT|MPS)$/,of=/^(\d{3})V(\d{3})$/,af=/^(FEW|SCT|BKN|OVC|VV)(\d{3}|\/\/\/)(CB|TCU)?$/,sf=/^(M?\d{2})\/(M?\d{2})?$/,rf=/^([QA])(\d{4})$/,lf=/^(P?)(\d{1,2})SM$/,cf=/^(\+|-|VC)?(MI|PR|BC|DR|BL|SH|TS|FZ)?((?:DZ|RA|SN|SG|IC|PL|GR|GS|UP|BR|FG|FU|VA|DU|SA|HZ|PY|PO|SQ|FC|SS|DS)+)?$/,df=1.94384,vn=1609,uf={FEW:"FEW",SCT:"SCT",BKN:"BKN",OVC:"OVC",VV:"VV"},pf={DZ:"chuvisco",RA:"chuva",SN:"neve",SG:"grãos de neve",IC:"cristais de gelo",PL:"pelotas de gelo",GR:"granizo",GS:"granizo pequeno",BR:"névoa úmida",FG:"nevoeiro",FU:"fumaça",VA:"cinza vulcânica",DU:"poeira",SA:"areia",HZ:"névoa seca",SQ:"tempestade de vento",FC:"funil",SS:"tempestade de areia",DS:"tempestade de poeira"},ff={SH:"pancadas de",TS:"trovoada",FZ:"congelante",MI:"baixo",BC:"em bancos",PR:"parcial",DR:"flutuante",BL:"soprado"};function ei(e){if(!e)return null;const t=e.startsWith("M"),o=Number(t?e.slice(1):e);return Number.isFinite(o)?t?-o:o:null}function mf(e){const[,t,o,a]=e,i=[],c=(a?a.match(/.{2}/g):[]).map(d=>pf[d]||d).join(" e ");return o==="TS"?i.push(c?`trovoada com ${c}`:"trovoada"):o==="SH"?i.push(`pancadas de ${c||"chuva"}`):o?i.push([c,ff[o]].filter(Boolean).join(" ")):c&&i.push(c),t==="+"&&i.push("forte"),t==="-"&&i.push("fraca"),t==="VC"&&i.push("na vizinhança"),i.join(" ").trim()}function xf({ceilingFt:e,visibilityM:t}){const o=Number.isFinite(e),a=Number.isFinite(t);if(!o&&!a)return null;const i=o?e:1/0,l=a?t:1/0;return i<500||l<vn?"LIFR":i<1e3||l<3*vn?"IFR":i<=3e3||l<=5*vn?"MVFR":"VFR"}function ir(e){const t=String(e||"").trim(),o={raw:t,wind:null,visibilityM:null,cavok:!1,clouds:[],weather:[],temperatureC:null,dewPointC:null,qnhHpa:null,ceilingFt:null,category:null};if(!t)return o;const i=t.split(/\s(?:RMK|TEMPO|BECMG|NOSIG)\b/)[0].split(/\s+/).filter(Boolean);for(const c of i){const d=c.match(nf);if(d&&!o.wind){const x=d[4]==="MPS"?df:1,m=Math.round(Number(d[2])*x);o.wind={directionDeg:d[1]==="VRB"?null:Number(d[1]),variable:d[1]==="VRB",speedKt:m,gustKt:d[3]?Math.round(Number(d[3])*x):null,calm:m===0,variationDeg:null};continue}const u=c.match(of);if(u&&o.wind){o.wind.variationDeg=[Number(u[1]),Number(u[2])];continue}if(c==="CAVOK"){o.cavok=!0,o.visibilityM=1e4;continue}if(/^\d{4}$/.test(c)&&o.visibilityM===null&&o.wind){o.visibilityM=c==="9999"?1e4:Number(c);continue}const p=c.match(lf);if(p&&o.visibilityM===null){o.visibilityM=Math.round(Number(p[2])*vn);continue}const f=c.match(af);if(f){o.clouds.push({cover:uf[f[1]],baseFt:f[2]==="///"?null:Number(f[2])*100,convective:f[3]||null});continue}const h=c.match(sf);if(h&&o.temperatureC===null){o.temperatureC=ei(h[1]),o.dewPointC=ei(h[2]);continue}const b=c.match(rf);
11if(b){o.qnhHpa=b[1]==="Q"?Number(b[2]):Math.round(Number(b[2])*.338639);continue}if(o.wind&&c.length>=2&&c!=="NSC"&&c!=="NCD"){const x=c.match(cf);if(x&&(x[2]||x[3])){const m=mf(x);m&&o.weather.push({code:c,text:m})}}}const l=o.clouds.find(c=>["BKN","OVC","VV"].includes(c.cover)&&Number.isFinite(c.baseFt));return o.ceilingFt=l?l.baseFt:null,o.category=xf({ceilingFt:o.ceilingFt,visibilityM:o.visibilityM}),o.category===null&&o.cavok&&(o.category="VFR"),o}const sr=new Intl.NumberFormat("pt-BR"),hf={FEW:"Poucas",SCT:"Esparsas",BKN:"Nublado",OVC:"Encoberto",VV:"Céu obscurecido"};function rr(e){if(!e)return"â";if(e.calm)return"Calmo";const t=e.variable?"Variável":`${String(e.directionDeg).padStart(3,"0")}°`,o=e.gustKt?` · rajada ${e.gustKt} kt`:"";return`${t} / ${e.speedKt} kt${o}`}function gf(e){return!e||e.visibilityM===null?"â":e.visibilityM>=1e4?"⥠10 km":`${sr.format(e.visibilityM/1e3)} km`}function bf(e){return!e||!e.raw?"â":e.cavok?"CAVOK":e.clouds.length?e.clouds.slice(0,2).map(t=>{const o=Number.isFinite(t.baseFt)?` a ${sr.format(t.baseFt)} ft`:"";return`${hf[t.cover]||t.cover}${o}${t.convective?` · ${t.convective}`:""}`}).join(" · "):"Céu claro"}function vf(e){if(!e||!e.raw)return"â";if(!e.weather.length)return"Nenhum";const t=e.weather.map(o=>o.text).join(", ");return t.charAt(0).toUpperCase()+t.slice(1)}function yf(e){if(!e||e.temperatureC===null)return"â";const t=e.dewPointC===null?"â":`${e.dewPointC} °C`;return`${e.temperatureC} °C / ${t}`}const _f="M2 12a10 10 0 1 0 20 0a10 10 0 1 0 -20 0 M12 6v6l4 2";function K({item:e,num:t,eyebrow:o,ownerView:a,source:i,children:l}){const{custodyFor:c}=y.useContext(ar),d=!!e.flag&&e.status!=="ok"&&e.status!=="na",u=c(e.key);return n.jsxs(r,{id:`card-${e.key}`,"data-dimension":e.key,"data-phase":e.phase,"data-status":e.status,sx:{position:"relative",bgcolor:s.surface,border:`1px solid ${s.line}`,borderLeft:`3px solid ${Iu[e.status]||s.line}
11`,display:"flex",flexDirection:"column",minWidth:0,scrollMarginTop:"110px"},children:[n.jsx(Ws,{}),n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.75,p:"18px 22px 14px",borderBottom:`1px dashed ${s.lineDash}`},children:[n.jsx(r,{component:"span",sx:{width:40,height:40,flex:"none",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:s.ink2,color:s.white},children:n.jsx(q,{d:C[e.key.toLowerCase()],size:18})}),n.jsxs(r,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:"2px"},children:[n.jsxs(r,{component:"span",sx:{fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".16em",textTransform:"uppercase",color:s.muted},children:[t," · ",o]}),n.jsx(r,{component:"h3",sx:{m:0,fontFamily:g,fontWeight:600,fontSize:24,lineHeight:1.1,color:s.ink},children:e.label})]}),n.jsx(ee,{tone:Lu[e.status]||j.na,children:e.statusLabel})]}),n.jsx(r,{sx:{p:"18px 22px 16px",display:"flex",flexDirection:"column",gap:2,flex:1,minWidth:0},children:l}),d?n.jsxs(r,{sx:{display:"flex",gap:1.25,alignItems:"flex-start",p:"11px 22px",bgcolor:s.flagBg,borderTop:`1px solid ${s.line}`,fontSize:14,lineHeight:1.5,color:s.ink},children:[n.jsx(r,{component:"span",sx:{width:12,height:12,flex:"none",mt:"4px",background:e.status==="captura"?Vn:he,boxShadow:`inset 0 0 0 1px ${e.status==="captura"?s.accent:s.ink2}`}}),n.jsx("span",{children:e.flag})]}):null,e.advisory?n.jsxs(r,{"data-testid":`card-advisory-${e.key}`,sx:{display:"flex",gap:1.25,alignItems:"flex-start",p:"11px 22px",borderTop:`1px solid ${s.line}`,fontSize:14,lineHeight:1.5,color:s.ink},children:[n.jsx(r,{component:"span",sx:{...te,color:s.accentInk,whiteSpace:"nowrap",pt:"2px"},children:"Atenção"}),n.jsx("span",{children:e.advisory})]}):null,a?n.jsxs(r,{sx:{display:"flex",alignItems:"baseline",gap:1.75,p:"14px 22px",bgcolor:s.steelSoft,borderTop:`1px solid ${s.line}`,fontSize:15,lineHeight:1.5,color:s.ink},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".16em",textTransform:"uppercase",color:s.accentInk,whiteSpace:"nowrap"},children:"Para o proprietário"}),n.jsx("span",{children:kd(e)})]}):null,n.jsx(r,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1.5,flexWrap:"wrap",p:"10px 22px 12px",borderTop:`1px solid ${s.lineSoft}`},children:n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:1,fontFamily:g,fontSize:13,letterSpacing:".04em",color:s.muted,minWidth:0},children:[n.jsx(q,{d:_f,size:14}),n.jsx("span",{children:[u,i||e.source].filter(Boolean).join(" · ")})]})})]})}function Cn({label:e,detail:t,actual:o,limit:a,unit:i,limitLabel:l,tight:c=!1,overLabel:d="Excede o limite em",marginLabel:u="Margem"}){const p=Number.isFinite(o)&&Number.isFinite(a)&&a>0,f=p?o/a:null,h=p&&f>1,b=h?s.ink2:c?he:s.accent,x=p?a-o:null;return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"6px",minWidth:0},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:1.5,flexWrap:"wrap"},children:[n.jsxs(r,{component:"span",sx:{minWidth:0},children:[n.jsx(r,{component:"span",sx:{...te,letterSpacing:".14em",color:s.ink},children:e}),t?n.jsx(r,{component:"span",sx:{ml:1,fontSize:14,color:s.muted},children:t}):null]}),n.jsxs(r,{component:"span",sx:{fontFamily:g,fontSize:16,fontWeight:700,color:s.ink,fontVariantNumeric:"tabular-nums",whiteSpace:"nowrap"},children:[Number.isFinite(o)?an(o):"â",n.jsxs(r,{component:"span",sx:{color:s.muted,fontWeight:600},children:[" / ",Number.isFinite(a)?`${an(a)} ${i}`:"â"]}),l?n.jsx(r,{component:"span",sx:{ml:.75,fontSize:12,fontWeight:600,letterSpacing:".1em",textTransform:"uppercase",color:s.muted},children:l}):null]})]}),n.jsx(r,{component:"span",sx:{position:"relative",height:10,bgcolor:s.lineSoft},role:"img","aria-label":p?`${Math.round(f*100)}% do limite`:"Sem comparação",children:p?n.jsx(r,{component:"span",sx:{position:"absolute",left:0,top:0,bottom:0,width:`${Math.min(100,f*100)}%`,background:b,boxShadow:c&&!h?`inset 0 0 0 1px ${s.ink2}`:"none"}}):null}),n.jsx(r,{component:"span",sx:{fontSize:13,color:h?s.ink:s.muted,fontWeight:h?600:400},children:p?h?`${d} ${an(-x)} ${i}.`:`${u} ${an(x)} ${i} · ${Math.round(x/a*100)}%${c?" · apertada":""}`:"Sem o par necessário para comparar."})]})}function Jt({facts:e,minCell:t=110}){return n.jsx(r,{sx:{display:"grid",gridTemplateColumns:`repeat(auto-fit, minmax(${t}px, 1fr))`,border:`1px solid ${s.line}`,gap:"1px",bgcolor:s.line},children:e.map(o=>n.jsxs(r,{sx:{p:"10px 12px",display:"flex",flexDirection:"column",gap:"3px",bgcolor:s.surface,minWidth:0},children:[n.jsx(r,{component:"span",sx:{...te,letterSpacing:".14em"},children:o.k}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:16,fontWeight:700,color:o.muted?s.muted:s.ink,overflowWrap:"anywhere"},children:o.v})]},o.k))})}function ot({label:e,value:t,unit:o,color:a=s.ink}){return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"3px",minWidth:0},children:[n.jsx(r,{component:"span",sx:{...te,letterSpacing:".14em"},children:e}),n.jsxs(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:27.5,lineHeight:1.1,color:a,fontVariantNumeric:"tabular-nums"},children:[t,o?n.jsx(r,{component:"span",sx:{ml:.5,fontSize:13,fontWeight:500,color:s.muted},children:o}):null]})]})}const kf={good:{color:s.accentInk,border:`2px solid ${s.accent}`},partial:{color:s.ink,border:`2px dashed ${s.ink2}`},gap:{color:s.ink,border:`2px dashed ${s.faint}`}};function yn({tone:e="good",children:t}){return n.jsx(r,{component:"span",sx:{px:1.5,py:"7px",...kf[e],fontFamily:g,fontSize:13,fontWeight:700,letterSpacing:".14em",textTransform:"uppercase",transform:"rotate(-2deg)",whiteSpace:"nowrap"},children:t})}function st({children:e}
11){return n.jsx(r,{component:"code",sx:{display:"block",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:13,lineHeight:1.55,color:s.ink2,bgcolor:s.codeBg,p:"8px 10px",wordBreak:"break-word",whiteSpace:"pre-wrap"},children:e})}function jf({rows:e}){return n.jsx(r,{sx:{display:"grid",gridTemplateColumns:"auto minmax(0,1fr)",gap:"4px 12px",fontSize:14},children:e.map(t=>n.jsxs(yo.Fragment,{children:[n.jsx(r,{component:"span",sx:{color:s.muted},children:t.k}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:15,fontWeight:600,color:s.ink},children:t.v})]},t.k))})}function Xo({label:e,pct:t,valueLabel:o,color:a=s.accent,labelWidth:i="minmax(0,1fr)",barWidth:l="90px"}){const c=Number.isFinite(t)?Math.max(0,Math.min(100,t)):0;return n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:`${i} ${l} 52px`,gap:1.25,alignItems:"center",py:"7px",borderTop:`1px solid ${s.lineSoft}`},children:[n.jsx(r,{component:"span",sx:{fontFamily:ut,fontSize:14,color:s.ink,minWidth:0,overflowWrap:"anywhere"},children:e}),n.jsx(r,{component:"span",sx:{position:"relative",height:6,bgcolor:s.lineSoft},children:n.jsx(r,{component:"span",sx:{position:"absolute",left:0,top:0,bottom:0,width:`${c}%`,background:a}})}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:14,fontWeight:700,color:s.ink,textAlign:"right",fontVariantNumeric:"tabular-nums"},children:o})]})}function ue({children:e,sx:t,...o}){return n.jsx(r,{component:"span",sx:{...te,letterSpacing:".14em",...t},...o,children:e})}function L({children:e,sx:t,muted:o=!1,...a}){return n.jsx(r,{component:"p",sx:{m:0,fontSize:15,lineHeight:1.5,color:o?s.muted:s.ink2,...t},...a,children:e})}const Sf={ok:j.good,warn:j.partial,danger:j.gap,neutral:j.na};function J(e){if(e==null||e==="")return null;const t=Number(e);return Number.isFinite(t)?t:null}function $f(e){return[...new Set(e.filter(Boolean).map(t=>String(t).toUpperCase()))]}const Af={origin_etd:"departure_metar_analysis",departure:"departure_metar_analysis",destination_eta:"arrival_metar_analysis",arrival:"arrival_metar_analysis"},Tf={critical:j.gap,warning:j.gap,caution:j.partial};function wf(e){const t=e.value?.airport?String(e.value.airport).toUpperCase():"",o=V(e.value?.target_time);return e.role?`${e.role} · ${t?`${t} @ `:""}${e.moment}${o?` ${o}`:""}`:[e.label,t,o].filter(Boolean).join(" · ")}function Ef({wind:e}){const t=!!e&&!e.calm&&!e.variable&&Number.isFinite(e.directionDeg),o=e?e.calm?"CALMO":e.variable?"VRB":`${e.speedKt} kt`:"â";return n.jsxs(r,{component:"svg",viewBox:"0 0 100 100",role:"img","aria-label":`Vento ${rr(e)}`,sx:{width:108,height:108,flex:"none"},children:[n.jsx("circle",{cx:"50",cy:"50",r:"46",fill:s.page,stroke:s.line}),n.jsx("circle",{cx:"50",cy:"50",r:"31",fill:"none",stroke:s.lineDash,strokeDasharray:"2 3"}),[0,90,180,270].map(a=>n.jsx("line",{x1:"50",y1:"4",x2:"50",y2:"10",stroke:s.axis,strokeWidth:"1.5",transform:`rotate(${a} 50 50)`},a)),n.jsx("text",{x:"50",y:"19",textAnchor:"middle",style:{fontFamily:g,fontSize:11,fontWeight:700,fill:s.muted},children:"N"}),t?n.jsxs("g",{transform:`rotate(${e.directionDeg} 50 50)`,children:[n.jsx("line",{x1:"50",y1:"5",x2:"50",y2:"38",stroke:s.accentInk,strokeWidth:"2.5"}),n.jsx("path",{d:"M44.5 33 L50 42 L55.5 33 Z",fill:s.accentInk})]}):null,n.jsx("text",{x:"50",y:t?62:54,textAnchor:"middle",style:{fontFamily:g,fontSize:12,fontWeight:700,fill:s.ink},children:o})]})}function Cf({taf:e,showRaw:t}){const o=String(e?.raw||"").trim();if(!o)return null;const a=V(e.issued_at);return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.5},children:[n.jsxs(ue,{sx:{color:s.ink},children:["TAF",a?` · emitido ${a}`:""]}),t?n.jsx(st,{children:o}):n.jsx(L,{muted:!0,sx:{fontSize:14},children:"Previsão do aeródromo anexada ao dossiê."})]})}function Ff({slot:e,analysis:t,note:o,showRaw:a}){const i=e.value,l=String(i?.raw_metar||"").trim(),c=ir(l),d=V(i?.observed_at),u=wf(e);return l?n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1.25,minWidth:0},"data-testid":`met-slot-${e.key}`,children:[n.jsxs(r,{sx:{display:"flex",gap:2,alignItems:"flex-start",flexWrap:"wrap"},children:[n.jsx(Ef,{wind:c.wind}),n.jsxs(r,{sx:{flex:"1 1 200px",minWidth:0,display:"flex",flexDirection:"column",gap:1},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.25,flexWrap:"wrap"},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:24,lineHeight:1,color:s.ink},children:i.airport||"â"}),n.jsx(ue,{children:u}),c.category?n.jsx(ee,{size:"sm",tone:Ou[c.category]||j.na,children:c.category}):null]}),n.jsx(jf,{rows:[{k:"Vento",v:rr(c.wind)},{k:"Visibilidade",v:gf(c)},{k:"Nuvens",v:bf(c)},{k:"Tempo presente",v:vf(c)},{k:"Temp./orvalho",v:yf(c)},...c.qnhHpa?[{k:"QNH",v:`${c.qnhHpa} hPa`}]:[]]}),d||i.captured_after_flight?n.jsxs(r,{component:"span",sx:{fontSize:13,color:s.muted},children:[d?`Observado à s ${d}`:"",i.captured_after_flight?`${d?" · ":""}depois do horário de referência`:""]}):null,o?.text?n.jsx(r,{component:"span",sx:{fontSize:13,color:s.muted},children:o.text}):null]})]}),a?n.jsx(st,{children:l}):null,n.jsx(Cf,{taf:i.taf,showRaw:a})]}):n.jsxs(r,{sx:{p:"16px 18px",border:`1px dashed ${s.faint}`,display:"flex",flexDirection:"column",gap:1,minWidth:0},"data-testid":`met-slot-${e.key}`,children:[n.jsxs(r,{sx:{display:"flex",justifyContent:"space-between",gap:1.25},children:[n.jsx(ue,{children:u}),n.jsx(ue,{sx:{color:s.ink2,letterSpacing:".1em",whiteSpace:"nowrap"},children:Wt[o?.captureState]||"Não congelado"})]}),n.jsx(L,{muted:!0,sx:{fontSize:16},children:o?.text||t||"Sem METAR congelado para este horário."})]})}function Nf({weather:e}){const t=(e?.phases||[]).filter(o=>o.hazards.length);return t.length?n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1,pt:1.5,borderTop:`1px solid ${s.line}`},"data-testid":"met-hazards",children:[n.jsx(ue,{sx:{color:s.ink},children:"Condições de atenção · não pesam no Ãndice"}),t.map(o=>n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[n.jsx(r,{component:"span",sx:{minWidth:72,fontSize:14,color:s.muted},children:o.label}),o.hazards.map(a=>n.jsx(ee,{size:"sm",tone:Tf[a.severity]||j.partial,children:a.label},`${o.key}-${a.code||a.label}`))]},o.key))]}):null}function Mf({evidence:e,spec:t,showRaw:o}){const a=e.sigmet_gamet||{},i=ks(a),l=i.sigmetRoute+i.gametRoute;let c="SIGMET/GAMET não anexado ao dossiê.";a.status==="available"&&(i.total>0?(c=`${$(i.total,"aviso ativo","avisos ativos")} no briefing · ${l} na rota`,i.routeFirs.length&&(c+=` · FIR ${i.routeFirs.join(", ")}`)):c=i.hasCounts?"Nenhum SIGMET/GAMET ativo na rota.":"SIGMET/GAMET anexado ao dossiê.");const d=(t?.cells||[]).filter(u=>u.value&&!u.missing);return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1,pt:1.5,borderTop:`1px solid ${s.line}`},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap"},children:[n.jsx(ue,{sx:{color:s.ink},children:"SIGMET · GAMET"}),n.jsx(r,{component:"span",sx:{flex:"1 1 220px",fontSize:15,color:s.ink2},children:c}),t?.pill?n.jsx(ee,{size:"sm",tone:Sf[t.pill.kind]||j.na,children:t.pill.text}):null]}),o?d.map(u=>n.jsx(st,{children:`${u.label} 12${u.value}`},u.label)):null]})}function Df({item:e,ownerView:t,evidence:o,specs:a,audit:i}){const l=!t,c=o.metar||{},d=Bn(c),u=new Set(d.map(b=>b.key)),p=Wn(c).filter(b=>b.value&&!u.has(b.key)),f=$f([...d,...p].map(b=>b.value?.source)),h=b=>{const x=String(o[Af[b]]||"");return x&&!x.toLowerCase().includes("missing")?ke(x,200):""};return n.jsxs(K,{item:e,num:"01",eyebrow:"Tempo nas duas pontas",ownerView:t,source:`${e.source}${f.length?` · fonte ${f.join(", ")}`:""}`,children:[n.jsx(r,{sx:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(100%, 280px), 1fr))",gap:2.5},children:d.map(b=>
12n.jsx(Ff,{slot:b,analysis:h(b.key),note:e.slotNotes?.[b.key],showRaw:l},b.key))}),n.jsx(Nf,{weather:i?.weather}),p.length?n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.75},children:[n.jsx(ue,{children:"Observações intermediárias"}),p.map(b=>{const x=String(b.value?.raw_metar||"").trim(),m=ir(x).category;return n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"120px 56px minmax(0,1fr)",gap:1.25,alignItems:"baseline",fontSize:14},children:[n.jsx(r,{component:"span",sx:{color:s.muted},children:b.label}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700},children:b.value?.airport||"â"}),n.jsx(r,{component:"span",sx:{color:x?s.ink2:s.muted,overflowWrap:"anywhere"},children:x?l?x:`${m||"Registrado"} · obs ${V(b.value?.observed_at)||"â"}`:"Não congelado"})]},b.key)})]}):null,n.jsx(Mf,{evidence:o,spec:a.sigmet,showRaw:l})]})}function Ko(e){return Number(e?.items_count)||(Array.isArray(e?.items)?e.items.length:0)}function Rf(e,t){if(e?.status==="ok"){const o=Ko(e);return{tone:e.captured_after_flight?j.partial:j.good,text:e.captured_after_flight?`${o} · pós-voo`:$(o,"NOTAM","NOTAMs")}}return t==="no_history"||e?.status==="skipped_historical"?{tone:j.na,text:Wt[t]||"Não capturado"}:{tone:j.capture,text:Wt[t]||"Não capturado"}}function Lf(e){const t=Number(e?.fetched_count),o=Ko(e);return Number.isFinite(t)&&t>o?` · ${o} aplicáveis de ${t} recebidos`:""}function If({item:e,ownerView:t,evidence:o}){const a=zn(o.notams),i=a.filter(c=>c.value?.status==="ok"),l=i.reduce((c,d)=>c+Ko(d.value),0);return n.jsxs(K,{item:e,num:"02",eyebrow:"Avisos e restrições",ownerView:t,children:[n.jsxs(r,{sx:{display:"flex",alignItems:"baseline",gap:1.5,flexWrap:"wrap"},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:32,lineHeight:1,color:s.ink},children:i.length}),n.jsxs(r,{component:"span",sx:{fontSize:15,color:s.muted},children:["de ",a.length," consultas congeladas · ",$(l,"NOTAM aplicável","NOTAMs aplicáveis")," à s pontas do voo"]})]}),n.jsx(r,{sx:{display:"flex",flexDirection:"column"},children:a.map(c=>{const d=c.value,u=e.slotNotes?.[c.key],p=Rf(d,u?.captureState),f=Array.isArray(d?.items)?d.items:[],h=bt(d?.captured_at);return n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"64px minmax(0,1fr) auto",gap:1.5,alignItems:"start",py:1.5,borderTop:`1px solid ${s.line}`},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:15,fontWeight:700,letterSpacing:".06em",color:s.ink},children:d?.airport||"â"}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0},children:[n.jsxs(r,{component:"span",sx:{fontSize:15,color:s.ink},children:[c.label,h?n.jsxs(r,{component:"span",sx:{color:s.muted},children:[" · capturado ",h,Lf(d)]}):null,!d&&!u?n.jsx(r,{component:"span",sx:{color:s.muted},children:" · sem consulta registrada"}):null]}),u?n.jsx(L,{muted:!0,sx:{fontSize:14},children:u.text}):d?.status==="skipped_historical"&&d.reason?n.jsx(L,{muted:!0,sx:{fontSize:14},children:d.reason}):null,!t&&f.length?n.jsxs(st,{children:[f.slice(0,3).map(b=>ke(b,220)).join(` 13 14`),f.length>3?` 15 16+ ${f.length-3} adicionais`:""]}):null]}),n.jsx(ee,{size:"sm",tone:p.tone,children:p.text})]},c.key)})})]})}function Of({item:e,ownerView:t,evidence:o}){const a=o.flight_plan||{},i=!!(a.approved||a.approval_code),l=a.status==="available"||a.checked,c=i?{tone:"good",text:"Aprovado · CGNA"}:l?{tone:"partial",text:"Registrado · sem aprovação"}:{tone:"gap",text:"Sem plano registrado"},d=i?a.approval_code?`Código de aprovação anexado: ${ke(a.approval_code,60)}.`:"Aprovação marcada no Checklist Operacional.":l?"O plano consta no checklist, mas a aprovação CGNA/DECEA não foi anexada.":"Nenhum plano de voo (RPL/FPL) foi registrado no dossiê desta perna.";return n.jsxs(K,{item:e,num:"03",eyebrow:"FPL · CGNA/DECEA",ownerView:t,children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.75,flexWrap:"wrap"},children:[n.jsx(yn,{tone:c.tone,children:c.text}),n.jsx(L,{muted:!0,sx:{flex:"1 1 200px"},children:d})]}),n.jsx(Jt,{facts:[{k:"NÃvel",v:a.flight_level||"â",muted:!a.flight_level},{k:"Alternado",v:o.flight?.alternate_airport||"â",muted:!o.flight?.alternate_airport},{k:"Checado",v:a.checked?"Sim":"Não",muted:!a.checked},{k:"Aprovação",v:i?"Anexada":"Pendente",muted:!i}]}),!t&&a.approval_code&&String(a.approval_code).length>60?n.jsx(st,{children:a.approval_code}):null]})}function Pf(e){const t=J(e.initial_fuel_kg),o=J(e.final_fuel_kg);if(!t||t<=0||o===null||o<0||o>t)return null;const a=Math.max(0,J(e.reserve_45_kg)||0),i=Math.max(0,J(e.alternate_fuel_kg)||0),l=o-a-i,c=[{key:"consumed",label:"Consumido até o pouso",kg:t-o,background:`repeating-linear-gradient(45deg, ${s.faint} 0 2px, ${s.surface} 2px 5px)`},{key:"margin",label:"Margem",kg:Math.max(0,l),background:s.accent},{key:"alternate",label:"Alternado",kg:i,background:s.accentDeep},{key:"reserve",label:"Reserva 45 min",kg:a,background:s.ink2}].filter(d=>d.kg>0);return{initial:t,landingPct:(t-o)/t*100,segments:c,deficit:l<0?-l:0}}const Wf=new Set(["Fonte inicial","Uplift","Fonte final","Requerido","Endurance"]);function Bf({item:e,ownerView:t,evidence:o,specs:a}){const i=o.fuel_reserve||{},l=J(i.reserve_45_kg),c=J(i.alternate_fuel_kg),d=l!==null&&c!==null?l+c:null,u=Pf(i),p=(a.fuel?.metrics||[]).filter(f=>Wf.has(f.k));return n.jsxs(K,{item:e,num:"04",eyebrow:"Cadeia de combustÃvel",ownerView:t,children:[n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:"12px 24px"},children:[n.jsx(ot,{label:"Total a bordo",value:Ee(i.initial_fuel_kg).replace(" kg",""),unit:i.initial_fuel_kg!=null?"kg":""}),n.jsx(ot,{label:"No pouso (real)",value:Ee(i.final_fuel_kg).replace(" kg",""),unit:i.final_fuel_kg!=null?"kg":""}),n.jsx(ot,{label:"MÃnimo no pouso",value:Ee(d).replace(" kg",""),unit:d!==null?"kg":""}),n.jsx(ot,{label:"Margem",value:Ee(i.margin_kg).replace(" kg",""),unit:i.margin_kg!=null?"kg":"",color:s.accentInk})]}),u?n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1},children:[n.jsxs(r,{sx:{position:"relative",pt:"22px"},children:[n.jsx(r,{component:"span",sx:{position:"absolute",top:0,left:`${u.landingPct}%`,transform:"translateX(-50%)",fontFamily:g,fontSize:13,fontWeight:700,color:s.ink,whiteSpace:"nowrap"},children:"â¼ pouso"}),n.jsxs(r,{sx:{position:"relative",display:"flex",gap:"2px",height:30},children:[u.segments.map(f=>n.jsx(r,{title:`${f.label} · ${Ee(f.kg)}`,sx:{flex:f.kg,minWidth:4,background:f.background}},f.key)),n.jsx(r,{component:"span",sx:{position:"absolute",left:`${u.landingPct}%`,top:-6,bottom:-6,width:2,ml:"-1px",bgcolor:s.ink}})]})]}),n.jsx(r,{sx:{display:"flex",flexWrap:"wrap",gap:"8px 18px"},children:u.segments.map(f=>
16n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75,fontSize:13,color:s.ink2},children:[n.jsx(r,{component:"span",sx:{width:10,height:10,background:f.background,boxShadow:`inset 0 0 0 1px ${s.line}`}}),f.label,n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,color:s.ink},children:Ee(f.kg)})]},f.key))}),u.deficit?n.jsxs(L,{sx:{fontWeight:600},children:["Pouso ",Ee(u.deficit)," abaixo do mÃnimo exigido (alternado + reserva)."]}):null]}):n.jsx(L,{muted:!0,children:a.fuel?.subtitle}),p.length?n.jsx(Jt,{minCell:130,facts:p.map(f=>({k:f.k,v:f.v,muted:f.kind==="mute"}))}):null,!t&&a.fuel?.snapshotCells?.length?n.jsx(st,{children:a.fuel.snapshotCells.map(f=>`${f.label} · ${f.value}`).join(` 17`)}):null]})}const zf={foreflight_runway_analysis:"Análise de pista ForeFlight",flight_checklist:"Checklist Operacional",audit_snapshot:"Snapshot da auditoria"};function ti(e){return[e.airport,e.runway?`RWY ${e.runway}`:"",e.flap?`flap ${e.flap}`:""].filter(Boolean).join(" · ")}function Hf({item:e,ownerView:t,evidence:o}){const a=o.performance||{},i=a.values||{},l=a.takeoff||{},c=a.landing||{},d=[l,c].some(u=>J(u.required_m)!==null||J(u.available_m)!==null);return n.jsxs(K,{item:e,num:"05",eyebrow:"Pista · distância requerida à disponÃvel",ownerView:t,children:[d?n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:2},"data-testid":"performance-runway",children:[n.jsx(Cn,{label:"Decolagem",detail:ti(l),actual:J(l.required_m),limit:J(l.available_m),unit:"m",limitLabel:l.available_label||"TORA",tight:!!l.tight}),n.jsx(Cn,{label:"Pouso",detail:ti(c),actual:J(c.required_m),limit:J(c.available_m),unit:"m",limitLabel:c.available_label||"LDA",tight:!!c.tight})]}):n.jsx(L,{muted:!0,children:a.verdict==="confirmed"?"Análise de pista marcada no checklist, mas sem as distâncias que comprovam a margem.":"Nenhuma análise de pista anexada para esta perna (ForeFlight ou checklist)."}),n.jsx(Jt,{minCell:130,facts:[{k:"Peso decolagem",v:Ee(i.takeoff_weight_kg),muted:i.takeoff_weight_kg==null},{k:"Peso pouso",v:Ee(i.landing_weight_kg),muted:i.landing_weight_kg==null},{k:"Análise de pista",v:a.runway_analysis_checked?"Conferida":"Pendente",muted:!a.runway_analysis_checked},{k:"Fonte",v:zf[a.source]||"â",muted:!a.source}]}),!t&&a.notes?n.jsx(st,{children:a.notes}):null]})}const Uf={completed:"ConcluÃdo",stale:"Desatualizado",no_go:"No-go",pending:"Pendente"},Gf={none:"Sem aprovação exigida",approved:"Aprovado",pending:"Aprovação pendente",rejected:"Rejeitado"},vo=[110,112],ze=84;function lr(e,t=ze){const o=Math.PI*(1-e);return[vo[0]+t*Math.cos(o),vo[1]-t*Math.sin(o)]}function ni(e,t){const[o,a]=lr(e,t);return`${o.toFixed(1)} ${a.toFixed(1)}`}function Vf({score:e}){const t=ni(vt/De),o=ni(yt/De),a=Number.isFinite(e)?Math.max(0,Math.min(1,e/De)):null,[i,l]=vo,c=[0,vt,yt,De].map(d=>{const[u,p]=lr(d/De,ze+18);return{value:d,x:u,y:d===0||d===De?l+20:p+4}});return n.jsxs(r,{sx:{width:220,flex:"none"},children:[n.jsxs("svg",{viewBox:"0 0 220 136",width:"220",role:"img","aria-label":a===null?"eFRAT sem score":`eFRAT ${e} de ${De}`,style:{display:"block"},children:[n.jsx("path",{d:`M${i-ze} ${l} A${ze} ${ze} 0 0 1 ${t}`,stroke:s.accent,strokeWidth:"12",fill:"none"}),n.jsx("path",{d:`M${t} A${ze} ${ze} 0 0 1 ${o}`,stroke:s.ink2,strokeWidth:"12",fill:"none",strokeDasharray:"2 3.8"}),n.jsx("path",{d:`M${o} A${ze} ${ze} 0 0 1 ${i+ze} ${l}`,stroke:s.ink2,strokeWidth:"12",fill:"none"}),c.map(d=>n.jsx("text",{x:d.x.toFixed(1),y:d.y.toFixed(1),textAnchor:"middle",style:{fontFamily:g,fontSize:12,fontWeight:600,fill:s.muted},children:d.value},d.value)),a!==null?n.jsx("polygon",{points:`${i-72},${l} ${i},${l-3.8} ${i},${l+3.8}`,fill:s.ink2,transform:`rotate(${(a*180).toFixed(1)} ${i} ${l})`}):null,n.jsx("circle",{cx:i,cy:l,r:"7.5",fill:s.ink2}),n.jsx("circle",{cx:i,cy:l,r:"2.6",fill:s.surface})]}),n.jsxs(r,{sx:{display:"flex",alignItems:"baseline",justifyContent:"center",gap:.75,mt:"-6px"},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:40,lineHeight:1,color:s.ink},children:a===null?"â":e}),n.jsxs(r,{component:"span",sx:{fontFamily:g,fontWeight:600,fontSize:16,color:s.muted},children:["/",De]})]})]})}function qf({item:e,ownerView:t,evidence:o,audit:a,specs:i,onOpenRiskReport:l}){const c=o.efrat||{},{band:d,score:u,decision:p,topRisks:f}=a.frat,h=o.registered_risks?.tem||{},b=Math.max(1,...f.map(m=>Number(m.value)||0)),x=!!i.risks?.aiReport?.narrative;return n.jsxs(K,{item:e,num:"06",eyebrow:"Risco pré-voo",ownerView:t,children:[n.jsxs(r,{sx:{display:"flex",gap:2.25,alignItems:"center",flexWrap:"wrap"},children:[n.jsx(Vf,{score:u}),n.jsxs(r,{sx:{flex:1,minWidth:180,display:"flex",flexDirection:"column",gap:1},children:[n.jsx(ee,{tone:d?mo[d.key]:j.na,sx:{alignSelf:"flex-start"},children:d?d.label:"Sem eFRAT avaliado"}),p&&d&&p!==d.label?n.jsxs(L,{children:["Decisão registrada: ",p,"."]}):null,n.jsxs(L,{muted:!0,sx:{fontSize:14},children:[Uf[c.status]||"Pendente"," · ",Gf[c.approval_status||"none"]||c.approval_status]}),n.jsxs(r,{component:"span",sx:{fontSize:13,color:s.muted},children:["Baixo ⤠",vt," · Moderado ",vt+1,"â",yt," · Alto > ",yt]})]})]}),f.length?n.jsxs(r,{sx:{display:"flex",flexDirection:"column"},children:[n.jsx(ue,{sx:{pb:.75},children:"Fatores de maior peso"}),f.map(m=>n.jsx(Xo,{label:m.label||"Fator",pct:(Number(m.value)||0)/b*100,valueLabel:m.value??"â",color:s.ink2},m.risk_id||m.label))]}):null,h.primary_threat||h.mitigation_strategy?n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1},children:[n.jsx(ue,{children:"Ameaças e mitigações (TEM)"}),n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"minmax(0,1fr) 18px minmax(0,1fr)",gap:1.25,alignItems:"center",p:"10px 12px",bgcolor:s.page,border:`1px solid ${s.line}`},children:[n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.25,minWidth:0},children:[n.jsx(ue,{sx:{color:s.ink},children:"Ameaça"}),n.jsx(r,{component:"span",sx:{fontSize:14,fontWeight:700,color:s.ink},children:h.primary_threat||"â"})]}),n.jsx(r,{component:"span","aria-hidden":!0,sx:{color:s.faint,fontSize:16},children:"â"}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.25,minWidth:0},children:[n.jsx(ue,{sx:{color:s.accentInk},children:"Mitigação"}),n.jsx(r,{component:"span",sx:{fontSize:14,lineHeight:1.45,color:s.ink2},children:h.mitigation_strategy||"â"})]})]})]}):null,x?n.jsx(X,{size:"sm",onClick:l,sx:{alignSelf:"flex-start"},children:"Ver relatório de risco (IA)"}):null]})}function Xf({item:e,ownerView:t,audit:o}){const a=o.checklistSummary;if(!a)return n.jsx(K,{item:e,num:"07",eyebrow:"Preparação",ownerView:t,children:n.jsx(L,{muted:!0,children:"Checklist operacional ainda não preenchido para esta perna."})});const{done:i,total:l,na:c,pending:d}=a.counters,u=Math.max(0,l-c),p=Object.entries(a.byCategory||{});return n.jsxs(K,{item:e,num:"07",eyebrow:"Preparação",ownerView:t,children:[n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1},children:[n.jsx(ot,{label:"Itens confirmados",value:`${i}/${u||l}`}),n.jsx(ho,{pct:a.completionPct}),n.jsxs(r,{component:"span",sx:{fontSize:13,color:s.muted},children:[a.completionLabel," · ",$(d,"pendência crÃtica","pen
17dências crÃticas")," · ",c," N/A"]})]}),p.length?n.jsx(r,{sx:{display:"flex",flexDirection:"column"},children:p.map(([f,h])=>{const b=h.filter(m=>m.state==="done").length,x=h.filter(m=>m.state!=="na").length;return n.jsx(Xo,{label:f,pct:x?b/x*100:100,valueLabel:`${b}/${x}`,barWidth:"70px"},f)})}):null,a.gaps.length?n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.75},children:[n.jsx(ue,{children:"Pendências"}),a.gaps.slice(0,t?3:8).map(f=>n.jsxs(r,{sx:{display:"flex",gap:1,alignItems:"flex-start",fontSize:14,color:s.ink2},children:[n.jsx(ep,{}),n.jsx("span",{children:String(f)})]},String(f)))]}):null]})}const Kf={weight_balance:"load sheet",runway_limited:"limitado pela pista",structural:"estrutural",aircraft:"aeronave"},Yf={navlog_block:"navlog"};function Zf({weightBalance:e}){const t=(e?.rows||[]).filter(o=>J(o.actual_kg)!==null||J(o.limit_kg)!==null);return t.length?n.jsx(r,{sx:{display:"flex",flexDirection:"column",gap:1.75},"data-testid":"manifest-load-sheet",children:t.map(o=>n.jsx(Cn,{label:o.label,actual:J(o.actual_kg),limit:J(o.limit_kg),unit:"kg",limitLabel:Kf[o.limit_source]||""},o.key))}):n.jsx(L,{muted:!0,children:"Load sheet não anexado: sem ZFW, TOW e LW para comparar com os limites."})}function Qf({fuel:e}){const t=J(e?.on_board_kg),o=J(e?.required_kg),a=e?.status==="inferred"?" · inferido da perna anterior":"";return t===null?n.jsx(L,{muted:!0,children:"CombustÃvel a bordo na partida não registrado."}):o===null?n.jsxs(L,{muted:!0,"data-testid":"manifest-departure-fuel",children:["CombustÃvel na partida: ",n.jsx("b",{children:Ee(t)})," a bordo",a," · sem requerido do navlog para comparar."]}):n.jsx(r,{"data-testid":"manifest-departure-fuel",children:n.jsx(Cn,{label:"CombustÃvel na partida",detail:`requerido à a bordo${a}`,actual:o,limit:t,unit:"kg",limitLabel:Yf[e.required_source]||"",overLabel:"A bordo abaixo do requerido em",marginLabel:"Sobra"})})}function Jf({item:e,ownerView:t,evidence:o}){const a=o.manifest||{},i=o.load_manifest||null,l=a.counters||{},c=Array.isArray(a.passengers)?a.passengers:[],d=i?.passengers||{},u=J(d.expected),p=J(d.listed)??(l.total||0);return e.status==="na"?n.jsx(K,{item:e,num:"08",eyebrow:"Load sheet · combustÃvel · passageiros",ownerView:t,children:n.jsx(L,{muted:!0,children:"Perna sem passageiros nem load sheet â o manifesto não se aplica."})}):n.jsxs(K,{item:e,num:"08",eyebrow:"Load sheet · combustÃvel · passageiros",ownerView:t,children:[i?n.jsxs(n.Fragment,{children:[n.jsx(Zf,{weightBalance:i.weight_balance}),n.jsx(Qf,{fuel:i.departure_fuel})]}):null,n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(110px, 1fr))",gap:"12px 20px",pt:i?1.5:0,borderTop:i?`1px solid ${s.line}`:0},children:[n.jsx(ot,{label:u!==null?"Previstos (agenda)":"A bordo",value:u??(l.total||0)}),n.jsx(ot,{label:"Lançados",value:u!==null?`${p}/${u}`:`${l.complete||0}/${l.total||0}`})]}),n.jsxs(r,{component:"span",sx:{fontSize:14,color:s.muted},children:[a.international?"Internacional (GENDEC)":"Doméstico"," · ",a.confirmed?"confirmado pela tripulação":"confirmação pendente",d.required===!1?" · documentos não exigidos (sem passageiros)":""]}),c.length?n.jsxs(r,{sx:{display:"flex",flexDirection:"column"},children:[c.slice(0,6).map((f,h)=>n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"minmax(0,1fr) auto",gap:1,alignItems:"center",py:.75,borderTop:`1px solid ${s.lineSoft}`,fontSize:14},children:[n.jsx(r,{component:"span",sx:{color:s.ink,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:f.name||"Passageiro"}),f.complete?n.jsx(ee,{size:"sm",tone:j.good,children:"Completo"}):n.jsx(ee,{size:"sm",tone:j.partial,children:f.missing_fields?.length?`Falta ${ke(f.missing_fields.join(", "),28)}`:"Pendente"})]},f.id??h)),c.length>6?n.jsxs(r,{component:"span",sx:{pt:.75,fontSize:13,color:s.muted},children:["+ ",c.length-6," passageiros"]}):null]}):null]})}const em={baixa:j.good,moderada:j.partial,elevada:j.gap,critica:j.gap},tm={baixa:s.accent,moderada:he,elevada:s.ink2,critica:s.ink2};function nm({item:e,ownerView:t,evidence:o,specs:a}){const i=Array.isArray(o.crew_fatigue?.pilots)?o.crew_fatigue.pilots:[];return n.jsxs(K,{item:e,num:"09",eyebrow:"Tripulação",ownerView:t,source:`${e.source} · consultivo`,children:[i.length?n.jsx(r,{sx:{display:"flex",flexDirection:"column"},children:i.map((l,c)=>{const d=String(l.band||"baixa"),u=Array.isArray(l.factors)&&l.factors.length?String(l.factors[0]):"";return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.5,py:1,borderTop:c?`1px solid ${s.lineSoft}`:0},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1,justifyContent:"space-between"},children:[n.jsx(r,{component:"span",sx:{fontSize:15,fontWeight:600,color:s.ink,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}
17,children:l.pilot||"Tripulante"}),n.jsx(ee,{size:"sm",tone:em[d]||j.na,children:l.band_label||d})]}),n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"minmax(0,1fr) 44px",gap:1,alignItems:"center"},children:[n.jsx(r,{component:"span",sx:{position:"relative",height:6,bgcolor:s.lineSoft},children:n.jsx(r,{component:"span",sx:{position:"absolute",left:0,top:0,bottom:0,width:`${Math.max(0,Math.min(100,Number(l.score)||0))}%`,background:tm[d]||s.accent}})}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:14,fontWeight:700,textAlign:"right"},children:l.score??"â"})]}),u?n.jsx(r,{component:"span",sx:{fontSize:13,color:s.muted},children:u}):null]},l.pilot_user_id??c)})}):n.jsx(L,{muted:!0,children:a.fatigue?.subtitle}),!t&&a.fatigue?.aiNarrative?n.jsx(L,{sx:{fontSize:14},children:ke(a.fatigue.aiNarrative,360)}):null]})}const om=new Set(["fuel_final","fuel_onboard_arrival","fuel_kilograms","fuel_liters","fuel_gallons"]);function cr(e){const t=Number(e);return!Number.isFinite(t)||t<=0?"â":`${t.toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:1})} h`}function am({item:e,ownerView:t,timing:o}){if(o===void 0)return n.jsx(K,{item:e,num:"10",eyebrow:"Planejado à real",ownerView:t,children:n.jsx(L,{muted:!0,children:"Os horários reais aparecem na leitura ao vivo das evidências. Use âAtualizar evidênciasâ para carregá-los."})});const a=o?.edb||{},i=[{label:"Partida (calços)",planned:o?.planned_departure,actualClock:a.block_off,actualInstant:a.block_off?null:o?.actual_departure},{label:"Decolagem",actualClock:a.takeoff},{label:"Pouso",actualClock:a.landing},{label:"Chegada (calços)",planned:o?.planned_arrival,actualClock:a.block_on,actualInstant:a.block_on?null:o?.actual_arrival}],l=[a.block_minutes?`Bloco ${dt(a.block_minutes)}`:"",a.flight_hours?`tempo de voo ${cr(a.flight_hours)}`:"",a.landings?`${a.landings} pouso${a.landings===1?"":"s"}`:""].filter(Boolean).join(" · ");return n.jsxs(K,{item:e,num:"10",eyebrow:"Planejado à real",ownerView:t,children:[n.jsxs(r,{sx:{display:"flex",flexDirection:"column"},role:"table","aria-label":"Horários planejados e reais",children:[n.jsx(r,{role:"row",sx:{display:"grid",gridTemplateColumns:"1.3fr 1fr 1fr 1fr",gap:1,pb:.75},children:["Evento","Planejado","Real","Desvio"].map(c=>n.jsx(ue,{role:"columnheader",children:c},c))}),i.map(c=>{const d=c.actualClock||V(c.actualInstant)||"â",u=Gp(Up(c));return n.jsxs(r,{role:"row",sx:{display:"grid",gridTemplateColumns:"1.3fr 1fr 1fr 1fr",gap:1,py:1,borderTop:`1px solid ${s.lineSoft}`,fontSize:14,alignItems:"center"},children:[n.jsx(r,{component:"span",role:"cell",sx:{color:s.ink2},children:c.label}),n.jsx(r,{component:"span",role:"cell",sx:{fontFamily:g,fontSize:15,color:s.muted},children:V(c.planned)||"â"}),n.jsx(r,{component:"span",role:"cell",sx:{fontFamily:g,fontSize:15,fontWeight:700,color:s.ink},children:d}),n.jsx(r,{component:"span",role:"cell",sx:{fontFamily:g,fontSize:14,fontWeight:u.strong?700:500,color:u.strong?s.ink:s.muted},children:u.text})]},c.label)})]}),l?n.jsx(r,{component:"span",sx:{fontSize:14,color:s.muted},children:l}):null,o?.edb?null:n.jsx(L,{muted:!0,sx:{fontSize:14},children:"A perna ainda não foi lançada no eDB â os horários reais vêm da Agenda, quando registrados."})]})}const im=[["mental_demand","Mental"],["physical_demand","FÃsica"],["temporal_demand","Temporal"],["performance","Performance"],["effort","Esforço"],["frustration","Frustração"]],sm={completed:"Enviado no prazo",completed_late:"Enviado fora do prazo"};function rm({item:e,ownerView:t,evidence:o}){const a=o.nasa_tlx||{},i=im.map(([p,f])=>({field:p,label:f,value:Number(a.dimensions?.[p])})),l=i.filter(p=>Number.isFinite(p.value)),c=l.some(p=>p.value>20)?100:20,d=String(a.completion_channel||""),u=[sm[a.status]||"",d?`via ${d==="whatsapp"?"WhatsApp":d==="web"?"Web":d}`:"",bt(a.completed_at)].filter(Boolean).join(" · ");return e.status==="lacuna"?n.jsx(K,{item:e,num:"11",eyebrow:"Carga de trabalho",ownerView:t,children:n.jsx(L,{muted:!0,children:"Avaliação subjetiva de carga ainda não submetida pela tripulação após a perna."})}):n.jsxs(K,{item:e,num:"11",eyebrow:"Carga de trabalho",ownerView:t,children:[n.jsxs(r,{sx:{display:"flex",alignItems:"flex-end",gap:2,flexWrap:"wrap"},children:[n.jsx(ot,{label:"Carga composta",value:a.actual_tlx_score??"â",unit:a.actual_tlx_score!=null?"/100":""}),u?n.jsx(r,{component:"span",sx:{fontSize:14,color:s.muted,pb:.5},children:u}):null]}),l.length?n.jsx(r,{sx:{display:"flex",flexDirection:"column"},children:i.map(p=>n.jsx(Xo,{label:p.label,pct:Number.isFinite(p.value)?p.value/c*100:0,valueLabel:Number.isFinite(p.value)?p.value:"â",labelWidth:"110px",barWidth:"minmax(0,1fr)"},p.field))}):null]})}function lm({item:e,ownerView:t,evidence:o}){const a=$s(o.debrief),i=String(o.debrief_summary||""),l=i&&!i.toLowerCase().includes("missing")?i:"";if(!o.debrief?.submitted&&!a.title&&!a.description)return n.jsx(K,{item:e,num:"12",eyebrow:"Relato pós-voo",ownerView:t,children:n.jsx(L,{muted:!0,children:"Debrief de voo ainda não enviado. Sem áudio nem notas do PIC."})});const c=Array.isArray(a.legsSummary)?a.legsSummary.length:null;return n.jsxs(K,{item:e,num:"12",eyebrow:"Relato pós-voo",ownerView:t,source:`${js[a.source]||e.source}${a.submittedAt?` · enviado ${bt(a.submittedAt)}`:""}`,children:[a.title?n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:20,fontWeight:700,lineHeight:1.2,color:s.ink},children:a.title}):null,l?n.jsx(L,{children:ke(l,t?320:600)}):null,a.description&&(!t||!l)?n.jsx(L,{muted:!!l,children:ke(a.description,t?280:900)}):null,n.jsx(Jt,{minCell:100,facts:[{k:"Categoria",v:Ss(a.category)||"â",muted:!a.category},{k:"Severidade",v:a.severity??"â",muted:a.severity==null},{k:"Fase",v:a.flightPhase||"â",muted:!a.flightPhase},{k:"Eventos",v:c??"â",muted:c===null}]})]})}function cm({item:e,ownerView:t,evidence:o,timing:a}){const i=o.fuel_reserve||{};if(a===void 0){const u=om.has(String(i.final_fuel_source||""));return n.jsx(K,{item:e,num:"13",eyebrow:"eDB Logbook",ownerView:t,children:n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.75,flexWrap:"wrap"},children:[n.jsx(yn,{tone:u?"good":"gap",children:u?"Lançado no eDB":"Sem registro"}),n.jsx(L,{muted:!0,sx:{flex:"1 1 200px"},children:u?`CombustÃvel final lido do eDB: ${Ee(i.final_fuel_kg)}.`:"O relatório salvo não traz o lançamento do eDB desta perna."})]})})}const l=a?.edb;if(!l)return n.jsx(K,{item:e,num:"13",eyebrow:"eDB Logbook",ownerView:t,children:n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.75,flexWrap:"wrap"},children:[n.jsx(yn,{tone:"gap",children:"Sem registro no eDB"}),n.jsx(L,{muted:!0,sx:{flex:"1 1 200px"},children:"A perna ainda não foi lançada no diário de bordo eletrônico."})]})});const c=!!l.exported_at,d=[["Motor",l.engine_start],["Calços",l.block_off],["Decolagem",l.takeoff],["Pouso",l.landing],["Calços",l.block_on],["Corte",l.engine_shutdown]].filter(([,u])=>u).map(([u,p])=>`${u} ${p}`).join(" · ");return n.jsxs(K,{item:e,num:"13",eyebrow:"eDB Logbook",ownerView:t,source:`${e.source}${l.flight_log_id?` · registro #${l.flight_log_id}`:""}`,children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.75,flexWrap:"wrap"},children:[n.jsx(yn,{tone:c?"good":"partial",children:c?"Fechado · exportado":"Lançado · não exportado"}),n.jsx(L,{muted:!0,sx:{flex:"1 1 200px"}
17,children:c?`Exportado em ${bt(l.exported_at)}.`:`Lançado${l.date?` em ${jt(l.date)}`:""}; exportação pendente.`})]}),n.jsx(Jt,{facts:[{k:"Tempo de voo",v:cr(l.flight_hours),muted:!l.flight_hours},{k:"Bloco",v:dt(l.block_minutes),muted:!l.block_minutes},{k:"Pousos",v:l.landings??"â",muted:!l.landings},{k:"Comb. no corte",v:Ee(i.final_fuel_kg),muted:i.final_fuel_kg==null}]}),!t&&d?n.jsx(st,{children:d}):null]})}const dm={ok:j.good,warn:j.partial,neutral:j.na,none:j.na,info:j.info};function dr({item:e}){if(e.status!=="na"||!e.flag)return null;const t=/validação|sem data/i.test(String(e.statusLabel||e.flag))?"Fora do Ãndice · sem data de ativação":"Fora do Ãndice · antes da ativação";return n.jsxs(L,{muted:!0,"data-testid":`fdm-dimension-flag-${e.key}`,children:[n.jsx("strong",{children:t})," â ",e.flag]})}function ur({fdm:e}){const t=Ye(e),o={missing:"Sem gravação do iPhone nesta perna â a dimensão fica sem dados medidos.",provisional:"Estimativa provisória do dispositivo â aguarda o recompute do servidor.",processing:"Análise em andamento no servidor.",failed:"A análise do servidor falhou para esta gravação.",pilot_first_window:`${Ri(e)} â privacidade do piloto.`,restricted:"Detalhes restritos para o seu perfil."}[t];return o?n.jsx(L,{muted:!0,children:o}):null}function um({item:e,ownerView:t,evidence:o}){const a=o?.fdm,i=Array.isArray(a?.departure?.gates)?a.departure.gates:[],l=Ye(a)==="available",c=l?El(a):null;return n.jsxs(K,{item:e,num:"DEC",eyebrow:"Dados de voo · FDM",ownerView:t,source:"FDM · iPhone a bordo",children:[n.jsx(dr,{item:e}),c?n.jsx(L,{"data-testid":"fdm-dec-facts",children:c}):null,l&&i.length?n.jsxs(r,{role:"table","aria-label":"SaÃda por portão",sx:{display:"flex",flexDirection:"column"},children:[n.jsx(r,{role:"row",sx:{display:"grid",gridTemplateColumns:"1.2fr 1fr 1fr 1fr",gap:1,pb:.75},children:["Portão","Alt AAL","GS kt","V/S fpm"].map(d=>n.jsx(ue,{role:"columnheader",children:d},d))}),i.map(d=>n.jsxs(r,{role:"row",sx:{display:"grid",gridTemplateColumns:"1.2fr 1fr 1fr 1fr",gap:1,py:.75,borderTop:`1px solid ${s.lineSoft}`,fontFamily:g,fontSize:15},children:[n.jsx(r,{component:"span",role:"rowheader",sx:{fontWeight:700,color:s.ink},children:$n(d?.gate)}),n.jsx(r,{component:"span",role:"cell",children:N(d?.height_aal_ft)??"â"}),n.jsx(r,{component:"span",role:"cell",children:N(d?.gs_kt)??"â"}),n.jsx(r,{component:"span",role:"cell",children:_o(d?.vs_fpm)??"â"})]},String(d?.gate)))]}):l?n.jsx(L,{muted:!0,children:"SaÃda sem portões avaliados pelo servidor nesta perna."}):n.jsx(ur,{fdm:a}),n.jsx(L,{muted:!0,sx:{fontSize:14},children:"GS medida pelo GPS â não é IAS. A IAS estimada nunca é medida."})]})}function pm({item:e,ownerView:t,evidence:o}){const a=o?.fdm,l=Ye(a)==="available"?Oi(a):null;return n.jsxs(K,{item:e,num:"APR",eyebrow:"Dados de voo · FDM",ownerView:t,source:"FDM · iPhone a bordo",children:[n.jsx(dr,{item:e}),l?n.jsxs(n.Fragment,{children:[n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:[l.outcome?n.jsx(ee,{tone:dm[l.outcome.tone]||j.na,children:l.outcome.label}):null,n.jsx(ee,{tone:j.na,children:l.condition.label})]}),n.jsx(r,{sx:{display:"grid",gridTemplateColumns:"repeat(3, minmax(0, 1fr))",gap:1},children:l.matrix.results.map(c=>n.jsxs(r,{sx:{p:"8px 10px",border:`1px solid ${s.line}
17`,display:"flex",flexDirection:"column",gap:"2px"},children:[n.jsx(ue,{children:`${N(c.gateFt)} ft`}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:16,fontWeight:700,color:c.tone==="none"?s.muted:s.ink},children:c.text}),c.note?n.jsx(r,{component:"span",sx:{fontSize:13,color:s.muted},children:c.note}):null]},c.gateFt))}),l.conditionLine?n.jsx(L,{muted:!0,sx:{fontSize:14},children:l.conditionLine}):null]}):n.jsx(ur,{fdm:a}),w(a?.approach?.attempts)&&Number(a.approach.attempts)>1?n.jsxs(L,{muted:!0,sx:{fontSize:14},children:[N(a.approach.attempts)," tentativas · a última decide o desfecho."]}):null]})}const fm={pre:[{keys:["MET"]},{keys:["NTM","FPL"],min:400},{keys:["CMB"]},{keys:["PRF","FRT"],min:440},{keys:["CHK","PAX","FAD"],min:320}],voo:[{keys:["EXE","TLX"],min:420},{keys:["DEC","APR"],min:420}],pos:[{keys:["DBF","EDB"],min:420}]},mm={MET:Df,NTM:If,FPL:Of,CMB:Bf,PRF:Hf,FRT:qf,CHK:Xf,PAX:Jf,FAD:nm,EXE:am,TLX:rm,DBF:lm,EDB:cm,DEC:um,APR:pm},xm={voo:"Em voo · NASA-TLX & FDM"},oo=2;function hm(e,t){const o={};for(const a of e){const i=t(a);o[i]||(o[i]=[]),o[i].push(a)}return o}function gm(e){if(!e.length)return"Custódia: sem registro";const t=e.slice(0,oo).map(a=>`${Gt(new Date(a.at))} ${V(a.at)} ${a.label}`),o=e.length>oo?` +${e.length-oo}`:"";return`Custódia: ${t.join(" · ")}${o}`}function bm({audit:e,evidence:t,specs:o,timing:a,custodyEvents:i,filter:l,onFilterChange:c,view:d,onViewChange:u,onOpenRiskReport:p}){const f=d==="proprietario",h=t?.fdm||null,b=y.useMemo(()=>Su(e.dimensions,{fdm:h}),[e.dimensions,h]),x=Ho.map(E=>({...E,testId:`dimension-chip-${E.label}`,count:b[E.key]})),m={ownerView:f,evidence:t,specs:o,audit:e,timing:a,onOpenRiskReport:p},_=Xt.map(E=>({phase:E,items:e.dimensions.filter(T=>T.phase===E.key),rows:fm[E.key].map(T=>({...T,items:T.keys.map(D=>e.dimensionByKey[D]).filter(D=>Gn(D,l))})).filter(T=>T.items.length)})).filter(E=>E.rows.length),v=ju(l),A=y.useMemo(()=>hm(i||[],E=>E.key),[i]),F=y.useCallback(E=>gm(A[E]||[]),[A]),M=y.useMemo(()=>({custodyFor:F}),[F]);return n.jsx(ar.Provider,{value:M,children:n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:4.5},children:[n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"flex-end",justifyContent:"space-between",gap:2},children:[n.jsx(Ut,{label:"Filtrar evidências",ariaLabel:"Filtrar evidências por fase",options:x,value:l,onChange:c}),n.jsx(Ut,{label:"Visão",ariaLabel:"Visão do dossiê",options:_u,value:d,onChange:u,testIdPrefix:"dossier-view"})]}),n.jsx(r,{"data-testid":"safety-audit-evidence-grid","data-active-dimension":l==="todas"?void 0:l,sx:{display:"flex",flexDirection:"column",gap:4.5},children:_.length?_.map(({phase:E,items:T,rows:D})=>n.jsxs(r,{component:"section","aria-labelledby":`dossier-phase-${E.key}`,sx:{display:"flex",flexDirection:"column",gap:2.75},children:[n.jsx(At,{id:`dossier-phase-${E.key}`,num:E.number,title:E.title,kicker:xm[E.key]||E.label,meta:$u(e.phases[E.key]),right:n.jsx(qs,{items:T,sx:{width:180}})}),D.map(W=>
17n.jsx(r,{sx:{display:"grid",gridTemplateColumns:W.items.length>1&&W.min?`repeat(auto-fit, minmax(min(100%, ${W.min}px), 1fr))`:"minmax(0, 1fr)",gap:2.75,alignItems:"stretch"},children:W.items.map(U=>{const ge=mm[U.key];return n.jsx(ge,{item:U,...m},U.key)})},W.keys.join("-")))]},E.key)):v?n.jsxs(r,{"data-testid":"safety-audit-evidence-empty",sx:{display:"flex",alignItems:"center",gap:1.5,p:"16px 20px",bgcolor:s.surface,border:`1px solid ${s.line}`,fontSize:15,color:s.ink},children:[n.jsx(r,{component:"span",sx:{width:30,height:30,flex:"none",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:v.complete?s.accent:s.line,color:v.complete?s.white:s.ink},children:n.jsx(q,{d:v.complete?C.check:C.info,size:16})}),v.text]}):null})]})})}function vm(e){if(!e)return null;const t=In(e),o=Bi(e);return{index:Hn({evidence:t,missingEvidence:$o({reportJson:t,selectedReport:e,acquisition:null}),timing:o?o.timing:void 0,captureStates:o?.captureStates}).index,limited:!o,version:o?.version||""}}function ym({savedScore:e,liveIndex:t}){return!e||!Number.isFinite(e.index)||!Number.isFinite(t)||e.index===t?null:{label:`salvo ${e.index} · ao vivo ${t}`,reason:e.limited?"A versão salva é anterior ao registro dos horários da perna e é lida de forma limitada.":"As evidências ou os horários da perna mudaram desde a última auditoria gerada."}}function _m({facts:e}){return e.length?n.jsx("div",{className:"fdc-facts","data-testid":"fdm-dossier-facts",children:e.map(t=>n.jsxs("div",{className:"fdc-fact",children:[n.jsx("p",{className:"fdc-label",children:t.k}),n.jsx("p",{className:"fdc-fact-value","data-muted":t.muted||void 0,"data-tone":t.tone,children:t.v})]},t.k))}):null}function km({view:e,canOpenFdm:t}){const o=!!e.href&&t;return n.jsxs(Mn,{eyebrow:"FD01 · Monitoramento de Voo",headline:e.monitoringTitle,chips:n.jsx(gt,{tone:e.chip.tone,"data-testid":"fdm-dossier-status",children:e.chip.label}),intro:e.intro,className:"fdc-span-12",testId:"fdm-dossier-fd01",children:[n.jsx(_m,{facts:e.facts}),e.reviewLine?n.jsx("p",{className:"fdc-note",style:{marginTop:8},children:e.reviewLine}):null,n.jsxs("div",{className:"fdc-card-foot",style:{marginTop:14,paddingTop:0,borderTop:0},children:[e.state==="missing"?n.jsx("p",{className:"fdc-note",children:nl}):n.jsx("p",{className:"fdc-build",title:e.buildTitle||void 0,children:e.buildLine}),o?n.jsx($r,{className:"fdc-link-btn fdc-no-print",to:e.href,"data-testid":"fdm-dossier-open",children:"Abrir voo no FDM â"}):null]})]})}function jm({events:e}){return n.jsxs(Mn,{eyebrow:"FD02 · Eventos Detectados",headline:e.headline,chips:e.chip?n.jsx(gt,{tone:e.chip.tone,children:e.chip.label}):null,intro:"Limites excedidos nas métricas medidas desta perna, em ordem de severidade.",className:"fdc-span-6",testId:"fdm-dossier-fd02",children:[e.rows.length?n.jsxs("div",{className:"fdc-ev-list",style:{marginTop:12},children:[e.rows.map(t=>n.jsxs("div",{className:"fdc-ev-row fdc-ev-row--plain",children:[n.jsxs("div",{style:{minWidth:0},children:[n.jsx("p",{className:"fdc-ev-label",children:t.label}),t.detail?n.jsx("p",{className:"fdc-ev-detail",children:t.detail}):null,n.jsx("span",{className:"fdc-ev-review","data-reviewed":t.reviewed||void 0,children:t.reviewLabel})]}),n.jsx("span",{className:"fdc-ev-side",children:n.jsx(gt,{tone:t.severity.tone,children:t.severity.label})})]},t.key)),e.more?n.jsxs("p",{className:"fdc-note",children:["+",N(e.more)," ",e.more===1?"evento":"eventos"," no FDM"]}):null]}):n.jsx("p",{className:"fdc-empty",children:e.emptyText}),n.jsx("p",{className:"fdc-footnote",children:e.footnote})]})}function Sm({landing:e}){const t=e.headlinePoint?n.jsxs(n.Fragment,{children:[e.headline," ",n.jsx("span",{className:"fdc-headline-point",children:e.headlinePoint})]}):e.headline;return n.jsxs(Mn,{eyebrow:e.eyebrow,headline:t,chips:e.chip?n.jsx(gt,{tone:e.chip.tone,children:e.chip.label}):null,intro:e.intro,className:"fdc-span-6",testId:"fdm-dossier-fd03",children:[n.jsx("div",{className:"fdc-tiles",style:{gridTemplateColumns:"repeat(2, minmax(0, 1fr))"},children:e.tiles.map(o=>{const a=o.v===null||o.v===void 0;return n.jsxs("div",{className:o.dashed?"fdc-tile fdc-tile--dashed":"fdc-tile",children:[n.jsx("p",{className:"fdc-label fdc-tile-label",children:o.k}),n.jsx("p",{className:"fdc-tile-value","data-missing":a||void 0,children:a?"Não medido":o.v}),n.jsx("p",{className:"fdc-tile-note",children:o.note})]},o.k)})}),n.jsx("p",{className:"fdc-footnote",children:e.footnote})]})}function $m({approach:e,profiles:t,learned:o}){const[a,i]=y.useState(!1),l=y.useId(),c=n.jsxs(n.Fragment,{children:[n.jsx(gt,{tone:e.condition.tone,children:e.condition.label}),e.outcome?n.jsx(gt,{tone:e.outcome.tone,children:e.outcome.label}):null]});return n.jsxs(Mn,{eyebrow:e.eyebrow,headline:e.headline,chips:c,intro:e.note,className:"fdc-span-12",testId:"fdm-dossier-fd04",children:[e.conditionLine?n.jsx("p",{className:"fdc-intro fdc-intro--condensed",style:{marginTop:6},children:e.conditionLine}):null,e.attempts?n.jsx("p",{className:"fdc-note",style:{marginTop:4},children:e.attempts}):null,n.jsx("div",{className:"fdc-apr-body",style:{marginTop:12,maxWidth:760},children:n.jsx(ol,{matrix:e.matrix,ariaLabel:"Critérios a 1.000, 500 e 300 ft"})}),o.length?n.jsxs("div",{style:{marginTop:10},children:[n.jsx("p",{className:"fdc-label",children:"Padrões aprendidos"}),n.jsx(al,{lines:o})]}):null,n.jsx("p",{className:"fdc-footnote",children:e.footnote}),t?.tables?.length?n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button",className:"fdc-btn fdc-no-print",style:{marginTop:14},"aria-expanded":a,"aria-controls":l,onClick:()=>i(d=>!d),children:a?"Ocultar perfil por portão":"Ver perfil por portão · saÃda e chegada"}),n.jsx("div",{id:l,className:a?"fdc-profiles-wrap":"fdc-profiles-wrap fdc-print-only",children:n.jsx(il,{profiles:t,variant:"table"})})]}):null]})}function Am({fdm:e,filter:t="todas",flightLabel:o="",archived:a=!1,headingLevel:i=2}){const{user:l,accessMap:c,isAviatoAdmin:d}=_i()||{},u=Er("/fdm",l?.role,d,c),p=y.useMemo(()=>ql(e,{flightLabel:o,archived:a}),[e,o,a]);return Xl(t,e)?n.jsxs("section",{className:"fdc","aria-labelledby":"dossier-fdm","data-testid":"safety-audit-fdm","data-fdm-state":p.state,children:[n.jsx(tl,{id:"dossier-fdm",headingLevel:i,meta:`${p.meta} · ${p.disclaimer}`}),n.jsxs("div",{className:"fdc-dossier-grid",children:[n.jsx(km,{view:p,canOpenFdm:u}),p.pilotWindowPlaceholder?n.jsx(on,{className:"fdc-span-12",testId:"fdm-dossier-pilot-window",title:p.pilotWindowPlaceholder,text:"Privacidade do piloto: eventos, aproximação e pouso aparecem para a empresa depois da janela. Nada desta perna conta no Ãndice até lá."}):null,p.verified?n.jsxs(n.Fragment,{children:[n.jsx(jm,{events:p.events}),n.jsx(Sm,{landing:p.landing}),n.jsx($m,{approach:p.approach,profiles:p.profiles,learned:p.learned})]}):null,p.state==="provisional"||p.state==="processing"?n.jsx(on,{className:"fdc-span-12",testId:"fdm-dossier-awaiting",title:"Aguardando o recompute do servidor",text:"Eventos, aproximação e pouso entram no dossiê quando a perna for verificada. Até lá, nada desta gravação conta no score."}):null,p.state==="failed"?n.jsx(on,{className:"fdc-span-12",title:"Sem dados verificados para esta perna",text:"A análise falhou no servidor; uma nova análise é refeita sozinha. A falha é do sistema, não da tripulação."}):null,p.state==="missing"?n.jsx(on,{className:"fdc-span-12",testId:"fdm-dossier-missing",title:"Sem dados medidos para esta perna",text:"Aproximação, pouso e eventos ficam sem evidência objetiva. O relato da tripulação no Debrief continua sendo a fonte desta perna."}):null]})]}):null}const oi=new Set([Pi]);function Tm({text:e,shareUrl:t}){const o=String(e||"").split(` 18`);return n.jsxs(ne,{"data-testid":"safety-audit-share-preview",sx:{p:"22px",displayPrint:"none"},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap",mb:1.75},children:[n.jsx(r,{component:"span",sx:{width:36,height:36,display:"grid",placeItems:"center",bgcolor:s.steelSoft,color:s.accentInk,border:`1px solid ${s.accent}`},children:n.jsx(q,{d:C.whatsapp,size:18})}),n.jsxs(r,{sx:{flex:1,minWidth:200},children:[n.jsx(xe,{component:"p",sx:{m:0},children:"Resumo PDF / WhatsApp"}),n.jsx(P,{component:"p",sx:{m:0,fontSize:14},children:"Pré-visualização do texto enviado por WhatsApp. O PDF exp
18ortado traz a seção âDados de voo (FDM)â completa."})]}),n.jsxs(r,{sx:{display:"flex",gap:1,flexWrap:"wrap"},children:[n.jsx(X,{size:"sm",icon:C.print,onClick:()=>window.print(),children:"Imprimir"}),t?n.jsx(Qt,{size:"sm",href:t,children:"Enviar resumo"}):null]})]}),n.jsx(r,{component:"div","aria-label":"Texto do resumo",sx:{maxHeight:280,overflowY:"auto",p:"18px 20px",bgcolor:"color-mix(in srgb, var(--color-text) 3%, transparent)",border:`1px solid ${s.ink2}`,fontFamily:g,fontSize:14,lineHeight:1.65,color:s.ink},children:o.map((a,i)=>n.jsx(r,{component:"p",sx:{m:0,mt:oi.has(a)&&i>0?"1.1em":0,fontWeight:i===0||oi.has(a)?700:400},children:a},i))})]})}const pr="safetyAudit.dossierView",ai={borderRadius:0,bgcolor:s.surface,fontFamily:ut,fontSize:15};function wm(){try{return window.localStorage?.getItem(pr)==="operacional"?"operacional":"proprietario"}catch{return"proprietario"}}function ii({title:e,icon:t,disabled:o,onClick:a}){return n.jsx(r,{component:"button",type:"button",title:e,"aria-label":e,disabled:o,onClick:a,sx:{width:40,border:0,bgcolor:"transparent",color:s.ink,display:"flex",alignItems:"center",justifyContent:"center",cursor:o?"default":"pointer",opacity:o?.35:1,"&:hover":o?null:{bgcolor:s.steelHover},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:-2}},children:n.jsx(q,{d:t,size:18})})}function Em({flightLabel:e,routeSummary:t,dateLabel:o,neighbors:a,onStep:i}){return n.jsxs(r,{sx:{display:"flex",alignItems:"stretch",border:`1px solid ${s.line}`,bgcolor:s.surface},children:[n.jsx(ii,{title:"Voo anterior",icon:C.chevronLeft,disabled:!a.previous,onClick:()=>i(a.previous)}),n.jsxs(r,{"data-testid":"audit-flight-tag",sx:{px:2,py:.75,minWidth:190,display:"flex",flexDirection:"column",justifyContent:"center",gap:"2px",borderLeft:`1px solid ${s.line}`,borderRight:`1px solid ${s.line}`},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:18,lineHeight:1.1,color:s.accentInk},children:e}),n.jsx(r,{component:"span",sx:{fontSize:13,color:s.muted,whiteSpace:"nowrap"},children:[t,o,a.positionLabel].filter(Boolean).join(" · ")})]}),n.jsx(ii,{title:"Próximo voo",icon:C.chevronRight,disabled:!a.next,onClick:()=>i(a.next)})]})}function Cm({cases:e,flightLabel:t}){return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:2.25},children:[n.jsx(At,{title:"Fatores humanos (HFACS)",kicker:"Casos concluÃdos",meta:`${e.length} caso${e.length===1?"":"s"} vinculado${e.length===1?"":"s"} ao voo`}
18),n.jsx(r,{"data-testid":"safety-audit-hfacs-cases",sx:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(100%, 420px), 1fr))",gap:2.75},children:e.map((o,a)=>{const i=Array.isArray(o?.hfacs?.recommendations)?o.hfacs.recommendations.filter(c=>String(c||"").trim()):[],l=o?.hfacsAnalysis?.flightLink||{};return n.jsxs(ne,{sx:{p:"18px",display:"flex",flexDirection:"column",gap:1.5},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"flex-start",gap:1.5},children:[n.jsxs(r,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:"3px"},children:[n.jsx(r,{component:"span",sx:{...te,fontSize:12,letterSpacing:".18em"},children:`HF${String(a+1).padStart(2,"0")} · Análise HFACS concluÃda`}),n.jsx(r,{component:"h3",sx:{m:0,fontFamily:g,fontWeight:700,fontSize:21,lineHeight:1.1,color:s.ink},children:o?.hazardSituation||"Evento de fatores humanos"})]}),n.jsx(ee,{tone:j.good,children:"Revisada"})]}),n.jsx(r,{component:"p",sx:{m:0,fontSize:15,lineHeight:1.55,color:s.ink2},children:o?.hfacs?.summary||"Conclusão HFACS registrada sem resumo narrativo."}),n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",gap:"4px 18px",fontSize:14,color:s.muted},children:[n.jsxs("span",{children:["Caso ",n.jsx("b",{children:o?.hfacsAnalysis?.caseNumber||"â"})]}),n.jsxs("span",{children:["Voo ",n.jsx("b",{children:l.flightNumber||t})]}),n.jsxs("span",{children:["Fatores ",n.jsx("b",{children:sc(o)})]}),n.jsxs("span",{children:["ConcluÃdo ",n.jsx("b",{children:To(o?.hfacsAnalysis?.completedAt)})]})]}),i.length?n.jsxs(r,{sx:{p:"10px 12px",bgcolor:s.steelSoft,display:"flex",flexDirection:"column",gap:.5},children:[n.jsx(r,{component:"span",sx:{...te,color:s.accentInk},children:"Recomendações HFACS"}),i.slice(0,4).map((c,d)=>n.jsx(r,{component:"span",sx:{fontSize:14,lineHeight:1.45,color:s.ink2},children:`${d+1}. ${c}`},`${o?.id}_rec_${d}`))]}):null]},String(o?.id||a))})})]})}const si=Object.fromEntries(Xt.map(e=>[e.key,e.label]));function Fm({phase:e}){return si[e]?n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:1,height:36,px:1.5,border:`1px solid ${s.ink2}`,fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".14em",textTransform:"uppercase",whiteSpace:"nowrap",color:s.ink},children:[n.jsx(r,{component:"span",sx:{width:9,height:9,border:`1px solid ${s.ink2}`,background:he}}),si[e]]}):null}function Nm({owner:e}){const t=e===H.system;return n.jsx(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",height:26,px:1,border:`1px solid ${t?s.accent:s.lineDash}`,color:t?s.accentInk:s.muted,fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".1em",textTransform:"uppercase",whiteSpace:"nowrap"},children:Tu[e]?.title||e})}function Mm({finding:e,dimensionItem:t,ownerView:o}){const a=wo[e.dimension],i=Vt(e),l=i===H.system,c=a?[a.label,t?.statusLabel].filter(Boolean).join(" · "):"Dossiê";return n.jsxs(r,{"data-testid":`open-gap-${e.key}`,"data-owner":i,sx:{display:"flex",flexWrap:"wrap",gap:"12px 24px",alignItems:"center",p:"14px 24px 14px 21px",borderLeft:`3px solid ${l?s.accent:s.ink2}`,borderBottom:`1px solid ${s.lineSoft}`,"&:last-of-type":{borderBottom:0}},children:[n.jsx(r,{component:"span",sx:{width:40,height:40,flex:"none",display:"grid",placeItems:"center",bgcolor:l?s.steelSoft:s.ink2,color:l?s.accentInk:s.white},children:n.jsx(q,{d:l?C.crosshair:C.alert,size:18})}),n.jsxs(r,{sx:{flex:"1 1 280px",minWidth:0},children:[n.jsx(r,{component:"span",sx:{display:"block",fontFamily:g,fontSize:20,fontWeight:600,lineHeight:1.15,color:s.ink},children:e.title}),n.jsx(r,{component:"span",sx:{display:"block",mt:.5,fontSize:15,color:s.muted},children:e.reason}),o?null:n.jsx(r,{component:"span",sx:{display:"block",fontFamily:g,fontSize:13,letterSpacing:".06em",color:s.faint},children:e.key})]}),n.jsx(Fm,{phase:a?.phase}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".06em",color:s.muted},children:c}),n.jsx(Nm,{owner:i})]})}const Dm=[[H.system,"de captura do sistema"],[H.crew,"da tripulação ou do despacho"],[H.operator,"do cadastro do operador"]];function Rm({audit:e,ownerView:t,onOpenPendingRecords:o}){const{findings:a}=e,i=a.length?[`${a.length} em aberto`,...Dm.map(([c,d])=>{const u=a.filter(p=>Vt(p)===c).length;return u?`${u} ${d}`:""}
18)].filter(Boolean).join(" · "):"Nada em aberto",l=a.length&&o?n.jsx(Ge,{onClick:o,"data-testid":"open-gaps-pending-link",sx:{displayPrint:"none"},children:"Tratar em Pendências de registro â"}):null;return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:2.25},children:[n.jsx(At,{id:"lacunas",num:"05",title:"Registros em aberto",kicker:"Fatos do dossiê",meta:i,right:l}),a.length?n.jsx(P,{sx:{fontSize:15},children:Rs}):null,n.jsx(ne,{"data-testid":"safety-audit-open-gaps",children:a.length?a.map(c=>n.jsx(Mm,{finding:c,dimensionItem:e.dimensionByKey[c.dimension],ownerView:t},c.key)):n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1.5,p:"16px 20px",fontSize:15,color:s.ink},children:[n.jsx(r,{component:"span",sx:{width:30,height:30,flex:"none",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:s.accent,color:s.white},children:n.jsx(q,{d:C.check,size:16})}),"Nenhum registro em aberto. Dossiê completo para este voo."]})})]})}function Lm({recordCount:e,sourceCount:t,untimedCount:o,evidenceHash:a,generatedAt:i}){return n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"10px 24px",p:"18px 24px",bgcolor:s.ink2,color:"rgba(255,255,255,.72)",fontSize:15},children:[n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:1.25,fontFamily:g,fontSize:14,fontWeight:600,letterSpacing:".16em",textTransform:"uppercase",color:s.white},children:[n.jsx(q,{d:C.lock,size:14,color:"rgba(255,255,255,.7)"}),a?"Cadeia de custódia Ãntegra":"Cadeia de custódia"]}),n.jsxs("span",{children:[$(e,"registro","registros")," · ",$(t,"fonte","fontes"),o?` · ${o} sem hora`:""]}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:14,fontWeight:600,letterSpacing:".04em",color:"rgba(255,255,255,.85)"},children:a?`sha256 · ${On(a)}`:"Sem hash de evidência"}),n.jsxs(r,{component:"span",sx:{ml:{md:"auto"}},children:["Gerado pela Zulbot",i?` · ${i}`:""]})]})}function Im({open:e,onClose:t,aiReport:o}){return n.jsxs(hi,{open:e,onClose:t,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderRadius:0}},children:[n.jsx(gi,{sx:{fontFamily:g,fontWeight:700,fontSize:24,color:s.ink},children:"Relatório de risco (IA) · e-FRAT"}),n.jsxs(bi,{dividers:!0,sx:{maxHeight:"65vh"},children:[n.jsx(r,{component:"p",sx:{m:0,whiteSpace:"pre-wrap",fontSize:15,color:s.ink2,lineHeight:1.65},children:o?.narrative||""}),o?n.jsx(r,{component:"p",sx:{mt:2,mb:0,fontFamily:g,fontSize:14,color:s.muted},children:[o.recommendation?`Recomendação: ${o.recommendation}`:"",o.provider?`Provider: ${o.provider}`:"",o.saved_at?`Salvo em ${rt(o.saved_at)}`:""].filter(Boolean).join(" · ")}):null]}),n.jsx(vi,{children:n.jsx(X,{size:"sm",onClick:t,children:"Fechar"})})]})}function Om({flight:e,flightLabel:t,routeSummary:o,legInfo:a,reportJson:i,missingEvidence:l,acquisition:c,selectedReport:d,reports:u,scoringContext:p,provenance:f,identityDrift:h,linkedHfacsCases:b,error:x,onClearError:m,acquiring:_,exportingPdf:v,openingPdf:A,pdfUrl:F,generateAction:M,generating:E=!1,onGenerate:T,canShare:D=!0,onAcquireEvidence:W,onExportPdf:U,onOpenPdf:ge,onOpenPendingRecords:Ce,onBack:B,onStep:Fe,neighbors:be,flightSelectOptions:R,flightSwitchValue:Ze,onSwitchFlight:ie,reportViewValue:Be,onSelectReportVersion:pe}){const[ve,je]=y.useState("todas"),[Qe,le]=y.useState(wm),[oe,Se]=y.useState(!1),{timing:$e,captureStates:Je,limited:wt=!1}=p||{},Z=y.useMemo(()=>Hn({evidence:i,missingEvidence:l,timing:$e,captureStates:Je}),[i,l,$e,Je]),Ne=u[0],Ve=y.useMemo(()=>c?ym({savedScore:vm(Ne),liveIndex:Z.index}):null,[c,Ne,Z.index]),Q=y.useMemo(()=>Ts({reportJson:i,checklistSummary:Z.checklistSummary}),[i,Z.checklistSummary]),Y=y.useMemo(()=>lp({evidence:i,timing:$e,dimensions:Z.dimensions}),[i,$e,Z.dimensions]),z=y.useMemo(()=>Hp({flight:e,reportJson:i,timing:$e}),[e,i,$e]),se=c?.acquired_at||d?.generated_at||"",Ae=se?`${c?"Leitura ao vivo":"Gerado"} ${bt(se)}`:"",Te=pu({flightLabel:t,routeSummary:o,dateLabel:z.dateLabel,audit:Z,fdm:i?.fdm}),we=Un(Te),Me=Y.events.filter(G=>G.status!=="milestone").length,et=Y.untimed.length,ae=f?.evidenceHash||"",en=y.useCallback(G=>{le(G);try{window.localStorage?.setItem(pr,G)}catch{}},[]),qe=y.useCallback(G=>{window.requestAnimationFrame(()=>{const pt=window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches;document.getElementById(G)?.scrollIntoView({behavior:pt?"auto":"smooth",block:"start"})})},[]),Et=y.useCallback(G=>{Gn(Z.dimensionByKey[G],ve)||je("todas"),qe(`card-${G}`)},[Z.dimensionByKey,ve,qe]),Xn=y.useCallback(()=>qe("lacunas"),[qe]);
18return n.jsxs(r,{"data-testid":"safety-audit-dossier",sx:{display:"flex",flexDirection:"column",gap:3.5},children:[n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1.5},children:[n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:"space-between",gap:1.5},children:[n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"stretch",gap:1.5},children:[n.jsx(X,{icon:C.arrowLeft,onClick:B,children:"Voos do perÃodo"}),n.jsx(Em,{flightLabel:t,routeSummary:o,dateLabel:jt(e?.flight_date||i?.flight?.flight_date),neighbors:be,onStep:Fe})]}),n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:1},children:[n.jsx(X,{icon:C.refresh,onClick:()=>W({silent:!1}),disabled:_,"aria-busy":_||void 0,children:_?"Atualizando evidênciasâ¦":"Atualizar evidências"}),M,D?n.jsx(Qt,{href:we,children:"Enviar no WhatsApp"}):null,n.jsx(X,{variant:"primary",icon:C.download,onClick:U,disabled:v,"aria-busy":v||void 0,children:v?"Exportandoâ¦":"Exportar PDF"})]})]}),n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:1.5},children:[n.jsxs(Qo,{size:"small",sx:{minWidth:300},children:[n.jsx(Jo,{id:"safety-audit-switch-flight-label",children:"Trocar de voo (auditorias anteriores)"}),n.jsxs(ea,{labelId:"safety-audit-switch-flight-label",label:"Trocar de voo (auditorias anteriores)",value:Ze,onChange:G=>ie(G.target.value),sx:ai,children:[n.jsx(nn,{value:"",children:"Selecionar outro vooâ¦"}),R.map(G=>n.jsx(nn,{value:G.value,children:G.label},G.value))]})]}),u.length?n.jsxs(Qo,{size:"small",sx:{minWidth:280},children:[n.jsx(Jo,{id:"safety-audit-report-version-label",children:"Versão da auditoria"}),n.jsxs(ea,{labelId:"safety-audit-report-version-label",label:"Versão da auditoria",value:Be,onChange:G=>pe(G.target.value),sx:ai,children:[n.jsx(nn,{value:"live",children:"Evidências atuais (ao vivo)"}),u.map((G,pt)=>n.jsx(nn,{value:String(G.id),children:qi(G,pt)},G.id??pt))]})]}):null,F?n.jsx(X,{size:"sm",icon:C.file,onClick:ge,disabled:A,children:A?"Abrindoâ¦":"Abrir PDF salvo"}):null,Ve?n.jsx(P,{sx:{fontSize:14},"data-testid":"safety-audit-saved-vs-live",title:Ve.reason,children:`Ãndice ${Ve.label}. ${Ve.reason}`}):null,u.length>1?n.jsx(P,{sx:{fontSize:14},children:`${u.length} versões anteriores desta auditoria estão arquivadas.`}):null]})]}),n.jsx(gp,{error:x,onClearError:m,isStale:String(d?.status||"").toLowerCase()==="stale",reportJson:i,acquisition:c,openRecordCount:Z.findings.length,provenance:f,identityDrift:h,limitedScoring:wt}),n.jsx(Cp,{facts:z,audit:Z,legInfo:a,flightNumber:Ot(e?.flight_number||i?.flight?.flight_number)||t,recordCount:Me,sourceCount:Z.sources.length,onJumpToGaps:Xn}),n.jsx(Op,{reportJson:i,deterministicSummary:c?.deterministic_summary,audit:Z,recordCount:Me,generatedLabel:Ae,generating:E,onGenerate:T,onJump:Et}),b.length?n.jsx(Cm,{cases:b,flightLabel:t}):null,n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:2.25},children:[n.jsx(At,{num:"01",title:"Cadeia de custódia das evidências",kicker:"Trilha do voo",meta:"Três fases, cada uma na sua escala · passe o mouse para o detalhe · clique para ir à evidência",right:n.jsxs(xe,{sx:{letterSpacing:".14em"},children:[$(Me,"registro","registros"),et?` · ${et} sem hora`:"",ae?` · sha256 ${On(ae)}`:""]})}),n.jsx(tf,{events:Y.events,flight:Y.flight,untimed:Y.untimed,evidenceHash:ae,onJump:Et})]}),n.jsx(bm,{audit:Z,evidence:i||{},specs:Q,timing:$e,custodyEvents:Y.events,filter:ve,onFilterChange:je,view:Qe,onViewChange:en,onOpenRiskReport:()=>Se(!0)}),n.jsx(Am,{fdm:i?.fdm,filter:ve,flightLabel:t,archived:!c&&!!d}),n.jsx(Rm,{audit:Z,ownerView:Qe==="proprietario",onOpenPendingRecords:Ce}),D?n.jsx(Tm,{text:Te,shareUrl:we}):null,n.jsx(Lm,{recordCount:Me,sourceCount:Z.sources.length,untimedCount:et,evidenceHash:ae,generatedAt:se?bt(se):""}),n.jsx(Im,{open:oe,onClose:()=>Se(!1),aiReport:Q.risks.aiReport})]})}const ri="Anexar NOTAM vigentes (consulta atual)",li={m:0,fontSize:15,lineHeight:1.6,color:s.ink2};function Pm({open:e,flightLabel:t,onCancel:o,onConfirm:a}){return n.jsxs(hi,{open:e,onClose:o,maxWidth:"sm",fullWidth:!0,"aria-labelledby":"attach-current-notams-title",PaperProps:{sx:{borderRadius:0}},children:[n.jsx(gi,{id:"attach-current-notams-title",sx:{fontFamily:g,fontWeight:700,fontSize:24,color:s.ink},children:"Anexar NOTAM vigentes?"}),n.jsxs(bi,{dividers:!0,sx:{display:"flex",flexDirection:"column",gap:1.5},children:[n.jsxs(r,{component:"p",sx:li,children:[t?`${t}: a`:"A"," consulta anexa os NOTAM vigentes agora, não os da hora do voo â não existe histórico de NOTAM para voo passado."]}),n.jsx(r,{component:"p",sx:li,children:"O resultado aparece no dossiê como evidência tardia (captura pós-voo) e segue fora do Ãndice. Os SIGMET vigentes também são anexados assim."})]}),n.jsxs(vi,{children:[n.jsx(X,{size:"sm",onClick:o,children:"Cancelar"}),n.jsx(X,{size:"sm",variant:"primary",onClick:a,"data-testid":"attach-current-notams-confirm",children:"Anexar NOTAM vigentes"})]})]})}function fr({monthKey:e,month:t}){if(!t?.truncated)return null;const o=Array.isArray(t.flights)?t.flights.length:0;return n.jsxs(_e,{severity:"warning","data-testid":"period-truncated",children:["A lista parou no limite de ",$(o,"voo","voos")," desta visão e pode não incluir todos os voos de"," ",Oe(e),". O Ãndice, os gráficos e as pen
18dências cobrem só os voos listados."]})}function ci(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function mr({monthKey:e,monthOptions:t,onChange:o}){const a=t.includes(e)?t:[e,...t];return n.jsxs(r,{component:"label",sx:{position:"relative",display:"inline-flex",alignItems:"center",gap:1,p:"10px 16px",border:`1px solid ${s.line}`,color:s.ink,fontFamily:g,fontWeight:600,fontSize:15,letterSpacing:".14em",textTransform:"uppercase",cursor:"pointer","&:hover":{borderColor:s.accent},"&:focus-within":{outline:`2px solid ${s.accent}`,outlineOffset:2}},children:[n.jsx(q,{d:C.calendar}),n.jsx("span",{children:ci(Io(e))}),n.jsx(q,{d:C.chevronDown,size:14}),n.jsx(r,{component:"select","aria-label":"Mês da auditoria",value:e,onChange:i=>o(i.target.value),sx:{position:"absolute",inset:0,opacity:0,cursor:"pointer",width:"100%"},children:a.map(i=>n.jsx("option",{value:i,children:ci(Oe(i))},i))})]})}const di=12,ao=4;function qn(e){return[e?.departure_airport,e?.arrival_airport].filter(Boolean).join(" â ")}function Wm({finding:e,systemOwned:t}){return t?n.jsx(ee,{tone:e.captureState==="no_history"?j.na:j.capture,sx:{justifySelf:"start"},children:Wt[e.captureState]||ts.captura}):n.jsx(ee,{tone:j.partial,sx:{justifySelf:"start"},children:"Em aberto"})}function Bm({finding:e,captureRunning:t,onCaptureEntry:o,onAttachEntry:a}){return e.attachable?n.jsx(X,{size:"sm",variant:"steel",icon:C.crosshair,disabled:t,onClick:()=>a(e),"aria-label":`${ri} â ${e.flightLabel} · ${e.title}`,children:ri}):n.jsx(X,{size:"sm",variant:"steel",icon:C.crosshair,disabled:t,onClick:()=>o(e.entryKey),"aria-label":`Recapturar â ${e.flightLabel} · ${e.title}`,children:"Recapturar"})}function zm({finding:e,owner:t,canShare:o,onOpenRecord:a}){const i=o&&t===H.crew?Un(Is({flightLabel:e.flightLabel,routeSummary:qn(e.flight),findings:[e]})):"";return n.jsxs(r,{sx:{display:"flex",gap:1,flexWrap:"wrap",justifyContent:"flex-end"},children:[i?n.jsx(Qt,{size:"sm",variant:"steel",href:i,"aria-label":`Lembrar no WhatsApp â ${e.flightLabel} · ${e.title}`,children:"Lembrar"}):null,n.jsxs(X,{size:"sm",variant:"steel",onClick:()=>a(e),"aria-label":`${e.action} â ${e.flightLabel} · ${e.title}`,children:[e.action," â"]})]})}function Hm({finding:e,owner:t,canCapture:o,canShare:a,captureRunning:i,onCaptureEntry:l,onAttachEntry:c,onOpenRecord:d,onOpenFlight:u}){const p=t===H.system,f=p?s.accent:s.ink2;return n.jsxs(r,{"data-testid":`pending-record-${e.entryKey}-${e.key}`,sx:{display:"grid",gridTemplateColumns:{xs:"40px minmax(0,1fr)",md:"40px minmax(0,1.6fr) 150px minmax(0,1fr) auto"},gap:"10px 18px",alignItems:"center",p:"14px 18px 14px 22px",borderBottom:`1px solid ${s.lineSoft}`,boxShadow:`inset 4px 0 0 ${f}`},children:[n.jsx(r,{component:"span",sx:{width:40,height:40,display:"flex",alignItems:"center",justifyContent:"center",bgcolor:f,color:s.white},children:n.jsx(q,{d:p?C.crosshair:C.alert,size:18})}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"3px",minWidth:0},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:20,fontWeight:700,lineHeight:1.15,color:s.ink},children:e.title}),n.jsx(P,{children:e.reason})]}),n.jsx(Wm,{finding:e,systemOwned:p}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"3px",minWidth:0},children:[n.jsxs(Ge,{onClick:()=>u(e.flight),sx:{alignSelf:"flex-start",fontSize:15,fontWeight:700,letterSpacing:".04em",textTransform:"none"},children:[e.flightLabel," â"]}),n.jsxs(P,{sx:{fontSize:14},children:[qn(e.flight),e.flight?.flight_date?` · ${jt(e.flight.flight_date)}`:""]})]}),n.jsxs(r,{sx:{display:"flex",justifyContent:"flex-end",displayPrint:"none"},children:[p&&o?n.jsx(Bm,{finding:e,captureRunning:i,onCaptureEntry:l,onAttachEntry:c}):null,p&&!o?n.jsx(P,{sx:{fontSize:14},children:"O Safety recaptura"}):null,p?null:n.jsx(zm,{finding:e,owner:t,canShare:a,onOpenRecord:d})]})]})}function Um({group:e,children:t}){return n.jsxs(r,{sx:{flex:"1 1 260px",minWidth:0,p:"16px 22px 18px",display:"flex",flexDirection:"column",gap:1,bgcolor:s.surface},"data-testid":`pending-tile-${e.owner}`,children:[n.jsx($t,{sx:{color:s.ink2},children:e.title}),n.jsx(Dt,{value:e.count,unit:` · ${$(e.legs,"voo","voos")}`}),n.jsx(r,{component:"ul",sx:{m:0,p:0,listStyle:"none",display:"flex",flexDirection:"column"},children:e.kinds.slice(0,ao).map(o=>
18n.jsxs(r,{component:"li",sx:{display:"flex",justifyContent:"space-between",gap:1.5,py:"5px",borderBottom:`1px dashed ${s.lineDash}`,fontSize:15,color:s.ink},children:[n.jsx("span",{children:o.label}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontVariantNumeric:"tabular-nums"},children:o.count})]},o.key))}),e.kinds.length>ao?n.jsxs(P,{children:["+ ",$(e.kinds.length-ao,"outro tipo","outros tipos")]}):null,n.jsx(P,{children:e.note}),t?n.jsx(r,{sx:{display:"flex",flexDirection:"column",gap:1,mt:"auto",pt:.5,displayPrint:"none"},children:t}):null]})}function Gm({num:e,group:t,rowProps:o}){const[a,i]=y.useState(!1),l=a?t.findings:t.findings.slice(0,di),c=`pending-records-${t.owner}-title`;return n.jsxs(r,{component:"section","aria-labelledby":c,sx:{display:"flex",flexDirection:"column",gap:1.5},children:[n.jsx(At,{id:c,num:e,title:t.title,kicker:t.tag,meta:`${t.count} em aberto · ${$(t.legs,"voo","voos")}`}),n.jsx(P,{sx:{fontSize:15},children:t.note}),n.jsxs(ne,{"data-testid":`pending-records-${t.owner}`,children:[l.map(d=>n.jsx(Hm,{finding:d,owner:t.owner,...o},`${d.entryKey}:${d.key}`)),t.findings.length>di?n.jsx(r,{sx:{p:"12px 22px",displayPrint:"none"},children:n.jsx(Ge,{onClick:()=>i(d=>!d),children:a?"Mostrar menos":`Mostrar todos (${t.findings.length})`})}):null]})]})}function Vm({legEntry:e,onOpenFlight:t,onClearLeg:o}){const a=e.flight;return n.jsxs(ne,{"data-testid":"pending-leg-filter",sx:{p:"12px 20px",display:"flex",flexWrap:"wrap",alignItems:"center",gap:"8px 18px"},children:[n.jsx($t,{children:"Só este voo"}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:18,fontWeight:700,color:s.ink},children:kt(e)}),n.jsxs(P,{sx:{fontSize:15},children:[qn(a),a?.flight_date?` · ${jt(a.flight_date)}`:""]}),n.jsxs(r,{sx:{display:"flex",gap:2,ml:"auto",flexWrap:"wrap",displayPrint:"none"},children:[n.jsx(Ge,{onClick:()=>t(a),children:"Abrir dossiê â"}),n.jsx(Ge,{onClick:o,"data-testid":"pending-clear-leg",children:"Mostrar todos os voos do mês"})]})]})}function io({children:e}){return n.jsx(ne,{sx:{p:"28px 26px",display:"flex",alignItems:"center",gap:1.5,fontSize:16,color:s.ink2},children:e})}function qm({failures:e,entries:t}){const o=a=>{const i=t.find(l=>l.key===a);return i?kt(i):`Voo ${a}`};return n.jsx(r,{component:"ul","data-testid":"pending-capture-failures",sx:{m:0,pl:2.5,display:"flex",flexDirection:"column",gap:.25},children:e.map(a=>n.jsxs(r,{component:"li",sx:{fontSize:14,color:s.ink2},children:[n.jsx("strong",{children:o(a.key)}),": ",a.reason]},a.key))})}function Xm({monthKey:e,monthOptions:t,legKey:o="",onMonthChange:a,onOpenFlight:i,onOpenRecord:l,onClearLeg:c,canCapture:d=!0,canShare:u=!0}){const p=zo(e),f=y.useMemo(()=>o?p.flights.filter(R=>String(R.id)===String(o)):p.flights,[p.flights,o]),{entries:h,captureEntries:b,capture:x}=Ds(f),m=y.useMemo(()=>Ns(h),[h]),_=y.useMemo(()=>Fu(m.findings),[m.findings]),[v,A]=y.useState(null),F=o&&h.find(R=>R.key===String(o))||null,M=!p.loading&&!p.error,E=!!o&&M&&!f.length,T=M&&f.length>0,D=m.loadingCount>0,W=y.useCallback(()=>b(_.recapturableEntryKeys),[b,_.recapturableEntryKeys]),U=y.useCallback(R=>b([R]),[b]),ge=y.useCallback(()=>{A(null),v&&b([v.entryKey],{force:!0})},[v,b]),Ce=_.groups.find(R=>R.owner===H.crew),B=Ce&&u?Un(F?Is({flightLabel:kt(F),routeSummary:qn(F.flight),findings:Ce.findings}):Ru({monthKey:e,findings:Ce.findings})):"",Fe=Mu(x),be={canCapture:d,canShare:u,captureRunning:x.running,onCaptureEntry:U,onAttachEntry:A,onOpenRecord:l,onOpenFlight:i};return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:3.5},"data-testid":"safety-audit-pending",children:[n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"flex-end",justifyContent:"space-between",gap:"16px 24px"},children:[n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1,minWidth:0},children:[n.jsx(xe,{children:"Auditoria de safety · Pendências de registro"}),n.jsxs(r,{component:"h2",sx:{m:0,fontFamily:g,fontWeight:700,fontSize:{xs:30,md:36},lineHeight:1.05,color:s.ink},children:["Registros em aberto em ",Es(e),"."]}),n.jsxs(r,{component:"span",sx:{fontSize:15,color:s.muted},children:[Cs(e),T&&!D?` · ${Nu(_)}`:""]})]}),n.jsx(r,{sx:{display:"flex",gap:1,flexWrap:"wrap",alignItems:"center",displayPrint:"none"},children:n.jsx(mr,{monthKey:e,monthOptions:t,onChange:a})})]}),n.jsx(P,{sx:{fontSize:15,maxWidth:760},children:Rs}),F?n.jsx(Vm,{legEntry:F,onOpenFlight:i,onClearLeg:c}):null,p.loading?n.jsxs(io,{children:[n.jsx(jn,{size:18,sx:{color:s.accent}}),"Carregando os voos de ",Oe(e),"â¦"]}):null,p.error?n.jsx(_e,{severity:"error",action:n.jsx(X,{size:"sm",onClick:p.reload,children:"Tentar de novo"}),children:p.error}):null,E?n.jsxs(_e,{severity:"info",action:n.jsx(X,{size:"sm",onClick:c,children:"Mostrar todos os voos do mês"}),children:["Este voo não está entre os voos exportados no eDB em ",Oe(e),"."]}):null,M&&!o&&!p.flights.length?n.jsxs(io,{children:["Nenhum voo exportado no eDB em ",Oe(e),"."]}):null,T&&!o?n.jsx(fr,{monthKey:e,month:p}
18):null,T&&D?n.jsxs(P,{role:"status",sx:{display:"inline-flex",alignItems:"center",gap:1,fontSize:15},children:[n.jsx(jn,{size:13,thickness:6,sx:{color:s.accentInk}}),"Lendo ",m.readyCount," de ",$(m.legCount,"voo","voos"),"â¦"]}):null,T&&m.errorCount?n.jsxs(_e,{severity:"warning",children:[$(m.errorCount,"voo não pôde ser lido","voos não puderam ser lidos")," agora e ",m.errorCount===1?"fica":"ficam"," fora desta lista até a próxima leitura."]}):null,T&&!D&&!_.count&&!m.errorCount?n.jsxs(io,{children:[n.jsx(r,{component:"span",sx:{width:30,height:30,flex:"none",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:s.accent,color:s.white},children:n.jsx(q,{d:C.check,size:16})}),o?"Nenhum registro em aberto neste voo.":`Nenhum registro em aberto nos voos lidos de ${Oe(e)}.`]}):null,_.count?n.jsxs(n.Fragment,{children:[n.jsx(ne,{"data-testid":"pending-summary",children:n.jsx(r,{sx:{display:"flex",flexWrap:"wrap",gap:"1px",bgcolor:s.line},children:_.groups.map(R=>n.jsxs(Um,{group:R,children:[R.owner===H.system&&d&&_.recapturableCount?n.jsx(X,{variant:"primary",icon:C.crosshair,onClick:W,disabled:x.running,"aria-busy":x.running||void 0,"data-testid":"pending-capture-all",children:x.running?"Capturandoâ¦":`Capturar ${_.recapturableCount} agora`}):null,R.owner===H.system&&Fe?n.jsx(P,{role:"status","data-testid":"pending-capture-progress",children:Fe}):null,R.owner===H.system&&!x.running&&x.failures.length?n.jsx(qm,{failures:x.failures,entr
18ies:h}):null,R.owner===H.crew&&B?n.jsx(Qt,{href:B,variant:"steel","data-testid":"pending-remind-crew",children:"Lembrar a tripulação"}):null]},R.owner))})}),_.groups.map((R,Ze)=>n.jsx(Gm,{num:String(Ze+1).padStart(2,"0"),group:R,rowProps:be},R.owner))]}):null,T?n.jsxs(P,{sx:{fontSize:14},children:[Au," de ",Oe(e),"."]}):null,n.jsx(Pm,{open:!!v,flightLabel:v?.flightLabel,onCancel:()=>A(null),onConfirm:ge})]})}const xr="64px minmax(150px,1.05fr) 122px 112px minmax(186px,1.15fr) 84px",Yo="12px 18px 12px 22px",Km={conforme:"Completos",ressalvas:"Ressalvas",nao_conforme:"Incompletos"},Ym={conforme:s.accentInk,ressalvas:s.accentDeep,nao_conforme:s.ink},hr={pre:{flex:"9 1 0",minWidth:0},voo:{flex:"2 1 0",minWidth:42},pos:{flex:"2 1 0",minWidth:42}},Zm=[{key:"pre",label:"Pré-voo"},{key:"voo",label:"Voo"},{key:"pos",label:"Pós"}],Qm=[{key:"pre",cells:9},{key:"voo",cells:2},{key:"pos",cells:2}],Jm={todos:"Nenhum voo neste mês.",ressalvas:"Nenhum voo com registros em aberto neste mês.",mitigacao:"Nenhum voo exigiu mitigação de risco neste mês."},ex={lacuna:j.gap,captura:j.capture},tx={fg:s.accentInk,bg:"transparent",bd:s.accent,dot:s.accent},_n=4;function nx(e){return e.length<=_n?{chips:e,hidden:0}:{chips:e.slice(0,_n-1),hidden:e.length-(_n-1)}}function ox({exceptions:e}){const{chips:t,hidden:o}=nx(e);return n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",gap:.5},children:[t.map(a=>n.jsx(ee,{size:"sm",tone:ex[a.status]||j.partial,children:a.text},a.key)),o?n.jsxs(ee,{size:"sm",tone:tx,title:e.slice(_n-1).map(a=>a.text).join(" · "),children:["+",o," em aberto"]}):null]})}function ax(e){const t=new Map(_t(e).map((o,a)=>[o.key,a]));return[...e].sort((o,a)=>
18{const i=Number.isFinite(o.audit?.index)?o.audit.index:1/0,l=Number.isFinite(a.audit?.index)?a.audit.index:1/0;return i-l||t.get(o.key)-t.get(a.key)})}function Ft(){return{...te}}function ix(){return n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:xr,gap:"0 16px",alignItems:"end",p:"14px 18px 10px 22px",borderBottom:`1px solid ${s.line}`},children:[n.jsx(r,{component:"span",sx:Ft(),children:"Data"}),n.jsx(r,{component:"span",sx:Ft(),children:"Rota"}),n.jsx(r,{component:"span",sx:Ft(),children:"Ãndice"}),n.jsx(r,{component:"span",sx:Ft(),children:"eFRAT"}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.625,minWidth:0},children:[n.jsx(r,{component:"span",sx:Ft(),children:"Evidências"}),n.jsx(r,{sx:{display:"flex",gap:.75},children:Zm.map(e=>n.jsxs(r,{component:"span",sx:{...hr[e.key],fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".14em",textTransform:"uppercase",color:s.accentInk,borderBottom:`1px solid ${s.axis}`,pb:"2px",whiteSpace:"nowrap",overflow:"hidden"},children:[e.label," · ",tu[e.key]]},e.key))})]}),n.jsx("span",{})]})}function sx({mission:e}){const t=e.legs.length>1?`${e.legs.length} pernas`:"Perna única";return n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"8px 20px",p:"10px 18px 10px 22px",bgcolor:s.steelSoft,borderBottom:`1px solid ${s.line}`},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"baseline",gap:1.25,flexWrap:"wrap"},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:18,fontWeight:700,letterSpacing:".04em",color:s.accentInk},children:e.flightNumber||"Sem número"}),n.jsx(r,{component:"span",sx:{...te,fontSize:13,letterSpacing:".14em",whiteSpace:"nowrap"},children:[t,e.datesLabel,e.blockMinutes?`${dt(e.blockMinutes)} de bloco`:""].filter(Boolean).join(" · ")})]}),n.jsx(r,{sx:{display:"flex",alignItems:"center",flexWrap:"wrap",rowGap:.75},"aria-label":"Rota da missão",children:e.chain.map((o,a)=>{const i=a>0?e.edgeVerdicts[a-1]:null,l=i==="conforme"?s.accent:i?s.accentDeep:s.lineDash;return n.jsxs(yo.Fragment,{children:[a>0?n.jsxs(r,{component:"span",sx:{display:"flex",alignItems:"center",width:30},"aria-hidden":"true",children:[n.jsx(r,{component:"span",sx:{flex:1,height:2,bgcolor:l}}),n.jsx("svg",{width:"6",height:"8",viewBox:"0 0 6 8",children:n.jsx("path",{d:"M0 0 L6 4 L0 8 Z",fill:l})})]}):null,n.jsx(r,{component:"span",sx:{px:"7px",py:"2px",border:`1px solid ${s.ink2}`,bgcolor:s.surface,fontFamily:g,fontSize:14,fontWeight:700,letterSpacing:".06em",color:s.ink},children:o})]},`${o}-${a}`)})}),n.jsxs(r,{component:"span",sx:{ml:"auto",display:"inline-flex",alignItems:"baseline",gap:1,...te,whiteSpace:"nowrap"},children:["Ãndice da missão",n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:22,letterSpacing:0,lineHeight:1,color:s.ink},children:Number.isFinite(e.index)?e.index:"â"})]})]})}function rx({audit:e}){const t=e?eu(e):null;return n.jsx(r,{sx:{display:"flex",gap:.75},children:(t||Qm).map(o=>n.jsxs(r,{sx:{...hr[o.key],display:"flex",flexDirection:"column",gap:"3px"},children:[n.jsx(r,{sx:{display:"flex",gap:"2px",height:12},children:t?o.cells.map(a=>n.jsx(r,{component:"span",title:a.tip,sx:{flex:1,minWidth:0,boxSizing:"border-box",background:fo[a.status].bg,border:fo[a.status].border}},a.key)):Array.from({length:o.cells},(a,i)=>n.jsx(r,{component:"span",sx:{flex:1,minWidth:0,bgcolor:s.lineSoft}},i))}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:12,fontVariantNumeric:"tabular-nums",color:t&&o.ok!==o.applicable?s.ink:s.muted},children:t?`${o.ok}/${o.applicable}`:"â¦"})]},o.key))})}function ui({entry:e,showMissionTag:t,onOpen:o,onRetry:a}){const{flight:i,audit:l,status:c}=e,d=Ke(i?.flight_date),u=l?.verdict?.key||null,p=u?We[u]:s.line,f=`${String(i?.departure_airport||"â").toUpperCase()} â ${String(i?.arrival_airport||"â").toUpperCase()}`,h=`${Ot(i?.flight_number)||"Voo"} ${f}`,b=()=>o(e),x=[i?.aircraft_tail,Number(i?.block_minutes)>0?`${dt(Number(i.block_minutes))} de bloco`:"",po(i)?i.status_label:""].filter(Boolean).join(" · ");return n.jsxs(r,{role:"button",tabIndex:0,"aria-label":`Abrir dossiê ${h}`,"data-testid":`period-leg-${e.key}`,onClick:b,onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),b())},sx:{display:"grid",gridTemplateColumns:xr,gap:"0 16px",alignItems:"center",p:Yo,borderBottom:`1px solid ${s.lineSoft}`,boxShadow:`inset 4px 0 0 ${p}
18`,cursor:"pointer","&:hover":{bgcolor:s.steelHover},"&:focus-visible":{outline:`2px solid ${s.accent}`,outlineOffset:-2}},children:[n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"2px"},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:30,lineHeight:1,color:s.ink},children:d?me(d.getDate()):"â"}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".14em",color:s.muted,whiteSpace:"nowrap",textTransform:"uppercase"},children:[d?jo(d.getMonth()):"",Ti(i?.departure_time)].filter(Boolean).join(" · ")})]}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"2px",minWidth:0},children:[t?n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:700,letterSpacing:".06em",color:s.accentInk},children:Ot(i?.flight_number)}):null,n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:20,color:s.ink},children:String(i?.departure_airport||"â").toUpperCase()}),n.jsxs("svg",{width:"34",height:"12",viewBox:"0 0 34 12","aria-hidden":"true",style:{flex:"none"},children:[n.jsx("path",{d:"M4 9 Q17 -2 30 9",fill:"none",stroke:s.axis,strokeWidth:"1.2",strokeDasharray:"2 2"}),n.jsx("rect",{x:"1",y:"7",width:"4",height:"4",fill:s.ink2}),n.jsx("rect",{x:"29",y:"7",width:"4",height:"4",fill:s.ink2})]}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontWeight:700,fontSize:20,color:s.ink},children:String(i?.arrival_airport||"â").toUpperCase()})]}),x?n.jsx(r,{component:"span",sx:{fontSize:14,color:s.muted,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:x}):null]}),n.jsx(r,{sx:{display:"flex",alignItems:"center",gap:1.25},children:c==="error"?n.jsx(Ge,{onClick:m=>{m.stopPropagation(),a(e.key)},sx:{fontSize:13},children:"Falhou · tentar de novo"}):n.jsxs(n.Fragment,{children:[n.jsx(Xs,{score:l?.index,color:u?We[u]:s.line,children:c==="loading"?"â¦":void 0}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:14,fontWeight:600,letterSpacing:".08em",textTransform:"uppercase",color:u?Ym[u]:s.muted},children:u?Km[u]:c==="loading"?"Lendo":""})]})}),n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1},children:[n.jsx(Uu,{score:l?.frat?.score}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"1px"},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:15,fontWeight:700,color:s.ink,fontVariantNumeric:"tabular-nums"},children:Pt(l?.frat?.score)}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:600,letterSpacing:".08em",textTransform:"uppercase",color:l?.frat?.band?.key==="baixo"?s.accentInk:s.ink},children:l?l.frat.band?.short||"Sem eFRAT":""})]})]}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"7px",minWidth:0},children:[n.jsx(rx,{audit:l}),l?.exceptions?.length?n.jsx(ox,{exceptions:l.exceptions}):null]}),n.jsxs(r,{component:"span","aria-hidden":"true",sx:{justifySelf:"end",display:"inline-flex",alignItems:"center",gap:1,p:"7px 10px",border:`1px solid ${s.line}`,fontFamily:g,fontWeight:600,fontSize:14,letterSpacing:".14em",textTransform:"uppercase",color:s.ink,whiteSpace:"nowrap"},children:["Abrir",n.jsx(q,{d:C.chevronRight,size:14})]})]})}function lx(){return n.jsxs(Go,{sx:{p:Yo,gap:"8px 18px"},children:[n.jsx(de,{swatch:n.jsx(ce,{status:"ok",size:12}),children:"Completo"}),n.jsx(de,{swatch:n.jsx(ce,{status:"parcial",size:12}),children:"Parcial"}),n.jsx(de,{swatch:n.jsx(ce,{status:"lacuna",size:12}),children:"Lacuna"}),n.jsx(de,{swatch:n.jsx(ce,{status:"captura",size:12}),children:"Falha de captura"}),n.jsx(de,{swatch:n.jsx(ce,{status:"na",size:12}),children:"Não se aplica"}),n.jsx(de,{swatch:n.jsx(ce,{kind:"bar",color:We.conforme}),children:"Perna completa"}),n.jsx(de,{swatch:n.jsx(ce,{kind:"bar",color:We.ressalvas}),children:"Perna com ressalvas"}),n.jsx(r,{component:"span",sx:{ml:"auto",fontFamily:ut,fontSize:14,fontWeight:500,letterSpacing:0,textTransform:"none",color:s.muted},children:"13 registros por perna, agrupados por fase"})]})}function cx({entries:e,missionCount:t,onOpen:o,onRetry:a}){const[i,l]=y.useState("todos"),[c,d]=y.useState("recentes"),u=y.useMemo(()=>[{key:"todos",label:"Todos",count:e.length},{key:"ressalvas",label:"Em aberto",count:Qn(e,"ressalvas").length},{key:"mitigacao",label:"Com mitigação",count:Qn(e,"mitigacao").length}],[e]),p=y.useMemo(()=>Qn(e,i),[e,i]),f=y.useMemo(()=>c==="recentes"?Qd(p):[],[p,c]),h=y.useMemo(()=>c==="menor"?ax(p):[],[p,c]);return n.jsxs(r,{component:"section","aria-labelledby":"period-flights-title",sx:{dis
18play:"flex",flexDirection:"column",gap:2.25},children:[n.jsx(At,{id:"period-flights-title",num:"04",title:"Voos do perÃodo",kicker:"Dossiês",meta:`${e.length} ${e.length===1?"perna":"pernas"} em ${t} ${t===1?"missão":"missões"} · fonte: eDB Logbook`,right:n.jsxs(r,{sx:{display:"flex",gap:1.5,flexWrap:"wrap",alignItems:"flex-end",displayPrint:"none"},children:[n.jsx(Ut,{label:"Mostrar",options:u,value:i,onChange:l,testIdPrefix:"period-filter"}),n.jsx(Ut,{label:"Ordenar",options:[{key:"recentes",label:"Recentes"},{key:"menor",label:"Menor Ãndice"}],value:c,onChange:d,testIdPrefix:"period-sort"})]})}),n.jsx(ne,{children:n.jsx(r,{sx:{overflowX:"auto"},children:n.jsxs(r,{sx:{minWidth:860},"data-testid":"period-flights-table",children:[n.jsx(ix,{}),p.length?null:n.jsx(r,{sx:{p:Yo,fontSize:15,color:s.muted,borderBottom:`1px solid ${s.lineSoft}`},children:Jm[i]}),f.map(b=>n.jsxs(yo.Fragment,{children:[n.jsx(sx,{mission:b}),b.legs.map(x=>n.jsx(ui,{entry:x,showMissionTag:!1,onOpen:o,onRetry:a},x.key))]},b.key)),h.map(b=>n.jsx(ui,{entry:b,showMissionTag:!0,onOpen:o,onRetry:a},b.key)),n.jsx(lx,{})]})})})]})}function dx({monthKey:e,onError:t,openPdf:o=Rt}){const[a,i]=y.useState(!1),l=async()=>{i(!0),t("");try{await o({reportId:e,downloadPdf:()=>Ie.exportPeriodPdf(e)})}catch(c){t(c?.message==="popup_blocked"?Ea.popupBlocked:Ea.failed)}finally{i(!1)}};return n.jsx(X,{variant:"primary",icon:C.download,onClick:l,disabled:a,"aria-busy":a,"data-testid":"period-pdf",children:a?"Gerando PDFâ¦":"PDF do perÃodo"})}const pi=200,ux=16,px=12;function fx(e){return e?e.key==="baixo"?{background:s.accent,boxShadow:`inset 0 0 0 1px ${s.accent}`}:e.key==="moderado"?{background:he,boxShadow:`inset 0 0 0 1px ${s.ink2}`}:{background:s.ink2,boxShadow:`inset 0 0 0 1px ${s.ink2}`}:{background:"transparent",boxShadow:`inset 0 0 0 1px ${s.faint}`}}function mx(e){const t=Yt({acquisition:e?.acquisition}),o=Ot(e?.flight?.flight_number)||"Voo";return t&&t.count>1?`${o} · P${t.index}`:o}function xx({trend:e,onOpen:t}){const o=e.length,a=cu(e.map(f=>f.index)),i=f=>(100-f)/(100-a)*100,l=o>ux,c=l?Math.ceil(o/px):1,d=`repeat(${Math.max(o,1)}, minmax(0, 1fr))`,u=e.map((f,h)=>`${h*100+50},${i(f.index).toFixed(2)}`).join(" "),p=e.some(f=>f.verdictKey==="nao_conforme");return n.jsxs(ne,{sx:{p:"22px 24px",display:"flex",flexDirection:"column",gap:2.25},"data-testid":"period-trend",children:[n.jsx(zs,{num:"02",title:"Ãndice por voo",kicker:"Tendência"}),o?n.jsxs(r,{sx:{display:"flex",gap:1.25},children:[n.jsxs(r,{sx:{position:"relative",width:26,height:pi,flex:"none",fontFamily:g,fontSize:12,color:s.muted,textAlign:"right"},"aria-hidden":"true",children:[n.jsx(r,{component:"span",sx:{position:"absolute",top:-7,right:0},children:"100"}),n.jsx(r,{component:"span",sx:{position:"absolute",top:`calc(${i(85)}% - 7px)`,right:0,color:s.ink,fontWeight:700},children:"85"}),n.jsx(r,{component:"span",sx:{position:"absolute",bottom:-7,right:0},children:a})]}),n.jsxs(r,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:1.25},children:[n.jsxs(r,{sx:{position:"relative",height:pi,borderLeft:`1px solid ${s.line}`,borderBottom:`1px solid ${s.axis}`,backgroundImage:`linear-gradient(${s.lineSoft} 1px, transparent 1px)`,backgroundSize:"100% 50px"},children:[n.jsx(r,{component:"span",sx:{position:"absolute",left:0,right:0,top:`${i(85)}%`,borderTop:`1.5px dashed ${s.ink2}`}}),n.jsx("svg",{viewBox:`0 0 ${o*100} 100`,preserveAspectRatio:"none",style:{position:"absolute",inset:0,width:"100%",height:"100%",overflow:"visible"},"aria-hidden":"true",children:n.jsx("polyline",{points:u,fill:"none",stroke:s.accent,strokeWidth:"1.5",vectorEffect:"non-scaling-stroke"})}),n.jsx(r,{sx:{position:"absolute",inset:0,display:"grid",gridTemplateColumns:d},children:e.map(f=>{const h=`${i(f.index)}%`,b=We[f.verdictKey]||s.ink2;return n.jsxs(r,{component:"button",type:"button",title:`${f.label} · ${f.dateLabel} · Ãndice ${f.index}`,"aria-label":`Abrir dossiê ${f.label}, Ãndice ${f.index}`,onClick:()=>t(f.entry),sx:{position:"relative",p:0,border:0,bgcolor:"transparent",cursor:"pointer","&:focus-visible":{outline:`2px solid ${s.accent}`}},children:[n.jsx(r,{component:"span",sx:{position:"absolute",left:"50%",top:h,bottom:0,width:"1px",bgcolor:s.lineDash}}),n.jsx(r,{component:"span",sx:{position:"absolute",left:"50%",top:h,width:l?10:28,height:l?10:20,m:l?"-5px 0 0 -5px":"-10px 0 0 -14px",bgcolor:b,color:s.white,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:g,fontSize:14,fontWeight:700,boxShadow:`0 0 0 2px ${s.surface}`},children:l?null:f.index})]},f.key)})})]}),n.jsx(r,{sx:{display:"grid",gridTemplateColumns:d},children:e.map((f,h)=>{const b=h%c===0;return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",alignItems:"center",gap:"3px",minWidth:0},children:[n.jsx(r,{component:"span",title:f.frat.band?`eFRAT ${Pt(f.frat.score)} · ${f.frat.band.label}`:"Sem eFRAT",sx:{width:9,height:9,...fx(f.frat.band)}}),b?n.jsxs(n.Fragment,{children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:13,fontWeight:600,color:s.ink},children:f.dateLabel}),n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:12,fontWeight:500,letterSpacing:".08em",color:s.muted},children:f.destination})]}):null]},f.key)})})]})]}):n.jsx(P,{children:"O Ãndice de cada voo aparece aqui assim que o dossiê é lido."}),n.jsxs(Go,{children:[n.jsx(de,{swatch:n.jsx(ce,{color:We.conforme}),children:"Completos"}),n.jsx(de,{swatch:n.jsx(ce,{color:We.ressalvas}),children:"Com ressalvas"}),p?n.jsx(de,{swatch:n.jsx(ce,{color:We.nao_conforme}),children:"Incompletos"}):null,n.jsx(de,{swatch:n.jsx(ce,{kind:"line"}),children:"Linha 85"}),n.jsx(de,{swatch:n.jsx(ce,{status:"parcial",size:9}),children:"eFRAT mitigado"})]}),n.jsx(P,{sx:{fontSize:14},children:"Quadrado sob cada voo: resultado do eFRAT. Clique em um voo para abrir o dossiê."})]})}function hx({bands:e}){return e.baixo+e.moderado+e.alto?n.jsxs(r,{sx:{display:"flex",gap:"2px",height:36},role:"img","aria-label":`eFRAT: ${e.baixo} baixo, ${e.moderado} moderado, ${e.alto} alto`,children:[e.baixo?n.jsxs(r,{sx:{flex:e.baixo,bgcolor:s.accent,color:s.white,display:"flex",alignItems:"center",gap:.75,px:1.5,fontFamily:g,fontSize:15,fontWeight:700,letterSpacing:".12em",whiteSpace:"nowrap",overflow:"hidden"},children:[n.jsx("span",{children:e.baixo}),n.jsx("span",{children:"BAIXO"})]}):null,e.moderado?n.jsx(r,{sx:{flex:e.moderado,minWidth:44,background:he,boxShadow:`inset 0 0 0 1px ${s.ink2}`,display:"flex",alignItems:"center",justifyContent:"center"},children:n.jsx(r,{component:"span",sx:{px:.75,py:"1px",bgcolor:s.surface,fontFamily:g,fontSize:15,fontWeight:700,color:s.ink},children:e.moderado})}):null,e.alto?n.jsx(r,{sx:{flex:e.alto,minWidth:44,bgcolor:s.ink2,color:s.white,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:g,fontSize:15,fontWeight:700},children:e.alto}):null]}):n.jsx(r,{sx:{height:36,border:`1px dashed ${s.faint}`,display:"flex",alignItems:"center",px:1.5,fontSize:14,color:s.muted},children:"Nenhum eFRAT registrado nos voos lidos."})}function gx({frat:e,threats:t,onOpen:o}){return n.jsxs(ne,{sx:{p:"22px 24px",display:"flex",flexDirection:"column",gap:2.25},"data-testid":"period-risk",children:[n.jsx(zs,{num:"03",title:"Como o risco foi tratado",kicker:"Risco"}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1.25},children:[n.jsx(hx,{bands:e.bands}),n.jsxs(Go,{sx:{gap:"6px 16px"},children:[n.jsxs(de,{swatch:n.jsx(ce,{color:s.accent}),children:["Baixo ",e.bands.baixo]}),n.jsxs(de,{swatch:n.jsx(ce,{status:"parcial"}),children:["Moderado ",e.bands.moderado]}),n.jsxs(de,{swatch:n.jsx(ce,{color:s.ink2}),children:["Alto ",e.bands.alto]}),e.coveragePct!==null?n.jsxs(r,{component:"span",sx:{ml:"auto",fontFamily:ut,fontSize:14,fontWeight:500,letterSpacing:0,textTransform:"none",color:s.muted},children:["eFRAT registrado em ",e.coveragePct,"% dos voos lidos"]}):null]})]}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column"},children:[n.jsx(Uo,{sx:{pb:.5},color:s.ink,children:"Maiores ameaças do perÃodo"}),t.length?t.map(a=>{const i=mo[a.top.band?.key]||mo.baixo;return n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"58px minmax(0,1fr) auto",gap:1.75,alignItems:"start",py:1.5,borderBottom:`1px solid ${s.lineSoft}`},children:[n.jsx(r,{component:"span",sx:{textAlign:"center",py:.5,fontFamily:g,fontSize:16,fontWeight:700,color:i.fg,bgcolor:i.bg,border:`1px ${i.bs} ${i.bd}`},children:Pt(a.top.score)}),n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:"3px",minWidth:0},children:[n.jsx(r,{component:"span",sx:{fontFamily:g,fontSize:18,fontWeight:700,lineHeight:1.15,color:s.ink},children:a.label}),n.jsxs(P,{children:["Selecionada em ",a.count," ",a.count===1?"voo":"voos"," · maior eFRAT ",Pt(a.top.score),a.top.band?` (${a.top.band.short.toLowerCase()})`:""]})]}),n.jsxs(Ge,{onClick:()=>o(a.top.entry),children:[mx(a.top.entry)," â"]})]},a.label)}):n.jsx(P,{sx:{py:1.5},children:"Nenhuma ameaça selecionada nos eFRAT do perÃodo."})]})]})}const bx=4;function vx(e){const t=[...new Set(e.map(o=>
18o.aircraft_tail||o.aircraft_registration).filter(Boolean))];if(t.length===1){const o=e.find(a=>a.aircraft_type)?.aircraft_type;return[t[0],o].filter(Boolean).join(" · ")}return t.length>1?`${t.length} aeronaves`:""}function yx({monthKey:e,summary:t,explanation:o}){const a=t.loadingCount>0;return n.jsxs(r,{sx:{flex:"1 1 300px",minWidth:0,p:"22px 24px 18px",display:"flex",flexDirection:"column",alignItems:"center",gap:.5,bgcolor:s.surface,backgroundImage:`linear-gradient(${s.grid} 1px, transparent 1px), linear-gradient(90deg, ${s.grid} 1px, transparent 1px)`,backgroundSize:"24px 24px",backgroundPosition:"12px 10px"},children:[n.jsx(Zs,{explanation:o,label:n.jsxs(xe,{children:["Ãndice de registros · ",Io(e)]}),testId:"period-index-explainer",sx:{alignSelf:"stretch"},children:n.jsx(qu,{score:t.index})}),n.jsxs(r,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:"8px",mt:-.25,fontFamily:g,fontSize:12,fontWeight:600,letterSpacing:".16em",textTransform:"uppercase",color:s.accentInk},children:[a?n.jsx(jn,{size:11,thickness:6,sx:{color:s.accentInk}}):null,n.jsx("span",{"data-testid":"period-index-caption",children:a?`Lendo ${t.readyCount} de ${t.legCount} voos`:[`Média dos voos avaliados · ${t.readyCount} de ${t.legCount}`,t.errorCount?`${t.errorCount} com falha`:""].filter(Boolean).join(" · ")})]}),n.jsx(Vu,{})]})}function _x({observations:e,onOpenEntryKey:t}){const o=iu(e);if(!o.rows.length)return null;const a=o.rows.slice(0,bx),i=o.rows.length-a.length;return n.jsxs(r,{"data-testid":"period-observations",sx:{display:"flex",flexDirection:"column",gap:.75,p:"12px 14px",border:`1px solid ${s.ink2}`,boxShadow:`inset 4px 0 0 ${s.ink2}`},children:[n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:1,color:s.ink},children:[n.jsx(q,{d:C.alert,size:16}),n.jsx(xe,{sx:{color:s.ink},children:o.title})]}),a.map(l=>n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"2px 10px",fontSize:15,color:s.ink},children:[n.jsxs(Ge,{onClick:()=>t(l.entryKey),sx:{fontSize:15,letterSpacing:".04em",textTransform:"none"},children:[l.flightLabel," â"]}),n.jsx("span",{children:l.text})]},l.entryKey)),i?n.jsxs(P,{children:["+ ",$(i,"outro voo","outros voos")," na tabela de voos"]}):null,n.jsx(P,{children:o.note})]})}function kx({summary:e,narrative:t,onOpenEntryKey:o}){return n.jsxs(r,{sx:{flex:"2 1 440px",minWidth:0,p:"22px 28px 22px",display:"flex",flexDirection:"column",gap:1.75,bgcolor:s.surface},children:[n.jsxs(Uo,{children:["Situação dos registros · ",jt(new Date)]}),e.verdict?n.jsxs(r,{sx:{display:"flex",alignItems:"center",gap:2.5,flexWrap:"wrap",mt:.25},"data-testid":"period-verdict-band",children:[n.jsx(Gs,{verdictKey:e.verdict.key}),n.jsx(Vs,{index:e.index})]}):null,n.jsx(r,{component:"h2",sx:{m:0,mt:.5,fontFamily:g,fontWeight:600,fontSize:{xs:32,md:40},letterSpacing:"-.01em",lineHeight:1.05,color:s.ink,textWrap:"balance"},children:t.headline}),n.jsx(tp,{sx:{maxWidth:600,textWrap:"pretty"},children:t.paragraph}),n.jsx(_x,{observations:e.observations,onOpenEntryKey:o}),e.sources.length?n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",gap:.75,alignItems:"center",mt:"auto"},children:[n.jsxs($t,{sx:{display:"inline-flex",alignItems:"center",gap:"7px",mr:.75},children:[n.jsx(Bu,{}),"Fontes"]}),e.sources.map(a=>n.jsx(Us,{children:a},a))]}):null]})}function mn({label:e,children:t}){return n.jsxs(r,{sx:{flex:"1 1 220px",minWidth:0,p:"16px 22px 18px",display:"flex",flexDirection:"column",gap:1,bgcolor:s.surface},children:[n.jsx($t,{sx:{color:s.ink2},children:e}),t]})}function jx({summary:e,onOpenPendingRecords:t}){const{evidence:o,frat:a}=e,i=a.bands.baixo+a.bands.moderado+a.bands.alto,l=e.findings.length;return n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",gap:"1px",bgcolor:s.line,borderTop:`1px solid ${s.line}`},"data-testid":"period-kpis",children:[n.jsxs(mn,{label:"Voos lidos",children:[n.jsx(Dt,{value:e.readyCount,unit:`/${e.legCount}`}),n.jsxs(P,{children:[$(e.missionCount,"missão","missões")," · ",ko(e.blockMinutes)," h de bloco"]})]}),n.jsxs(mn,{label:"Registros completos",children:[n.jsx(Dt,{value:o.pct??"â",unit:o.pct===null?"":"%"}),n.jsx(ho,{pct:o.pct}),n.jsxs(P,{children:[o.ok," de ",o.scored," no Ãndice",o.captura?` · ${o.captura} fora do Ãndice (fonte não obtida)`:""]})]}),n.jsxs(mn,{label:"eFRAT médio",children:[n.jsx(Dt,{value:Pt(a.average)}
18),i?n.jsxs(r,{component:"span",sx:{display:"flex",gap:"2px",height:6},children:[n.jsx(r,{component:"span",sx:{flex:a.bands.baixo,bgcolor:s.accent}}),n.jsx(r,{component:"span",sx:{flex:a.bands.moderado,background:he,boxShadow:`inset 0 0 0 1px ${s.ink2}`}}),n.jsx(r,{component:"span",sx:{flex:a.bands.alto,bgcolor:s.ink2}})]}):n.jsx(ho,{pct:0}),n.jsxs(P,{children:[a.bands.baixo," baixo · ",a.bands.moderado," moderado · ",a.bands.alto," alto"]})]}),n.jsxs(mn,{label:"Registros em aberto",children:[n.jsx(Dt,{value:l}),n.jsxs(P,{children:[l?`em ${$(e.legsWithFindings,"voo","voos")}`:"Nenhum registro em aberto",e.systemFindingCount?` · ${e.systemFindingCount} de captura do sistema`:""]}),l&&t?n.jsx(Ge,{onClick:t,"data-testid":"period-open-pending",sx:{alignSelf:"flex-start",displayPrint:"none"},children:"Ver pendências de registro â"}):null]})]})}function fi({children:e}){return n.jsx(ne,{sx:{p:"28px 26px",display:"flex",alignItems:"center",gap:1.5,fontSize:16,color:s.ink2},children:e})}function Sx({monthKey:e,monthOptions:t,onMonthChange:o,onOpenFlight:a,onOpenPendingRecords:i,crew:l=!1,canShare:c=!0}){const d=zo(e),{entries:u,retryEntry:p}=Ds(d.flights),[f,h]=y.useState(""),b=y.useMemo(()=>Ns(u),[u]),x=y.useMemo(()=>du(b),[b]),m=y.useMemo(()=>lu(su(u),{monthKey:e}),[u,e]),_=y.useMemo(()=>vx(d.flights),[d.flights]),v=y.useCallback(T=>a(T.flight),[a]),A=y.useCallback(T=>{const D=u.find(W=>W.key===T);D&&a(D.flight)},[u,a]),F=Un(uu({monthKey:e,summary:b})),M=!d.loading&&!d.error&&d.flights.length>0,E=Xd(d.cohortCounts)||d.cohortLabel;return n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:4.5},"data-testid":"safety-audit-period",children:[n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"flex-end",justifyContent:"space-between",gap:"16px 24px"},children:[n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:1,minWidth:0},children:[n.jsx(xe,{children:[l?"Meu dossiê":"Auditoria de safety",_].filter(
18Boolean).join(" · ")}),n.jsxs(r,{component:"h2",sx:{m:0,fontFamily:g,fontWeight:700,fontSize:{xs:30,md:36},lineHeight:1.05,color:s.ink},children:[l?"Seus voos":"Registros da operação"," em ",Es(e),"."]}),n.jsxs(r,{component:"span",sx:{fontSize:15,color:s.muted},children:[Cs(e),M?` · ${$(b.legCount,"voo","voos")} em ${$(b.missionCount,"missão","missões")} · ${ko(b.blockMinutes)} h de bloco`:"",M&&E?` · ${E}`:""]})]}),n.jsxs(r,{sx:{display:"flex",gap:1,flexWrap:"wrap",alignItems:"center",displayPrint:"none"},children:[n.jsx(mr,{monthKey:e,monthOptions:t,onChange:o}),M&&c?n.jsx(Qt,{href:F,children:"Enviar no WhatsApp"}):null,M?n.jsx(X,{icon:C.print,onClick:()=>window.print(),children:"Imprimir página"}):null,M?n.jsx(dx,{monthKey:e,onError:h}):null]})]}),f?n.jsx(_e,{severity:"error",onClose:()=>h(""),children:f}):null,M?n.jsx(fr,{monthKey:e,month:d}):null,d.loading?n.jsxs(fi,{children:[n.jsx(jn,{size:18,sx:{color:s.accent}}),"Carregando os voos de ",Oe(e),"â¦"]}):null,d.error?n.jsx(_e,{severity:"error",action:n.jsx(X,{size:"sm",onClick:d.reload,children:"Tentar de novo"}),children:d.error}):null,!d.loading&&!d.error&&!d.flights.length?n.jsx(fi,{children:n.jsxs(r,{sx:{display:"flex",flexDirection:"column",gap:.5},children:[n.jsxs(r,{component:"span",sx:{fontFamily:g,fontSize:22,fontWeight:700,color:s.ink},children:["Nenhum voo elegÃvel em ",Oe(e),"."]}),n.jsx(P,{sx:{fontSize:15},children:"A auditoria do perÃodo lê os voos exportados no eDB, os voados sem eDB, os No-go e os voos passados sem desfecho. Escolha outro mês no seletor acima."})]})}):null,M?n.jsxs(n.Fragment,{children:[n.jsxs(ne,{"data-testid":"period-summary",children:[n.jsxs(r,{sx:{display:"flex",flexWrap:"wrap",gap:"1px",bgcolor:s.line},children:[n.jsx(yx,{monthKey:e,summary:b,explanation:m}),n.jsx(kx,{summary:b,narrative:x,onOpenEntryKey:A})]}),n.jsx(jx,{summary:b,onOpenPendingRecords:i})]}),b.errorCount?n.jsxs(_e,{severity:"warning",children:[$(b.errorCount,"voo não pôde ser lido","voos não puderam ser lidos")," agora. Eles ficam fora do Ãndice até a próxima leitura â use âFalhou · tentar de novoâ na tabela."]}):null,n.jsxs(r,{sx:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(100%, 470px), 1fr))",gap:"22px"},children:[n.jsx(xx,{trend:b.trend,onOpen:v}),n.jsx(gx,{frat:b.frat,threats:b.threats,onOpen:v})]}),n.jsx(cx,{entries:u,missionCount:b.missionCount,onOpen:v,onRetry:p})]}):null]})}const mi=12,$x=3e4,Ax=12,Fn="auditoria",Tx=[{key:Fn,label:"Auditoria"},{key:Le,label:"Pendências de registro"}],wx=[{key:Fn,label:"Meus voos"},{key:Le,label:"Pendências de registro"}];function Ex({view:e,month:t,leg:o}){const a=new URLSearchParams;e===Le&&a.set("view",Le),t&&a.set("month",t),e===Le&&o&&a.set("leg",String(o));const i=a.toString();return i?`?${i}`:""}function so(e,t){return e?.response?.data?.detail||e?.message||t}function gr(e,t){const o=_t((e||[]).map(i=>({flight:i}))).map(i=>i.flight),a=o.findIndex(i=>String(i?.id)===String(t));return a<0?{previous:null,next:null,positionLabel:""}:{previous:o[a+1]||null,next:o[a-1]||null,positionLabel:`${o.length-a} de ${o.length}`}}function Bx(){const[e]=Ar(),t=Tr(),o=Cr(),{user:a,accessMap:i}=_i(),l=y.useMemo(()=>Fr({role:a?.role,accessMap:i}),[a?.role,i]),c=String(e.get("flight")||"").trim(),d=Kd(e.get("month"))?String(e.get("month")):"",u=e.get("view")===Le?Le:Fn,p=String(e.get("leg")||"").trim(),{hazards:f}=Mr({origin:"safety-audit-hfacs"}),[h,b]=y.useState([]),[x,m]=y.useState(null),[_,v]=y.useState(null),[A,F]=y.useState([]),[M,E]=y.useState(!1),[T,D]=y.useState(()=>!!c),[W,U]=y.useState(!1),[ge,Ce]=y.useState(!1),[B,Fe]=y.useState(null),[be,R]=y.useState(!1),[Ze,ie]=y.useState(""),Be=y.useRef(""),pe=y.useRef(0),ve=y.useCallback(async({silent:S=!1}={})=>{if(c){Ce(!0),S||ie("");try{const O=await Ie.acquireEvidence(c);Fe(O),yu(c,O),pe.current=Date.now()}catch(O){S||ie(so(O,"Não foi possÃvel ler as evidências deste voo."))}finally{Ce(!1)}}},[c]);y.useEffect(()=>{if(!c)return;const S=()=>{document.visibilityState==="visible"&&(Date.now()-pe.current<$x||pe.current&&ve({silent:!0}))};return document.addEventListener("visibilitychange",S),()=>document.removeEventListener("visibilitychange",S)},[c,ve]);const je=y.useCallback(async()=>
18{if(c){D(!0),ie("");try{const S=await Ie.getReports({flight:c}),O=Ai(S);b(O),m(O[0]||null),Be.current!==c&&(Be.current=c,ve({silent:!0}))}catch(S){ie(so(S,"Não foi possÃvel carregar a auditoria de safety."))}finally{D(!1)}}},[c,ve]),Qe=y.useCallback(async()=>{if(!c){v(null);return}try{const S=await Nr.getById(c);v(S||null)}catch{}},[c]),le=y.useCallback(async()=>{try{const S=await Ie.getRecentFlights({limit:mi});F(Rn(S).filter(O=>O?.id).slice(0,mi))}catch{F([])}finally{E(!0)}},[]);y.useEffect(()=>{je(),Qe()},[je,Qe]),y.useEffect(()=>{le()},[le]),y.useEffect(()=>{Fe(null),m(null),b([])},[c]);const oe=y.useMemo(()=>Wi({selectedReport:x,acquisition:B}),[x,B]),Se=y.useMemo(()=>$o({reportJson:oe,selectedReport:x,acquisition:B}),[oe,x,B]),$e=y.useMemo(()=>oc({selectedReport:x,acquisition:B}),[x,B]),Je=y.useMemo(()=>zi({flightId:c,report:x,flight:_,acquisition:B}),[c,x,_,B]),wt=y.useMemo(()=>Hi({report:x,flight:_}),[x,_]),Z=y.useMemo(()=>Yt({report:x,acquisition:B}),[x,B]),Ne=String(x?.flight_number||_?.flight_number||"").trim(),Ve=y.useMemo(()=>Ui(f,Ne),[Ne,f]),Q=y.useMemo(()=>Xi({acquisition:B,selectedReport:x,reportJson:oe}),[B,x,oe]),Y=y.useMemo(()=>B?[]:Ki({reportJson:oe,flight:_}),[B,oe,_]),z=y.useMemo(()=>Vi(A),[A]),se=z.some(S=>String(S.value)===c)?c:"",Ae=x?.id?Si(x.id):"",Te=B||!x?.id?"live":String(x.id),we=d||Mt(_?.flight_date||oe?.flight?.flight_date),Me=zo(c?we:""),et=y.useMemo(()=>gr(Me.flights.length?Me.flights:A,c),[Me.flights,A,c]),ae=d||(M?Mt(A[0]?.flight_date)||Mt(new Date):""),en=y.useMemo(()=>Zd(Ax),[]),qe=y.useCallback((S,O)=>{S?.id&&t(`${Yn()}/safety-audit?flight=${S.id}${O?`&month=${O}`:""}`)},[t]),Et=async()=>{if(c){U(!0),ie("");try{const S=await Ie.generateReport(c);m(S),Fe(null),b(O=>[S,...O.filter(tt=>tt?.id!==S?.id)])}catch(S){ie(so(S,"Não foi possÃvel gerar a auditoria de safety."))}finally{U(!1)}}},Xn=S=>{if(S==="live"){m(h[0]||null),ve({silent:!0});return}const O=h.find(tt=>String(tt?.id)===String(S));O&&(m(O),Fe(null))},G=async()=>{if(x?.id){R(!0),ie("");try{await Rt({reportId:x.id})}catch(S){const O=S?.message==="popup_blocked"?"O navegador bloqueou a nova aba do PDF. Permita pop-ups para abrir a auditoria.":"Não foi possÃvel abrir o PDF da auditoria.";ie(S?.response?.data?.detail||O)}finally{R(!1)}}},pt=async()=>{if(c){R(!0),ie("");try{x?.id&&!B?await Rt({reportId:x.id}):await Rt({reportId:c,downloadPdf:()=>Ie.exportPdf(c)})}catch(S){const O=S?.message==="popup_blocked"?"O navegador bloqueou a nova aba do PDF. Permita pop-ups para exportar a auditoria.":"Não foi possÃvel exportar o PDF da auditoria.";ie(S?.response?.data?.detail||O)}finally{R(!1)}}},br=y.useCallback(S=>{const O=Ln(String(S?.key||"")),tt=Fi(O.target,S?.entryKey);if(!tt)return;const tn=S?.flight||null;t(`${Yn()}${tt}`,{state:{flightId:Number(S?.entryKey)||null,flightNumber:tn?.flight_number||"",flight:tn}})},[t]),vr=S=>{const O=String(S||"");if(!O||O===c)return;const tt=A.find(tn=>String(tn?.id)===O);qe({id:O},Mt(tt?.flight_date)||we)},ft=y.useCallback(S=>{t(`${Yn()}/safety-audit${Ex(S)}`)},[t]),yr=()=>ft({view:Fn,month:we}),Zo=S=>ft({view:u,month:S}),_r=S=>ft({view:S,month:ae}),kr=()=>ft({view:Le,month:we,leg:c}),jr=l.canGenerate?n.jsx(X,{variant:"dark",icon:C.sparkle,onClick:Et,disabled:W,"aria-busy":W||void 0,children:x?"Regenerar auditoria":"Gerar auditoria de safety"}):null,Sr=!!c&&!B&&!x&&(T||ge);return n.jsxs(r,{sx:{bgcolor:s.page,color:s.ink,fontFamily:ut,mx:{xs:-2,sm:-3,md:-4},my:o?0:{xs:-2,sm:-3,md:-4},p:{xs:2,sm:3,md:4},pt:o?0:{xs:2,sm:3,md:4},minHeight:"100%"},children:[o?null:n.jsx(r,{sx:{width:"100%",maxWidth:1480,mx:"auto",mb:3},children:n.jsx(wr,{component:"h1",sx:{fontFamily:g,fontSize:30,fontWeight:700,lineHeight:1.1,color:s.ink},children:l.title})}),n.jsx(r,{sx:{width:"100%",maxWidth:1480,mx:"auto"},children:c?Sr?n.jsxs(ne,{sx:{p:3},"data-testid":"safety-audit-loading",children:[n.jsx(Kn,{sx:{mb:1.5}}),`Lendo as evidências de ${Je}â¦`]}):n.jsxs(n.Fragment,{children:[T||ge?n.jsx(Kn,{sx:{mb:2},"aria-label":"Atualizando evidências"}):null,n.jsx(Om,{flight:_,flightLabel:Je,routeSummary:wt,legInfo:Z,reportJson:oe,missingEvidence:Se,acquisition:B,selectedReport:x,reports:h,scoringContext:$e,provenance:Q,identityDrift:Y,linkedHfacsCases:Ve,error:Ze,onClearError:()=>ie(""),acquiring:ge,exportingPdf:be,openingPdf:be,pdfUrl:Ae,generateAction:jr,generating:W,onGenerate:l.canGenerate?Et:null,canShare:l.canShare,onAcquireEvidence:ve,onExportPdf:pt,onOpenPdf:G,onOpenPendingRecords:kr,onBack:yr,onStep:S=>qe(S,we),neighbors:et,flightSelectOptions:z,flightSwitchValue:se,onSwitchFlight:vr,reportViewValue:Te,onSelectReportVersion:Xn})]}):ae?n.jsxs(n.Fragment,{children:[n.jsx(r,{sx:{mb:3,displayPrint:"none"},children:n.jsx(Ut,{ariaLabel:"Seção da auditoria de safety",options:l.crew?wx:Tx,value:u,onChange:_r,testIdPrefix:"safety-audit-view"})}),u===Le?n.jsx(Xm,{monthKey:ae,monthOptions:en,legKey:p,onMonthChange:Zo,onOpenFlight:S=>
18qe(S,ae),onOpenRecord:br,onClearLeg:()=>ft({view:Le,month:ae}),canCapture:l.canCapture,canShare:l.canShare},`${ae}:${p}`):n.jsx(Sx,{crew:l.crew,canShare:l.canShare,monthKey:ae,monthOptions:en,onMonthChange:Zo,onOpenFlight:S=>qe(S,ae),onOpenPendingRecords:()=>ft({view:Le,month:ae})})]}):n.jsxs(ne,{sx:{p:3},children:[n.jsx(Kn,{sx:{mb:1.5}}),"Carregando os voos exportados no eDBâ¦"]})})]})}const zx={AUDIT_DIMENSIONS:Kt,buildEvCardSpecs:Ts,buildFlightSelectOptions:Vi,buildLegAudit:Hn,buildProvenance:Xi,describePending:Ln,detectFrozenIdentityDrift:Ki,findLinkedHfacsCases:Ui,formatFlightOptionLabel:Gi,formatFlightDate:Ao,formatReportVersionLabel:qi,getReportJson:In,isAuditableFlight:rc,isEvidenceVisible:Gn,normalizeReportList:Ai,normalizeFlightList:Rn,openAuthenticatedPdf:Rt,PENDING_TARGET_ROUTES:Ci,rankAuditableFlight:lc,readSection:ac,resolveNeighbors:gr,resolvePendingRoute:Fi,resolveDisplayReportJson:Wi,resolveDisplayMissingEvidence:$o,resolveFlightLabel:zi,resolveLegInfo:Yt,resolveRouteSummary:Hi,summarizeChecklistEvidence:Eo};export{zx as __testing__,Bx as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.