/* NIS2 Agile — Avatar di prodotto: stili demo-mode (highlight + banner). Caricato solo in demo-mode (?demo=). product-demo-protocol v1.0.1. */ /* Banner "Modalità dimostrazione" */ #nis2-demo-banner { position: fixed; top: 0; left: 0; right: 0; z-index: 99998; background: #0066CC; color: #fff; font: 600 13px/1 "Titillium Web", system-ui, sans-serif; padding: 8px 16px; display: flex; align-items: center; gap: 10px; box-shadow: 0 2px 8px rgba(0,0,0,.25); } #nis2-demo-banner .nis2-demo-dot { width: 8px; height: 8px; border-radius: 50%; background: #7ee787; animation: nis2-demo-pulse 1.4s infinite; } #nis2-demo-banner .nis2-demo-spacer { flex: 1; } body.nis2-demo-on { padding-top: 34px; } /* lascia spazio al banner */ /* Overlay highlight (spotlight) — applicato a un elemento target */ .nis2-demo-hl { position: relative; z-index: 99990; } .nis2-demo-hl.pulse-blue { box-shadow: 0 0 0 3px #0066CC, 0 0 0 9px rgba(0,102,204,.25); border-radius: 6px; animation: nis2-demo-pulse 1.4s ease-in-out infinite; } .nis2-demo-hl.halo { box-shadow: 0 0 0 3px #f59e0b, 0 0 18px 4px rgba(245,158,11,.45); border-radius: 6px; } .nis2-demo-hl.outline { outline: 3px solid #0066CC; outline-offset: 2px; border-radius: 6px; } @keyframes nis2-demo-pulse { 0%,100% { box-shadow: 0 0 0 3px #0066CC, 0 0 0 6px rgba(0,102,204,.30); } 50% { box-shadow: 0 0 0 3px #0066CC, 0 0 0 12px rgba(0,102,204,.06); } } /* In demo-mode (read-only) attenua gli elementi di scrittura per chiarezza visiva. La sicurezza vera è server-side (guard DEMO_READ_ONLY); questo è solo UX. */ body.nis2-demo-readonly [data-demo-action]:not([data-demo-readonly-safe]) { /* azioni non-safe: nessun blocco CSS, solo hook JS */ } /* Toast errore demo */ #nis2-demo-toast { position: fixed; bottom: 18px; left: 50%; transform: translateX(-50%); z-index: 99999; background: #17324d; color: #fff; padding: 10px 16px; border-radius: 8px; font: 500 13px/1.3 "Titillium Web", system-ui, sans-serif; max-width: 80vw; display: none; }