feat(report): add TLP classification badge to the audit report
CI / Format and clippy (push) Successful in 1m34s
CI / Dependency audit (push) Successful in 12s
CI / Tests (Linux) (push) Successful in 2m5s
CI / Check desktop app (Linux) (push) Successful in 4m2s

The cover already had the Sabiá logo, but only an "Uso autorizado" badge —
no sharing classification. Adds a TLP:AMBER badge (FIRST.org brand color)
next to it, on both the cover and the running per-page header, matching
the convention the rest of the Ciberfauna ecosystem's reports now follow.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Lucas GuerraandClaude Sonnet 5 committed 2026-11-02 11:32:04 -03:00
1 parent 7e01e599fd
commit 0ff945ef65
1 file changed
+5 -2
+5 -2
View File
@@ -402,7 +402,10 @@ section.chapter:first-of-type { break-before: avoid; }
.cover .brand { display: flex; align-items: center; gap: 3mm; } .cover .brand { display: flex; align-items: center; gap: 3mm; }
.cover .brand img { width: 11mm; height: 11mm; border-radius: 3mm; display: block; } .cover .brand img { width: 11mm; height: 11mm; border-radius: 3mm; display: block; }
.cover .brand span { font-family: var(--display); font-size: 14pt; font-weight: 700; letter-spacing: -0.01em; } .cover .brand span { font-family: var(--display); font-size: 14pt; font-weight: 700; letter-spacing: -0.01em; }
.cover .badges { display: flex; align-items: center; gap: 2.5mm; }
.cover .badge { font: 700 8pt var(--mono); letter-spacing: .14em; text-transform: uppercase; color: #ffd38a; border: 1px solid #a66a2e; background: rgba(255,211,138,.08); padding: 2.5mm 4mm; border-radius: 1mm; white-space: nowrap; } .cover .badge { font: 700 8pt var(--mono); letter-spacing: .14em; text-transform: uppercase; color: #ffd38a; border: 1px solid #a66a2e; background: rgba(255,211,138,.08); padding: 2.5mm 4mm; border-radius: 1mm; white-space: nowrap; }
/* FIRST.org TLP 2.0 brand color (amber), matching the sharing-classification badge the Ciberfauna report convention requires. */
.cover .badge-tlp { color: #FFC000; border-color: #FFC000; background: rgba(255,192,0,.08); }
.cover .mid { margin-top: auto; } .cover .mid { margin-top: auto; }
.cover .eyebrow { color: #ffb963; margin-bottom: 4mm; } .cover .eyebrow { color: #ffb963; margin-bottom: 4mm; }
.cover h1 { font-size: 40pt; letter-spacing: -0.02em; max-width: 150mm; color: #fff; margin-bottom: 6mm; } .cover h1 { font-size: 40pt; letter-spacing: -0.02em; max-width: 150mm; color: #fff; margin-bottom: 6mm; }
@@ -484,7 +487,7 @@ tbody tr:nth-child(even) td { background: #f7f9f7; }
background: #fff; background: #fff;
@top-left { content: "SABIÁ · AUDITORIA WI-FI"; font: 600 7.5pt var(--mono); letter-spacing: .1em; color: var(--faint); vertical-align: bottom; padding-bottom: 4mm; } @top-left { content: "SABIÁ · AUDITORIA WI-FI"; font: 600 7.5pt var(--mono); letter-spacing: .1em; color: var(--faint); vertical-align: bottom; padding-bottom: 4mm; }
@top-center { content: string(section); font: 500 7.5pt var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--faint); vertical-align: bottom; padding-bottom: 4mm; text-align: center; } @top-center { content: string(section); font: 500 7.5pt var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--faint); vertical-align: bottom; padding-bottom: 4mm; text-align: center; }
@top-right { content: "\25CF USO AUTORIZADO"; font: 700 7.5pt var(--mono); letter-spacing: .1em; color: var(--accent); vertical-align: bottom; padding-bottom: 4mm; text-align: right; white-space: nowrap; } @top-right { content: "TLP:AMBER \25CF USO AUTORIZADO"; font: 700 7.5pt var(--mono); letter-spacing: .1em; color: var(--accent); vertical-align: bottom; padding-bottom: 4mm; text-align: right; white-space: nowrap; }
@bottom-left { content: string(footline); font: 400 7.5pt var(--mono); color: var(--faint); vertical-align: top; padding-top: 4mm; } @bottom-left { content: string(footline); font: 400 7.5pt var(--mono); color: var(--faint); vertical-align: top; padding-top: 4mm; }
@bottom-right { content: counter(page) " / " counter(pages); font: 700 8pt var(--mono); color: var(--ink); vertical-align: top; padding-top: 4mm; text-align: right; } @bottom-right { content: counter(page) " / " counter(pages); font: 700 8pt var(--mono); color: var(--ink); vertical-align: top; padding-top: 4mm; text-align: right; }
} }
@@ -549,7 +552,7 @@ pub fn render(model: &ReportModel, options: ReportOptions) -> String {
<section class="cover"> <section class="cover">
<div class="top"> <div class="top">
<div class="brand"><img src="{logo}" alt=""><span>Sabiá</span></div> <div class="brand"><img src="{logo}" alt=""><span>Sabiá</span></div>
<span class="badge">Uso autorizado</span> <div class="badges"><span class="badge badge-tlp">TLP:AMBER</span><span class="badge">Uso autorizado</span></div>
</div> </div>
<div class="mid"> <div class="mid">
<p class="eyebrow">Relatório de auditoria · redes sem fio</p> <p class="eyebrow">Relatório de auditoria · redes sem fio</p>