# UI V3 — BRIEF OPERATIVO FLOTTA (FASE 1) Migri pagine NIS2 dal V2 (Bootstrap Italia, sidebar) al **V3** (top-nav navy/oro, Inter, Lucide). La **FASE 0 è già fatta e in prod**: `public/css/v3.css`, `public/js/topnav-v3.js`, `public/vendor/inter/`, `public/vendor/lucide/lucide.min.js`, e la **pilota `public/dashboard.html` + `public/js/dashboard.js`**. **Replica quel pattern.** Il sito è in MANUTENZIONE: testa SEMPRE con `?mnt=efc088d042032889b64b887d2e562ec8`. ## REGOLE D'ORO (vincolanti) - **NON usare git** (no add/commit/push). **Solo scrivere file.** Il commit lo fa l'orchestratore. - **NON toccare**: `public/css/v3.css`, `public/js/topnav-v3.js`, `public/js/common.js`, `public/js/api.js`, `public/js/i18n.js`, `public/js/help.js`, qualunque `.php`, DB, migrazioni. Sono condivisi/già pronti. - **NON toccare** `/var/www/nis2-agile/.maintenance` né `/tmp/agent-working.lock`. - **Modifichi SOLO le pagine assegnate** (e, se serve, il loro `.js` dedicato — non condiviso). - **Dati REALI** via `api.js` (quelli che la pagina già usa). Zero numeri finti dei mockup. Se un dato non esiste nel backend → placeholder "—"/empty, **non inventarlo**. - **Self-host only**: nessun `googleapis.com`, `gstatic.com`, `unpkg.com`, CDN Bootstrap Italia. - Mantieni: `checkAuth`, i18n IT/EN (`data-i18n`), help "?", **trittico FAB reale** (lo monta `common.js`). - A11y/AGID: `focus-visible`, contrasto, touch ≥44px, `aria-label`, zoom non bloccato, responsive ≤900/≤560. ## RICETTA PER PAGINA — "reskin a rischio minimo" L'obiettivo è cambiare **chrome + look**, **senza rompere il wiring**: **preserva ogni `id`/`data-*` che il `.js` legge** (non rinominarli). Cambi guscio e classi, non la logica. ### 1) `` — sostituisci il caricamento CSS/font con (vedi `dashboard.html` righe 3–23): ```html NomePagina · NIS2 Agile ``` **Rimuovi**: bundle Bootstrap Italia (CSS/JS), `/css/style.css`, Google Fonts, unpkg. Se la pagina ha un `