[FIX] Modali showModal() invisibili su V2 (solo sfondo grigio): conflitto .modal con Bootstrap Italia

BI introduce .modal{display:none;position:fixed} che nascondeva i nostri modali custom (help, genera-AI,
conferme, crea-rischio...) -> si vedeva solo il backdrop grigio. Aggiunto override scoped
'.modal-overlay .modal{display:block;position:relative;...}' in style.css (specificità > BI, caricato dopo).
Verificato headless: modale help display:block height:765 visible:true. Bump style.css?v=20260613b (auto-refetch).
This commit is contained in:
DevEnv nis2-agile
2026-06-14 08:00:13 +02:00
parent 959ede968d
commit 30cac8479a
50 changed files with 63 additions and 49 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
<link rel="stylesheet" href="vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<!-- Stile applicativo NIS2: fornisce le classi della sidebar (.sidebar-nav, .sidebar-brand, ecc.) <!-- Stile applicativo NIS2: fornisce le classi della sidebar (.sidebar-nav, .sidebar-brand, ecc.)
riusate dal markup BI per parità visiva con la chrome di produzione --> riusate dal markup BI per parità visiva con la chrome di produzione -->
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
<style> <style>
/* Solo layout della pagina demo: niente colori custom (vengono da BI/style.css) */ /* Solo layout della pagina demo: niente colori custom (vengono da BI/style.css) */
body { margin: 0; } body { margin: 0; }
+1 -1
View File
@@ -9,7 +9,7 @@
via JS (griglia misure/requisiti, scoring) -> parita' funzionale assoluta. via JS (griglia misure/requisiti, scoring) -> parita' funzionale assoluta.
BI veste la chrome (sidebar, font, bottoni, icone sprite). --> BI veste la chrome (sidebar, font, bottoni, icone sprite). -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* Stili specifici della pagina ACN — identici alla live acn-gap.html /* Stili specifici della pagina ACN — identici alla live acn-gap.html
(variabili --primary/--gray-* del design system esistente) */ (variabili --primary/--gray-* del design system esistente) */
+1 -1
View File
@@ -9,7 +9,7 @@
via JS (griglia misure/requisiti, scoring) -> parita' funzionale assoluta. via JS (griglia misure/requisiti, scoring) -> parita' funzionale assoluta.
BI veste la chrome (sidebar, font, bottoni, icone sprite). --> BI veste la chrome (sidebar, font, bottoni, icone sprite). -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* Stili specifici della pagina ACN — identici alla live acn-gap.html /* Stili specifici della pagina ACN — identici alla live acn-gap.html
(variabili --primary/--gray-* del design system esistente) */ (variabili --primary/--gray-* del design system esistente) */
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css resta autorevole per i widget renderizzati via JS -> parita' funzionale. cosi' style.css resta autorevole per i widget renderizzati via JS -> parita' funzionale.
Pagina in /admin/: gli asset usano path ASSOLUTI (/vendor, /js, /css) serviti dal web root. --> Pagina in /admin/: gli asset usano path ASSOLUTI (/vendor, /js, /css) serviti dal web root. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.admin-stats-grid { .admin-stats-grid {
display: grid; display: grid;
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css resta autorevole per i widget renderizzati via JS -> parita' funzionale. cosi' style.css resta autorevole per i widget renderizzati via JS -> parita' funzionale.
Pagina in /admin/: gli asset usano path ASSOLUTI (/vendor, /js, /css) serviti dal web root. --> Pagina in /admin/: gli asset usano path ASSOLUTI (/vendor, /js, /css) serviti dal web root. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.admin-stats-grid { .admin-stats-grid {
display: grid; display: grid;
+1 -1
View File
@@ -9,7 +9,7 @@
via JS (tabella org/paginazione/badge) -> parita' funzionale assoluta. BI veste la chrome. via JS (tabella org/paginazione/badge) -> parita' funzionale assoluta. BI veste la chrome.
Path relativi ../ perche' la pagina vive sotto public/admin/. --> Path relativi ../ perche' la pagina vive sotto public/admin/. -->
<link rel="stylesheet" href="../vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="../vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="../css/style.css?v=20260613"> <link rel="stylesheet" href="../css/style.css?v=20260613b">
<style> <style>
.entity-type-badge { .entity-type-badge {
display: inline-flex; display: inline-flex;
+1 -1
View File
@@ -9,7 +9,7 @@
via JS (tabella org/paginazione/badge) -> parita' funzionale assoluta. BI veste la chrome. via JS (tabella org/paginazione/badge) -> parita' funzionale assoluta. BI veste la chrome.
Path relativi ../ perche' la pagina vive sotto public/admin/. --> Path relativi ../ perche' la pagina vive sotto public/admin/. -->
<link rel="stylesheet" href="../vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="../vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="../css/style.css?v=20260613"> <link rel="stylesheet" href="../css/style.css?v=20260613b">
<style> <style>
.entity-type-badge { .entity-type-badge {
display: inline-flex; display: inline-flex;
+1 -1
View File
@@ -9,7 +9,7 @@
via JS (tabella utenti/azioni) -> parita' funzionale assoluta. BI veste la chrome. via JS (tabella utenti/azioni) -> parita' funzionale assoluta. BI veste la chrome.
Path ../ perche' questa pagina vive in /admin/. --> Path ../ perche' questa pagina vive in /admin/. -->
<link rel="stylesheet" href="../vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="../vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="../css/style.css?v=20260613"> <link rel="stylesheet" href="../css/style.css?v=20260613b">
<style> <style>
.role-badge { .role-badge {
display: inline-flex; display: inline-flex;
+1 -1
View File
@@ -9,7 +9,7 @@
via JS (tabella utenti/azioni) -> parita' funzionale assoluta. BI veste la chrome. via JS (tabella utenti/azioni) -> parita' funzionale assoluta. BI veste la chrome.
Path ../ perche' questa pagina vive in /admin/. --> Path ../ perche' questa pagina vive in /admin/. -->
<link rel="stylesheet" href="../vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="../vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="../css/style.css?v=20260613"> <link rel="stylesheet" href="../css/style.css?v=20260613b">
<style> <style>
.role-badge { .role-badge {
display: inline-flex; display: inline-flex;
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Architettura - NIS2 Agile</title> <title>Architettura - NIS2 Agile</title>
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
<style> <style>
/* ── Architecture Page Styles ────────────────────────────────── */ /* ── Architecture Page Styles ────────────────────────────────── */
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (wizard/form/gauge) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (wizard/form/gauge) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
</head> </head>
<body> <body>
<div class="app-layout"> <div class="app-layout">
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (wizard/form/gauge) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (wizard/form/gauge) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
</head> </head>
<body> <body>
<div class="app-layout"> <div class="app-layout">
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Stats Cards ────────────────────────────────────────── */ /* ── Stats Cards ────────────────────────────────────────── */
.asset-stats { .asset-stats {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Stats Cards ────────────────────────────────────────── */ /* ── Stats Cards ────────────────────────────────────────── */
.asset-stats { .asset-stats {
+1 -1
View File
@@ -6,7 +6,7 @@
<title>Le Mie Aziende - NIS2 Agile</title> <title>Le Mie Aziende - NIS2 Agile</title>
<!-- Bootstrap Italia v2.18.1 self-hostato (MAI CDN). Caricato PRIMA di style.css: BI veste la chrome/sidebar, style.css resta autorevole per i widget. --> <!-- Bootstrap Italia v2.18.1 self-hostato (MAI CDN). Caricato PRIMA di style.css: BI veste la chrome/sidebar, style.css resta autorevole per i widget. -->
<link rel="stylesheet" href="vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
<style> <style>
.companies-header { .companies-header {
display: flex; display: flex;
+1 -1
View File
@@ -6,7 +6,7 @@
<title>Le Mie Aziende - NIS2 Agile</title> <title>Le Mie Aziende - NIS2 Agile</title>
<!-- Bootstrap Italia v2.18.1 self-hostato (MAI CDN). Caricato PRIMA di style.css: BI veste la chrome/sidebar, style.css resta autorevole per i widget. --> <!-- Bootstrap Italia v2.18.1 self-hostato (MAI CDN). Caricato PRIMA di style.css: BI veste la chrome/sidebar, style.css resta autorevole per i widget. -->
<link rel="stylesheet" href="vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
<style> <style>
.companies-header { .companies-header {
display: flex; display: flex;
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (chat/portfolio/storico) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (chat/portfolio/storico) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
:root { :root {
--nis2-cyan: #06B6D4; --nis2-cyan: #06B6D4;
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (chat/portfolio/storico) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (chat/portfolio/storico) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
:root { :root {
--nis2-cyan: #06B6D4; --nis2-cyan: #06B6D4;
+14
View File
@@ -922,6 +922,20 @@ tbody tr:last-child td {
transform: translateY(0) scale(1); transform: translateY(0) scale(1);
} }
/* ── Override conflitto Bootstrap Italia (swap V2) ──────────────────────────
BI introduce una sua classe `.modal` (display:none, position:fixed, z-index 1055)
che nasconde i nostri modali custom showModal() → si vedeva solo il backdrop grigio.
Rispecifichiamo il nostro comportamento dentro .modal-overlay (specificità maggiore,
style.css caricato dopo bootstrap-italia.css). Vale anche su pagine non-BI (innocuo). */
.modal-overlay .modal {
display: block;
position: relative;
top: auto; left: auto; right: auto; bottom: auto;
margin: 0;
z-index: auto;
pointer-events: auto;
}
.modal-header { .modal-header {
padding: 20px 24px; padding: 20px 24px;
border-bottom: 1px solid var(--gray-100); border-bottom: 1px solid var(--gray-100);
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (card/gauge/stat/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (card/gauge/stat/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
</head> </head>
<body> <body>
<div class="app-layout"> <div class="app-layout">
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (card/gauge/stat/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (card/gauge/stat/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
</head> </head>
<body> <body>
<div class="app-layout"> <div class="app-layout">
+1 -1
View File
@@ -7,7 +7,7 @@
<!-- Bootstrap Italia v2.18.1 self-hostato (regola: MAI CDN). Caricato PRIMA di style.css <!-- Bootstrap Italia v2.18.1 self-hostato (regola: MAI CDN). Caricato PRIMA di style.css
cosi' style.css resta autorevole per la chrome (sidebar/widget). BI veste la guida. --> cosi' style.css resta autorevole per la chrome (sidebar/widget). BI veste la guida. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Stili specifici guida (callout normativi/esempi) ──────── */ /* ── Stili specifici guida (callout normativi/esempi) ──────── */
.guide-wrap { max-width: 940px; margin: 0 auto; } .guide-wrap { max-width: 940px; margin: 0 auto; }
+1 -1
View File
@@ -7,7 +7,7 @@
<!-- Bootstrap Italia v2.18.1 self-hostato (regola: MAI CDN). Caricato PRIMA di style.css <!-- Bootstrap Italia v2.18.1 self-hostato (regola: MAI CDN). Caricato PRIMA di style.css
cosi' style.css resta autorevole per la chrome (sidebar/widget). BI veste la guida. --> cosi' style.css resta autorevole per la chrome (sidebar/widget). BI veste la guida. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Stili specifici guida (callout normativi/esempi) ──────── */ /* ── Stili specifici guida (callout normativi/esempi) ──────── */
.guide-wrap { max-width: 940px; margin: 0 auto; } .guide-wrap { max-width: 940px; margin: 0 auto; }
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/decision-tree/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/decision-tree/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Filters Bar ─────────────────────────────────────── */ /* ── Filters Bar ─────────────────────────────────────── */
.filters-bar { .filters-bar {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/decision-tree/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/decision-tree/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Filters Bar ─────────────────────────────────────── */ /* ── Filters Bar ─────────────────────────────────────── */
.filters-bar { .filters-bar {
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>NIS2 Agile — Integrazioni Esterne</title> <title>NIS2 Agile — Integrazioni Esterne</title>
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
<style> <style>
/* ── Page-specific overrides ── */ /* ── Page-specific overrides ── */
.integ-hero { .integ-hero {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (wizard/SoA/tabelle) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (wizard/SoA/tabelle) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.isms-intro { background:#eff6ff; border-left:4px solid var(--primary,#2563eb); padding:14px 18px; border-radius:8px; margin-bottom:20px; font-size:.92rem; line-height:1.6; } .isms-intro { background:#eff6ff; border-left:4px solid var(--primary,#2563eb); padding:14px 18px; border-radius:8px; margin-bottom:20px; font-size:.92rem; line-height:1.6; }
.isms-steps { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:20px; } .isms-steps { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:20px; }
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (wizard/SoA/tabelle) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (wizard/SoA/tabelle) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.isms-intro { background:#eff6ff; border-left:4px solid var(--primary,#2563eb); padding:14px 18px; border-radius:8px; margin-bottom:20px; font-size:.92rem; line-height:1.6; } .isms-intro { background:#eff6ff; border-left:4px solid var(--primary,#2563eb); padding:14px 18px; border-radius:8px; margin-bottom:20px; font-size:.92rem; line-height:1.6; }
.isms-steps { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:20px; } .isms-steps { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:20px; }
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (lista doc, search) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (lista doc, search) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.kb-scope-radios { display: flex; gap: 18px; flex-wrap: wrap; font-size: .9rem; } .kb-scope-radios { display: flex; gap: 18px; flex-wrap: wrap; font-size: .9rem; }
.kb-scope-radios label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; } .kb-scope-radios label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (lista doc, search) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (lista doc, search) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.kb-scope-radios { display: flex; gap: 18px; flex-wrap: wrap; font-size: .9rem; } .kb-scope-radios { display: flex; gap: 18px; flex-wrap: wrap; font-size: .9rem; }
.kb-scope-radios label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; } .kb-scope-radios label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>NIS2 Agile — Gestione Licenze</title> <title>NIS2 Agile — Gestione Licenze</title>
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
<style> <style>
/* ── Layout ── */ /* ── Layout ── */
body { background: var(--bg-main); } body { background: var(--bg-main); }
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>NIS2 Agile — License API · Documentazione Marketing</title> <title>NIS2 Agile — License API · Documentazione Marketing</title>
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
<style> <style>
.doc-layout { max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem; } .doc-layout { max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem; }
.doc-hero { .doc-hero {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (card aggiornamenti/badge/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (card aggiornamenti/badge/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.impact-badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.7rem; font-weight: 700; } .impact-badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.7rem; font-weight: 700; }
.impact-critical { background: var(--danger-bg); color: var(--danger); } .impact-critical { background: var(--danger-bg); color: var(--danger); }
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (card aggiornamenti/badge/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (card aggiornamenti/badge/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.impact-badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.7rem; font-weight: 700; } .impact-badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.7rem; font-weight: 700; }
.impact-critical { background: var(--danger-bg); color: var(--danger); } .impact-critical { background: var(--danger-bg); color: var(--danger); }
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/editor/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/editor/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Policy Page Styles ──────────────────────────────────── */ /* ── Policy Page Styles ──────────────────────────────────── */
.filters-bar { .filters-bar {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/editor/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/editor/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Policy Page Styles ──────────────────────────────────── */ /* ── Policy Page Styles ──────────────────────────────────── */
.filters-bar { .filters-bar {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Tab Navigation ─────────────────────────────────────── */ /* ── Tab Navigation ─────────────────────────────────────── */
.tab-nav { .tab-nav {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Tab Navigation ─────────────────────────────────────── */ /* ── Tab Navigation ─────────────────────────────────────── */
.tab-nav { .tab-nav {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/matrice/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/matrice/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── View Toggle ─────────────────────────────────────── */ /* ── View Toggle ─────────────────────────────────────── */
.view-toggle { .view-toggle {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/matrice/modali) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/matrice/modali) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── View Toggle ─────────────────────────────────────── */ /* ── View Toggle ─────────────────────────────────────── */
.view-toggle { .view-toggle {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.settings-tabs { .settings-tabs {
display: flex; display: flex;
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.settings-tabs { .settings-tabs {
display: flex; display: flex;
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Configura Organizzazione - NIS2 Agile</title> <title>Configura Organizzazione - NIS2 Agile</title>
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
</head> </head>
<body> <body>
<div class="app-layout"> <div class="app-layout">
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Supply Chain Page Styles ─────────────────────────── */ /* ── Supply Chain Page Styles ─────────────────────────── */
.filters-bar { .filters-bar {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Supply Chain Page Styles ─────────────────────────── */ /* ── Supply Chain Page Styles ─────────────────────────── */
.filters-bar { .filters-bar {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Tab Navigation ─────────────────────────────────────── */ /* ── Tab Navigation ─────────────────────────────────────── */
.tab-nav { .tab-nav {
+1 -1
View File
@@ -8,7 +8,7 @@
cosi' style.css (design system esistente) resta autorevole per i widget renderizzati cosi' style.css (design system esistente) resta autorevole per i widget renderizzati
via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. --> via JS (tabelle/modali/form) -> parita' funzionale assoluta. BI veste la chrome. -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
/* ── Tab Navigation ─────────────────────────────────────── */ /* ── Tab Navigation ─────────────────────────────────────── */
.tab-nav { .tab-nav {
+1 -1
View File
@@ -9,7 +9,7 @@
renderizzati via JS (tabelle/modali/timeline) -> parita' funzionale assoluta. renderizzati via JS (tabelle/modali/timeline) -> parita' funzionale assoluta.
BI veste la chrome (sidebar + font istituzionale). --> BI veste la chrome (sidebar + font istituzionale). -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.priority-badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.7rem; font-weight: 700; } .priority-badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.7rem; font-weight: 700; }
.priority-critical { background: var(--danger-bg); color: var(--danger); } .priority-critical { background: var(--danger-bg); color: var(--danger); }
+1 -1
View File
@@ -9,7 +9,7 @@
renderizzati via JS (tabelle/modali/timeline) -> parita' funzionale assoluta. renderizzati via JS (tabelle/modali/timeline) -> parita' funzionale assoluta.
BI veste la chrome (sidebar + font istituzionale). --> BI veste la chrome (sidebar + font istituzionale). -->
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css"> <link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
<link rel="stylesheet" href="/css/style.css?v=20260613"> <link rel="stylesheet" href="/css/style.css?v=20260613b">
<style> <style>
.priority-badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.7rem; font-weight: 700; } .priority-badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.7rem; font-weight: 700; }
.priority-critical { background: var(--danger-bg); color: var(--danger); } .priority-critical { background: var(--danger-bg); color: var(--danger); }
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Compliance Journey - NIS2 Agile</title> <title>Compliance Journey - NIS2 Agile</title>
<link rel="stylesheet" href="css/style.css?v=20260613"> <link rel="stylesheet" href="css/style.css?v=20260613b">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style> <style>
:root { :root {