/* estratto da index.html: la CSP non ammette stili inline */
        * { margin: 0; padding: 0; box-sizing: border-box; }
        :root {
            --bg:     #0f1117;
            --bg2:    #1a1d27;
            --text:   #e4e6ed;
            --dim:    #9ca0ad;
            --accent: #5b8af5;
            --green:  #20b2aa;
            --amber:  #f5a623;
            --border: #2d3140;
            --mono:   'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace;
        }
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
            background: var(--bg);
            color: var(--text);
            font-size: 15px;
            line-height: 1.6;
        }
        a { color: inherit; text-decoration: none; }
        .wrap { max-width: 1100px; margin: 0 auto; padding: 0 32px; }

        /* topbar */
        .topbar { border-bottom: 1px solid var(--border); padding: 20px 0; }
        .topbar .wrap { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
        .logo-line { display: flex; align-items: center; gap: 14px; font-family: var(--mono); }
        .logo-line img { width: 64px; height: 64px; border-radius: 14px; }
        .logo-line .name {
            font-size: 2.2rem;
            font-weight: 900;
            background: linear-gradient(135deg, var(--accent), var(--green));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            letter-spacing: -0.5px;
        }
        .logo-line .ver  { color: var(--dim); font-size: 0.8rem; }
        .logo-line .tagline { color: var(--amber); font-size: 0.75rem; font-weight: 600; display: block; margin-top: 2px; }
        .topbar-right { font-family: var(--mono); font-size: 0.72rem; color: var(--dim); text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }

        /* lang toggle */
        .lang-tog { display: inline-flex; border: 1px solid var(--border); }
        .lang-tog button { background: none; border: none; color: var(--dim); padding: 3px 10px; font-family: var(--mono); font-size: 0.68rem; cursor: pointer; letter-spacing: 0.08em; transition: background 0.1s, color 0.1s; }
        .lang-tog button.active { background: var(--accent); color: #fff; }
        .lang-tog button:not(.active):hover { color: var(--text); }

        /* hero */
        .hero { padding: 80px 0 64px; border-bottom: 1px solid var(--border); }
        .hero .wrap { display: grid; grid-template-columns: 1fr 420px; gap: 64px; align-items: center; }
        .hero h1 { font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; letter-spacing: -1px; line-height: 1.1; color: #fff; margin-bottom: 20px; }
        .hero h1 em { font-style: normal; color: var(--accent); }
        .hero h1 em.amber { color: var(--amber); }
        .hero .sub { color: var(--dim); font-size: 1rem; max-width: 420px; margin-bottom: 36px; line-height: 1.75; }
        .badges { display: flex; gap: 8px; flex-wrap: wrap; }
        .badge { font-family: var(--mono); font-size: 0.72rem; padding: 5px 12px; border: 1px solid var(--border); border-radius: 3px; color: var(--dim); }
        .badge.hi { border-color: var(--accent); color: var(--accent); }

        /* terminal */
        .terminal { background: var(--bg); border: 1px solid var(--border); border-radius: 8px; overflow: hidden; font-family: var(--mono); font-size: 0.78rem; }
        .term-bar { background: var(--bg2); padding: 10px 14px; display: flex; align-items: center; gap: 6px; border-bottom: 1px solid var(--border); }
        .dot { width: 10px; height: 10px; border-radius: 50%; }
        .dot.r { background: #ff5f57; } .dot.y { background: #ffbd2e; } .dot.g { background: #28ca41; }
        .term-title { margin-left: 8px; color: var(--dim); font-size: 0.72rem; }
        .term-body { padding: 18px 20px; line-height: 2; }
        .term-body .prompt { color: var(--dim); }
        .term-body .cmd   { color: #fff; }
        .term-body .ok    { color: var(--green); }
        .term-body .warn  { color: var(--amber); }
        .term-body .info  { color: var(--dim); }
        .term-body .score { color: var(--accent); font-weight: 700; }

        /* modules */
        .section { padding: 64px 0; border-bottom: 1px solid var(--border); }
        .section-label { font-family: var(--mono); font-size: 0.72rem; color: var(--dim); letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 32px; }
        .section-label::before { content: '// '; color: var(--border); }

        /* architecture diagram (audit-flow) */
        #nf-arch-diagram { width: 100%; margin: 0 auto; border-radius: 3px; overflow: hidden; border: 1px solid var(--border); }
        #nf-arch-diagram svg { width: 100%; height: auto; display: block; }
        #nf-arch-diagram .hub-glow { animation: nfa-hub-pulse 3.5s ease-in-out infinite; }
        @keyframes nfa-hub-pulse { 0%,100% { r: 100; opacity: .32; } 50% { r: 118; opacity: .16; } }
        #nf-arch-diagram .src-line { stroke-dasharray: 3 7; animation: nfa-dash-flow 2.2s linear infinite; }
        #nf-arch-diagram .src-line.d1 { animation-delay: -0.2s; }
        #nf-arch-diagram .src-line.d2 { animation-delay: -0.4s; }
        #nf-arch-diagram .src-line.d3 { animation-delay: -0.6s; }
        #nf-arch-diagram .src-line.d4 { animation-delay: -0.8s; }
        #nf-arch-diagram .src-line.d5 { animation-delay: -1.0s; }
        #nf-arch-diagram .src-line.d6 { animation-delay: -1.2s; }
        @keyframes nfa-dash-flow { to { stroke-dashoffset: -50; } }
        #nf-arch-diagram .layer-stripe { animation: nfa-stripe-pulse 4s ease-in-out infinite; }
        @keyframes nfa-stripe-pulse { 0%,100% { opacity: .8; } 50% { opacity: 1; } }
        @media (max-width: 768px) {
          #architecture { display: none; }
        }
        .module-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); border: 1px solid var(--border); }
        .mod { padding: 20px 24px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); transition: background 0.1s; }
        .mod:hover { background: var(--bg2); }
        .mod-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 6px; }
        .mod-name { font-weight: 700; font-size: 0.88rem; color: #fff; }
        .mod-tag { font-family: var(--mono); font-size: 0.65rem; color: var(--dim); }
        .mod p { font-size: 0.85rem; color: var(--dim); line-height: 1.6; }

        /* specs */
        .specs { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); border: 1px solid var(--border); margin-top: 32px; }
        .spec { padding: 18px 20px; border-right: 1px solid var(--border); }
        .spec-key { font-family: var(--mono); font-size: 0.7rem; color: var(--dim); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 6px; }
        .spec-val { font-size: 0.92rem; color: #fff; font-weight: 600; }

        /* stats */
        .stats { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--border); }
        .stat { padding: 22px 24px; border-right: 1px solid var(--border); text-align: center; }
        .stat:last-child { border-right: none; }
        .stat-num { font-family: var(--mono); font-size: 1.9rem; color: var(--accent); font-weight: 800; line-height: 1; }
        .stat-lbl { font-family: var(--mono); font-size: 0.68rem; color: var(--dim); letter-spacing: 0.08em; text-transform: uppercase; margin-top: 8px; }

        /* flows */
        .flows { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--border); }
        .flow-col { padding: 24px 28px; border-right: 1px solid var(--border); }
        .flow-col:last-child { border-right: none; }
        .flow-head { font-family: var(--mono); font-size: 0.7rem; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 18px; font-weight: 700; }
        .flow-head.target { color: var(--accent); }
        .flow-head.lan { color: var(--green); }
        .flow-step { display: flex; align-items: center; gap: 12px; padding: 5px 0; font-size: 0.85rem; color: var(--dim); }
        .flow-num { width: 22px; height: 22px; font-family: var(--mono); font-size: 0.7rem; color: #0f1117; display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-weight: 700; border-radius: 3px; }
        .flow-col.target .flow-num { background: var(--accent); }
        .flow-col.lan .flow-num { background: var(--green); }
        .flow-step.final { color: #fff; font-weight: 600; }

        /* compare with/without */
        .compare { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--border); }
        .cmp-col { padding: 24px 28px; border-right: 1px solid var(--border); }
        .cmp-col:last-child { border-right: none; }
        .cmp-head { font-family: var(--mono); font-size: 0.7rem; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 16px; font-weight: 700; }
        .cmp-head.bad { color: var(--amber); }
        .cmp-head.good { color: var(--green); }
        .cmp-list { list-style: none; padding: 0; }
        .cmp-list li { font-size: 0.84rem; color: var(--dim); padding: 5px 0 5px 22px; position: relative; line-height: 1.55; }
        .cmp-list.bad li::before { content: "✗"; color: var(--amber); position: absolute; left: 0; font-family: var(--mono); font-weight: 700; }
        .cmp-list.good li::before { content: "✓"; color: var(--green); position: absolute; left: 0; font-family: var(--mono); font-weight: 700; }


        /* cta link */
        .cta-link { display: inline-block; padding: 8px 18px; border: 1px solid var(--accent); color: var(--accent); font-family: var(--mono); font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.08em; transition: background 0.1s, color 0.1s; }
        .cta-link:hover { background: var(--accent); color: #fff; }

        /* free tools */
        /* schermate dell'app (screens/*-{it,en}.png, scripts/site-screens.sh) */
        .promo-video { display: block; width: 100%; height: auto; margin: 0 0 18px; border: 1px solid var(--border); background: #000; }
        .carousel { position: relative; }
        .carousel-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; border: 1px solid var(--border); background: var(--bg2); }
        .carousel-track::-webkit-scrollbar { display: none; }
        .carousel-slide { flex: 0 0 100%; margin: 0; scroll-snap-align: start; }
        .carousel-slide img { display: block; width: 100%; height: auto; border-bottom: 1px solid var(--border); }
        .carousel-slide figcaption { padding: 12px 16px; font-size: 0.85rem; color: var(--dim); line-height: 1.55; min-height: 4.2em; }
        .carousel-slide figcaption strong { display: block; color: #fff; font-size: 0.92rem; margin-bottom: 2px; }
        .carousel-btn { position: absolute; top: calc(50% - 40px); transform: translateY(-50%); width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border); background: rgba(15,17,23,.85); color: #fff; font-size: 1.7rem; line-height: 1; cursor: pointer; }
        .carousel-btn:hover { border-color: var(--accent); color: var(--accent); }
        .carousel-btn.prev { left: 10px; }
        .carousel-btn.next { right: 10px; }
        .carousel-dots { display: flex; justify-content: center; gap: 8px; margin-top: 12px; }
        .carousel-dots button { width: 9px; height: 9px; padding: 0; border-radius: 50%; border: 0; background: var(--border); cursor: pointer; }
        .carousel-dots button.active { background: var(--amber); }
        .shots { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
        .shots figure { margin: 0; border: 1px solid var(--border); background: var(--bg2); }
        .shots img { display: block; width: 100%; height: auto; border-bottom: 1px solid var(--border); }
        .shots figcaption { padding: 12px 16px; font-size: 0.8rem; color: var(--dim); line-height: 1.55; }
        .shots figcaption strong { display: block; color: #fff; font-size: 0.86rem; margin-bottom: 2px; }
        .free { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--border); }
        .free-item { display: block; padding: 20px 22px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); transition: background 0.1s; color: inherit; }
        .free-item:nth-child(3n) { border-right: none; }
        .free-item:nth-last-child(-n+3) { border-bottom: none; }
        .free-item:hover { background: var(--bg2); }
        .free-item:hover h3 { color: #fff; }
        .free-item h3 { font-family: var(--mono); font-size: 0.82rem; color: var(--accent); margin-bottom: 8px; font-weight: 700; transition: color 0.1s; overflow-wrap: break-word; }
        .free-item p { font-size: 0.78rem; color: var(--dim); line-height: 1.55; }

        /* footer */
        footer { padding: 24px 0; }
        footer .wrap { display: flex; justify-content: center; align-items: center; gap: 20px; flex-wrap: wrap; }
        footer p { font-family: var(--mono); font-size: 0.72rem; color: var(--dim); text-align: center; }
        footer .flinks { display: flex; gap: 14px; font-family: var(--mono); font-size: 0.72rem; }
        footer .flinks a { color: var(--dim); }
        footer .flinks a:hover { color: var(--accent); }

        @media (max-width: 768px) {
            .hero .wrap { grid-template-columns: 1fr; }
            .terminal { display: none; }
            .topbar { padding: 14px 0; }
            .topbar .wrap { flex-direction: column; align-items: flex-start; gap: 10px; }
            .logo-line .name { font-size: 1.6rem; }
            .logo-line img { width: 48px; height: 48px; }
            .topbar-right { text-align: left; align-items: flex-start; }
            .module-list { grid-template-columns: 1fr; }
            .specs { grid-template-columns: 1fr 1fr; }
            .stats { grid-template-columns: 1fr 1fr; }
            .flows, .compare, .free, .shots { grid-template-columns: 1fr; }
            .flow-col, .cmp-col, .stat, .free-item { border-right: none; border-bottom: 1px solid var(--border); }
            .free-item:nth-last-child(-n+3) { border-bottom: 1px solid var(--border); }
            .flow-col:last-child, .cmp-col:last-child, .stat:last-child, .free-item:last-child { border-bottom: none; }
        }
    
.tld { font-size: 0.8rem; font-weight: 500; color: var(--dim); margin-left: 2px; vertical-align: super; }
#email-canvas { display: block; }
.hero-cta { margin-bottom: 28px; }
