PageSourceSearch

https://app.backstagebaton.com/app/assets/PerformanceReportPage-JxBstZX4.js

js backstagebaton.com collected 2026-10-07 08:49:22 UTC 23,025 bytes, 42 lines download raw bytes

1import{m as T,c as z,h as A,r as k,t as D,j as e,B as P,L as O,d as x,F as N,A as E,l as S}from"./index-_aijvlUq.js";import{P as C}from"./PageHeader-DCofr6qo.js";import{E as B}from"./EmptyState-CPGKooqj.js";import{p as F}from"./performances-duTJPchz.js";function L({section:l,showPresent:h}){const j=(l.instruments||[]).length>1;return e.jsxs(e.Fragment,{children:[e.jsxs("tr",{className:"border-t border-gray-100",children:[e.jsx("td",{className:"py-1 pr-4 text-gray-700 font-medium",children:l.name}),e.jsx("td",{className:"py-1 pr-4 text-gray-700",children:l.expected}),e.jsx("td",{className:`py-1 pr-4 ${l.declined>0?"text-amber-700 font-medium":"text-gray-400"}`,children:l.declined}),h&&e.jsx("td",{className:"py-1 text-gray-700",children:l.present})]}),j&&l.instruments.map(c=>e.jsxs("tr",{className:"border-t border-gray-50",children:[e.jsx("td",{className:"py-0.5 pr-4 pl-4 text-gray-400",children:c.name}),e.jsx("td",{className:"py-0.5 pr-4 text-gray-500",children:c.expected}),e.jsx("td",{className:`py-0.5 pr-4 ${c.declined>0?"text-amber-600":"text-gray-300"}`,children:c.declined}),h&&e.jsx("td",{className:"py-0.5 text-gray-500",children:c.present})]},c.name))]})}function R(l){const h=l?.segments||[],j=h.find(i=>!i.county&&(!i.category||i.category==="total")),c=l?.total??j?.count??null,d=h.filter(i=>i!==j).map(i=>`${[i.county,i.category].filter(f=>f&&f!=="total").join(" ")||"total"}: ${i.count}`).join(" · ");return{total:c,detail:d}}function M({report:l,orgName:h,anyPresent:j,maxDeclined:c}){const{performance:d,setlist:i,audience:f,roster:t,rehearsals:b,overview:u=[],tracksRehearsalAttendance:p,declineTrend:y}=l,g=R(f);return e.jsxs("div",{id:"performance-report-print","aria-hidden":"true",children:[e.jsxs("div",{className:"prp-masthead",children:[h&&h.toLowerCase()!==(d.ensembleName||"").toLowerCase()&&e.jsx("p",{className:"prp-org",children:h}),e.jsx("h1",{children:d.title}),e.jsxs("p",{className:"prp-sub",children:["Performance Report · ",d.ensembleName," · ",x(d.performanceDate)]})]}),e.jsxs("section",{children:[e.jsx("h2",{children:"Performance Details"}),e.jsxs("dl",{className:"prp-details",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Date"}),e.jsx("dd",{children:x(d.performanceDate)})]}),d.venue&&e.jsxs("div",{children:[e.jsx("dt",{children:"Venue"}),e.jsx("dd",{children:d.venue})]}),d.callTime&&e.jsxs("div",{children:[e.jsx("dt",{children:"Call"}),e.jsx("dd",{children:N(d.callTime)})]}),d.performanceTime&&e.jsxs("div",{children:[e.jsx("dt",{children:"Performance"}),e.jsx("dd",{children:N(d.performanceTime)})]}),d.dressAttire&&e.jsxs("div",{children:[e.jsx("dt",{children:"Dress"}),e.jsx("dd",{children:d.dressAttire})]}),g.total!=null&&e.jsxs("div",{children:[e.jsx("dt",{children:"Audience"}),e.jsx("dd",{children:g.total})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Roster"}),e.jsxs("dd",{children:[t.totals.seated," seated · ",t.totals.sub," sub · ",t.totals.unavailable," out"]})]})]})]}),y.length>0&&e.jsxs("section",{children:[e.jsx("h2",{children:"Rehearsal Absences Before the Concert"}),e.jsx("p",{className:"prp-note",children:"How many members said they couldn’t make each rehearsal in the weeks before the concert. Climbing numbers can simply mean more people are using the app to report."}),e.jsx("div",{className:"prp-trend",children:y.map(s=>e.jsxs("div",{className:"prp-bar-col",children:[e.jsx("span",{className:"prp-bar-n",children:s.declined}),e.jsx("div",{className:"prp-bar",style:{height:Math.max(4,s.declined/c*56)}}),e.jsx("span",{className:"prp-bar-d",children:x(s.date)}),e.jsxs("span",{className:"prp-bar-s",children:[s.dayOf," same-day"]})]},s.date))})]}),u.length>0&&e.jsxs("section",{children:[e.jsx("h2",{children:"Attendance Overview"}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Event"}),e.jsx("th",{children:"Date"}),e.jsx("th",{children:"Expected"}),e.jsx("th",{children:"Out"}),e.jsx("th",{children:"Same-day"}),j&&e.jsx("th",{children:"Present"})]})}),e.jsx("tbody",{children:u.map(s=>e.jsxs("tr",{className:s.type==="performance"?"prp-perf-row":"",children:[e.jsxs("td",{children:[s.type==="performance"?"Performance":"Rehearsal",s.venue?` · ${s.venue}`:""]}),e.jsx("td",{children:x(s.date)}),e.jsx("td",{children:s.expected}),e.jsx("td",{children:s.out}),e.jsx("td",{children:s.dayOf??"—"}),j&&e.jsx("td",{children:s.present??"—"})]},`${s.type}-${s.date}`))})]}),e.jsx("p",{className:"prp-note",children:"For rehearsals, “Out” counts members who said they couldn’t make it. For the performance, it c
1ounts members marked unavailable on the roster. A dash means it wasn’t tracked — not zero."})]}),b.length>0&&e.jsxs("section",{className:"prp-rehearsals",children:[e.jsxs("h2",{children:["Rehearsals (",b.length,")"]}),b.map(s=>e.jsxs("div",{className:"prp-rehearsal",children:[e.jsxs("p",{className:"prp-reh-head",children:[e.jsx("strong",{children:x(s.date)}),s.startTime?` · ${N(s.startTime)}`:"",s.venue?` · ${s.venue}`:"",e.jsxs("span",{className:"prp-reh-stats",children:[" — Expected ",s.expected," · Out ",s.declined.total,s.declined.total>0?` (${s.declined.dayOf} same-day, ${s.declined.advance} ahead of time)`:"",p?` · Present ${s.present}`:""]})]}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Section"}),e.jsx("th",{children:"Expected"}),e.jsx("th",{children:"Can’t make it"}),p&&e.jsx("th",{children:"Present"})]})}),e.jsxs("tbody",{children:[s.bySection.map(a=>e.jsxs("tr",{children:[e.jsx("td",{children:a.name}),e.jsx("td",{children:a.expected}),e.jsx("td",{children:a.declined}),p&&e.jsx("td",{children:a.present})]},a.name)),e.jsxs("tr",{className:"prp-total",children:[e.jsx("td",{children:"Total"}),e.jsx("td",{children:s.expected}),e.jsx("td",{children:s.declined.total}),p&&e.jsx("td",{children:s.present})]})]})]}),s.declined.members.length>0&&e.jsxs("p",{className:"prp-declared",children:[e.jsx("strong",{children:"Declared out: "}),s.declined.members.map((a,o)=>`${o>0?"; ":""}${a.name} (${[a.instrument,a.dayOf?"same day":"ahead of time"].filter(Boolean).join(", ")}${a.reason?` — “${a.reason}”`:""})`).join("")]})]},s.id))]}),e.jsxs("section",{children:[e.jsxs("h2",{children:["Roster — ",t.totals.seated," seated, ",t.totals.sub," sub, ",t.totals.unavailable," out"]}),t.sections.map(s=>e.jsxs("div",{className:"prp-roster-sec",children:[e.jsx("p",{className:"prp-roster-name",children:s.name}),s.instruments.map(a=>e.jsxs("p",{className:"prp-roster-line",children:[e.jsxs("span",{className:"prp-muted",children:[a.name,": "]}),a.seated.map(o=>`${o.name}${o.part?` (${o.part})`:""}`).join(", ")||"—",a.subs.length>0&&e.jsxs("span",{children:[" · subs: ",a.subs.map(o=>o.name).join(", ")]}),a.unavailable.length>0&&e.jsxs("span",{className:"prp-muted",children:[" · out: ",a.unavailable.map(o=>o.name).join(", ")]})]},a.name))]},s.name))]}),i.length>0&&e.jsxs("section",{children:[e.jsxs("h2",{children:["Music Performed (",i.length,")"]}),e.jsx("ol",{className:"prp-music",children:i.map((s,a)=>e.jsxs("li",{children:[s.title,s.composers?` — ${s.composers}`:"",s.folderNumber?` · #${s.folderNumber}`:""]},a))})]}),f&&(f.total!=null||(f.segments||[]).length>0)&&e.jsxs("section",{children:[e.jsx("h2",{children:"Audience"}),e.jsxs("p",{children:["Total: ",e.jsx("strong",{children:g.total??"—"}),g.detail&&e.jsxs("span",{className:"prp-muted",children:[" · ",g.detail]})]})]}),e.jsxs("p",{className:"prp-footer",children:["Generated ",x(S())," · Powered by Backstage Baton"]})]})}function _(){const{id:l}=T(),{showError:h}=z(),j=A(r=>r.currentOrg),[c,d]=k.useState(null),[i,f]=k.useState(!0);if(k.useEffect(()=>{let r=!0;return F.getReport(l).then(n=>{r&&d(n)}).catch(()=>h(D("performance report"))).finally(()=>{r&&f(!1)}),()=>{r=!1}},[l]),i)return e.jsx("div",{className:"px-4 md:px-0",children:e.jsx("p",{className:"text-sm text-gray-400 py-8 text-center",children:"Loading report…"})});if(!c)return e.jsx("div",{className:"px-4 md:px-0",children:e.jsx(B,{card:!0,title:"Report unavailable."})});const{performance:t,setlist:b,audience:u,roster:p,rehearsals:y,overview:g=[],tracksRehearsalAttendance:s,tracksPerformanceAttendance:a,declineTrend:o}=c,v=R(u),w=g.some(r=>r.present!==null),$=Math.max(1,...o.map(r=>r.declined));return e.jsxs("div",{className:"px-4 md:px-0 print:px-0",children:[e.jsx("div",{className:"print:hidden",children:e.jsx(C,{title:`Performance Report — ${t.title}`,subtitle:`${t.ensembleName||""} · ${x(t.performanceDate)}`,actions:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{variant:"secondary",size:"md",onClick:()=>window.print(),children:"Print"}),e.jsx(O,{to:"/performances",children:e.jsx(P,{variant:"ghost",size:"md",children:"Back"})})]})})}),e.jsxs("div",{className:"hidden print:block mb-4",children:[e.jsxs("h1",{className:"text-xl font-bold",children:[t.title," — Performance Report"]}),e.jsxs("p",{className:"text-sm text-gray-600",children:[t.ensembleName," · ",x(t.performanceDate)]})]}),e.jsxs("section",{className:"bg-white rounded-xl border border-gray-200 p-6 mb-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3",children:"Performance Details"}),e.jsxs("dl",{className:"grid grid-cols-2 md:grid-cols-4 gap-x-6 gap-y-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("dt",{className:"text-gray-400",children:"Date"}),e.jsx("dd",{className:"text-gray-900",children:x(t.performanceDate)})]}),t.venue&&e.jsxs("div",{children:[e.jsx("dt",{className:"text-gray-400",children:"Venue"}),e.jsx("dd",{className:"text-gray-900",children:t.venue})]}),t.callTime&&e.jsxs("div",{children:[e.jsx("dt",{className:"text-gray-400",children:"Call"}),e.jsx("dd",{className:"text-gray-900",children:N(t.callTime)})]}),t.performanceTime&&e.jsxs("div",{children:[e.jsx("dt",{className:"text-gray-400",children:"Performance"}),e.jsx("dd",{className:"text-gray-900",children:N(t.performanceTime)})]}),t.dressAttire&&e.jsxs("div",{children:[e.jsx("dt",{className:"text-gray-400",children:"Dress"}),e.jsx("dd",{className:"text-gray-900",children:t.dressAttire})]}),v.total!=null&&e.jsxs("div",{children:[e.jsx("dt",{className:"text-gray-400",children:"Audience"}),e.jsx("dd",{className:"text-gray-900",children:v.total})]}),e.jsxs("div",{children:[e.jsx("dt",{className:"text-gray-400",children:"Roster"}),e.jsxs("dd",{className:"text-gray-900",children:[p.totals.seated," seated · ",p.totals.sub," sub · ",p.totals.unavailable," out"]})]})]})]}),o.length>0&&e.jsxs("section",{className:"bg-white rounded-xl border border-gray-200 p-6 mb-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-1",children:"Rehearsal Absence
1s Before the Concert"}),e.jsx("p",{className:"text-xs text-gray-400 mb-4",children:"How many members said they couldn’t make each rehearsal in the weeks leading up to the concert. Climbing numbers can simply mean more people are using the app to report — check the same-day figures before drawing conclusions."}),e.jsx("div",{className:"flex items-end gap-3 overflow-x-auto pb-1",children:o.map(r=>e.jsxs("div",{className:"flex flex-col items-center shrink-0 w-16",children:[e.jsx("span",{className:"text-sm font-bold text-gray-800",children:r.declined}),e.jsx("div",{className:"w-8 bg-amber-300 rounded-t",style:{height:`${Math.max(4,r.declined/$*64)}px`}}),e.jsx("span",{className:"text-[10px] text-gray-400 mt-1 whitespace-nowrap",children:x(r.date)}),e.jsxs("span",{className:"text-[10px] text-amber-600",children:[r.dayOf," same-day"]})]},r.date))})]}),g.length>0&&e.jsxs("section",{className:"bg-white rounded-xl border border-gray-200 p-6 mb-4 break-inside-avoid",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3",children:"Attendance Overview"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"text-gray-400 text-left",children:[e.jsx("th",{className:"py-1 pr-4 font-medium",children:"Event"}),e.jsx("th",{className:"py-1 pr-4 font-medium",children:"Date"}),e.jsx("th",{className:"py-1 pr-4 font-medium",children:"Expected"}),e.jsx("th",{className:"py-1 pr-4 font-medium",children:"Out"}),e.jsx("th",{className:"py-1 pr-4 font-medium",children:"Same-day"}),w&&e.jsx("th",{className:"py-1 font-medium",children:"Present"})]})}),e.jsx("tbody",{children:g.map(r=>e.jsxs("tr",{className:`border-t border-gray-100 ${r.type==="performance"?"font-semibold bg-teal-50/50":""}`,children:[e.jsxs("td",{className:"py-1 pr-4 text-gray-700",children:[r.type==="performance"?"Performance":"Rehearsal",r.venue?e.jsxs("span",{className:"text-gray-400 font-normal",children:[" · ",r.venue]}):""]}),e.jsx("td",{className:"py-1 pr-4 text-gray-700 whitespace-nowrap",children:x(r.date)}),e.jsx("td",{className:"py-1 pr-4 text-gray-700",children:r.expected}),e.jsx("td",{className:`py-1 pr-4 ${r.out>0?"text-amber-700":"text-gray-400"}`,children:r.out}),e.jsx("td",{className:"py-1 pr-4 text-gray-500",children:r.dayOf??"—"}),w&&e.jsx("td",{className:"py-1 text-gray-700",children:r.present??"—"})]},`${r.type}-${r.date}`))})]})}),e.jsx("p",{className:"mt-2 text-[11px] text-gray-400",children:"For rehearsals, “Out” counts members who said they couldn’t make it. For the performance, it counts members marked unavailable on the roster. A dash means it wasn’t tracked — not zero."})]}),e.jsxs("section",{className:"bg-white rounded-xl border border-gray-200 p-6 mb-4",children:[e.jsxs("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3",children:["Rehearsals (",y.length,")"]}),y.length===0&&e.jsx("p",{className:"text-sm text-gray-400",children:"No rehearsals were attached to this performance."}),e.jsx("div",{className:"space-y-6",children:y.map(r=>e.jsxs("div",{className:"border border-gray-100 rounded-lg p-4 break-inside-avoid",children:[e.jsxs("div",{className:"flex items-baseline justify-between flex-wrap gap-2 mb-2",children:[e.jsxs("p",{className:"text-sm font-semibold text-gray-800",children:[x(r.date),r.startTime?` · ${N(r.startTime)}`:"",r.venue?` · ${r.venue}`:""]}),e.jsxs("p",{className:"text-xs text-gray-500",children:["Expected ",r.expected," · Can’t make it ",r.declined.total,r.declined.total>0&&e.jsxs(e.Fragment,{children:[" (",r.declined.dayOf," same-day, ",r.declined.advance," ahead of time)"]}),s&&e.jsxs(e.Fragment,{children:[" · Present ",r.present]})]})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs mb-2",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"text-gray-400 text-left",children:[e.jsx("th",{className:"py-1 pr-4 font-medium",children:"Section"}),e.jsx("th",{className:"py-1 pr-4 font-medium",children:"Expected"}),e.jsx("th",{className:"py-1 pr-4 font-medium",children:"Can’t make it"}),s&&e.jsx("th",{className:"py-1 font-medium",children:"Present"})]})}),e.jsxs("tbody",{children:[r.bySection.map(n=>e.jsx(L,{section:n,showPresent:s},n.name)),e.jsxs("tr",{className:"border-t-2 border-gray-300 font-semibold text-gray-800",children:[e.jsx("td",{className:"py-1 pr-4",children:"Total"}),e.jsx("td",{className:"py-1 pr-4",children:r.expected}),e.jsx("td",{className:`py-1 pr-4 ${r.declined.total>0?"text-amber-700":""}`,children:r.declined.total}),s&&e.jsx("td",{className:"py-1",children:r.present})]})]})]})}),r.declined.members.length>0&&e.jsxs("div",{className:"text-xs text-gray-600",children:[e.jsx("span",{className:"font-medium text-gray-500",children:"Declared out: "}),r.declined.members.map((n,m)=>e.jsxs("span",{children:[m>0&&"; ",n.name,e.jsxs("span",{className:"text-gray-400",children:[" (",[n.instrument,n.dayOf?"same day":"ahead of time"].filter(
1Boolean).join(", "),n.reason?` — “${n.reason}”`:"",")"]})]},`${n.name}-${m}`))]})]},r.id))}),!s&&y.length>0&&e.jsxs("p",{className:"mt-3 text-xs text-amber-700 bg-amber-50 border border-amber-200 rounded-lg p-2",children:["This group doesn’t take rehearsal attendance, so there is no Present column — we only know who said they couldn’t come. Everyone else is ",e.jsx("em",{children:"unknown"}),", not confirmed present."]})]}),e.jsxs("section",{className:"bg-white rounded-xl border border-gray-200 p-6 mb-4 break-inside-avoid",children:[e.jsxs("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3",children:["Roster — ",p.totals.seated," seated, ",p.totals.sub," sub, ",p.totals.unavailable," out"]}),e.jsx("div",{className:"space-y-4",children:p.sections.map(r=>e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold text-gray-600 mb-1",children:r.name}),r.instruments.map(n=>e.jsxs("div",{className:"ml-3 text-xs text-gray-600 mb-1",children:[e.jsxs("span",{className:"text-gray-400",children:[n.name,": "]}),n.seated.map(m=>`${m.name}${m.part?` (${m.part})`:""}`).join(", ")||"—",n.subs.length>0&&e.jsxs("span",{className:"text-amber-700",children:[" · subs: ",n.subs.map(m=>m.name).join(", ")]}),n.unavailable.length>0&&e.jsxs("span",{className:"text-gray-400",children:[" · out: ",n.unavailable.map(m=>`${m.name}${m.reason?` (“${m.reason}”)`:""}`).join(", ")]})]},n.name))]},r.name))})]}),b.length>0&&e.jsxs("section",{className:"bg-white rounded-xl border border-gray-200 p-6 mb-4 break-inside-avoid",children:[e.jsxs("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3",children:["Music Performed (",b.length,")"]}),e.jsx("ol",{className:"text-sm space-y-1",children:b.map((r,n)=>e.jsxs("li",{className:"text-gray-700",children:[e.jsxs("span",{className:"text-gray-400 mr-2",children:[n+1,"."]}),r.recordingUrl?e.jsx("a",{href:r.recordingUrl,target:"_blank",rel:"noreferrer",className:"text-teal-600",children:r.title}):r.title,r.composers&&e.jsxs("span",{className:"text-gray-400",children:[" — ",r.composers]}),r.folderNumber&&e.jsxs("span",{className:"text-gray-300 text-xs",children:[" · #",r.folderNumber]})]},n))})]}),u&&(u.total!=null||(u.segments||[]).length>0)&&e.jsxs("section",{className:"bg-white rounded-xl border border-gray-200 p-6 mb-4 break-inside-avoid",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3",children:"Audience"}),e.jsxs("p",{className:"text-sm text-gray-700",children:["Total: ",e.jsx("span",{className:"font-semibold",children:v.total??"—"})]}),v.detail&&e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:v.detail})]}),E.createPortal(e.jsx(M,{report:c,orgName:j?.name||"",anyPresent:w,maxDeclined:$}),document.body),e.jsx("style",{children:`
2        #performance-report-print { display: none; }
3        @media print {
4          @page { margin: 14mm; }
5          body > *:not(#performance-report-print) { display: none !important; }
6          #performance-report-print { display: block; font: 11px/1.45 -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #111827; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
7          #performance-report-print .prp-masthead { border-bottom: 2px solid #2e6b8a; padding-bottom: 8px; margin-bottom: 14px; }
8          #performance-report-print .prp-org { margin: 0; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: #6b7280; }
9          #performance-report-print h1 { font-size: 20px; margin: 2px 0 2px; color: #163d55; }
10          #performance-report-print .prp-sub { margin: 0; font-size: 11px; color: #6b7280; }
11          #performance-report-print section { margin: 0 0 14px; break-inside: avoid; }
12          #performance-report-print .prp-rehearsals { break-inside: auto; }
13          #performance-report-print .prp-rehearsal { break-inside: avoid; border: 1px solid #e5e7eb; border-radius: 6px; padding: 8px 10px; margin: 0 0 8px; }
14          #performance-report-print h2 { font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; color: #2e6b8a; border-bottom: 1px solid #e5e7eb; padding-bottom: 3px; margin: 0 0 6px; }
15          #performance-report-print .prp-details { display: grid; grid-template-columns: repeat(4, auto); justify-content: start; gap: 4px 28px; margin: 0; }
16          #performance-report-print .prp-details dt { font-size: 9px; text-transform: uppercase; letter-spacing: 0.05em; color: #9ca3af; }
17          #performance-report-print .prp-details dd { margin: 0; font-size: 11px; color: #111827; }
18          #performance-report-print table { width: 100%; border-collapse: collapse; margin: 4px 0; }
19          #performance-report-print th, #performance-report-print td { border: 1px solid #d1d5db; padding: 3px 6px; text-align: left; font-size: 10px; }
20          #performance-report-print th { background: #f3f4f6; font-weight: 600; color: #374151; }
21          #performance-report-print th:not(:first-child), #performance-report-print td:not(:first-child) { white-space: nowrap; width: 1%; font-variant-numeric: tabular-nums; }
22          #performance-report-print .prp-perf-row td { background: #eef6f9; font-weight: 600; }
23          #performance-report-print .prp-total td { border-top: 2px solid #9ca3af; font-weight: 700; }
24          #performance-report-print .prp-trend { display: flex; align-items: flex-end; gap: 14px; padding: 4px 0 2px; }
25          #performance-report-print .prp-bar-col { display: flex; flex-direction: column; align-items: center; width: 64px; }
26          #performance-report-print .prp-bar-n { font-weight: 700; font-size: 12px; }
27          #performance-report-print .prp-bar { width: 26px; background: #fcd34d; border: 1px solid #d97706; border-bottom-width: 2px; border-radius: 3px 3px 0 0; }
28          #performance-report-print .prp-bar-d { font-size: 8px; color: #6b7280; margin-top: 2px; white-space: nowrap; }
29          #performance-report-print .prp-bar-s { font-size: 8px; color: #b45309; }
30          #performance-report-print .prp-note { font-size: 9px; color: #6b7280; margin: 3px 0 0; }
31          #performance-report-print .prp-reh-head { margin: 0 0 4px; font-size: 11px; }
32          #performance-report-print .prp-reh-stats { color: #6b7280; font-weight: 400; }
33          #performance-report-print .prp-declared { font-size: 9.5px; color: #374151; margin: 3px 0 0; }
34          #performance-report-print .prp-roster-sec { margin: 0 0 5px; break-inside: avoid; }
35          #performance-report-print .prp-roster-name { margin: 0; font-weight: 700; font-size: 10.5px; color: #163d55; }
36          #performance-report-print .prp-roster-line { margin: 0 0 1px 10px; font-size: 10px; }
37          #performance-report-print .prp-muted { color: #6b7280; }
38          #performance-report-print .prp-music { margin: 2px 0 0 16px; padding: 0; font-size: 10.5px; }
39          #performance-report-print .prp-music li { margin: 0 0 2px; }
40          #performance-report-print .prp-footer { margin-top: 16px; padding-top: 6px; border-top: 1px solid #e5e7eb; font-size: 9px; color: #9ca3af; text-align: center; }
41        }
42      `})]})}export{_ as PerformanceReportPage};

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.