html, body {
    font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

a, .btn-link {
    color: #006bb7;
}

/* ===================== Design system "Sicurezza Tecnica" ===================== */
:root {
    color-scheme: light;
    --fire-red: #D32F2F;
    --fire-red-dark: #C62828;
    --slate-navy: #0F172A;
    --slate-navy-2: #1E293B;
    --safety-green: #16A34A;
    --amber: #D97706;
    --surface: #F8FAFC;
    --surface-2: #F1F5F9;
    --hairline: #E2E8F0;
}

.page-content { min-height: 70vh; }

/* Hero */
.hero {
    background: linear-gradient(135deg, #0F172A 0%, #1E293B 100%);
    color: #fff;
    padding: 5rem 0 4rem;
}
.hero h1 { color: #fff; font-family: 'Plus Jakarta Sans'; font-weight: 800; }
.hero .hero-sub { color: #CBD5E1; max-width: 640px; }

.section { padding: 3.5rem 0; }
.section-alt { background: var(--surface-2); }

/* Card servizio/prodotto */
.tech-card {
    background: #fff; border: 1px solid var(--hairline); border-radius: 8px;
    padding: 1.5rem; height: 100%; transition: box-shadow .15s, border-color .15s;
}
.tech-card:hover { border-color: #CBD5E1; box-shadow: 0 4px 6px -1px rgba(15,23,42,.08), 0 2px 4px -2px rgba(15,23,42,.05); }
.tech-card .card-icon { color: var(--fire-red); font-size: 40px; }

/* Badge normativi / stato */
.norm-tag {
    display: inline-block; font-family: 'Inter'; font-size: 11px; font-weight: 700;
    letter-spacing: .06em; text-transform: uppercase; padding: 2px 10px; border-radius: 4px;
    background: var(--surface-2); color: var(--slate-navy); border: 1px solid #CBD5E1;
}
.status-chip { display:inline-block; height:24px; line-height:20px; border-radius:9999px; padding:2px 10px; font-size:12px; font-weight:600; }
.status-ok { background:#DCFCE7; color:var(--safety-green); border:1px solid var(--safety-green); }
.status-warn { background:#FEF3C7; color:var(--amber); }
.status-crit { background:#FEE2E2; color:var(--fire-red-dark); }

/* Anteprima allegato richiesta */
.anteprima-img-wrap { display:flex; justify-content:center; background:var(--surface-2);
                      border:1px solid var(--hairline); border-radius:8px; padding:1rem; }
.anteprima-img { max-width:100%; max-height:70vh; height:auto; border-radius:4px; }

/* Card dashboard cliccabile */
.dashboard-card-action { cursor:pointer; transition: box-shadow .15s ease, border-color .15s ease; }
.dashboard-card-action:hover { border-color: var(--fire-red); box-shadow: 0 2px 10px rgba(15,23,42,.12); }

/* Footer */
.site-footer { background: var(--slate-navy); color:#E2E8F0; padding: 3rem 0 1.5rem; margin-top: 3rem; }
.footer-grid { display:grid; grid-template-columns: 2fr 1fr 1fr 1.2fr; gap: 2rem; }
.footer-title { color:#fff; font-family:'Plus Jakarta Sans'; }
.footer-heading { color:#fff; margin-bottom:.5rem; display:block; }
.footer-link { display:block; color:#CBD5E1 !important; padding:.15rem 0; }
.footer-link:hover { color:#fff !important; }
.footer-muted { color:#94A3B8; }
.footer-bottom { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.5rem; }
@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .footer-grid { grid-template-columns: 1fr; } }

/* Barra CTA mobile sticky */
.mobile-cta-bar {
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 1300;
    display: flex; background:#fff; border-top:1px solid var(--hairline);
    box-shadow: 0 -2px 8px rgba(15,23,42,.08);
}
.mobile-cta { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
    gap:2px; padding:.55rem; font-size:.8rem; font-weight:600; text-decoration:none; }
.mobile-cta-phone { color: var(--slate-navy); }
.mobile-cta-mail { background: var(--slate-navy); color:#fff; }
.mobile-cta-primary { background: var(--fire-red); color:#fff; }
.mobile-cta-bar { padding-bottom: env(safe-area-inset-bottom); }
@media (max-width: 991px) { .page-content { padding-bottom: 64px; } }

/* ===================== Stile "Stitch" (mockup) — sito pubblico ===================== */
:root {
    --surface-lowest: #ffffff;
    --surface-low: #f2f4f6;
    --surface-container: #eceef0;
    --surface-high: #e6e8ea;
    --surface-highest: #e0e3e5;
    --on-surface: #191c1e;
    --on-surface-variant: #5b6b73;
    --slate-muted: #334155;
    --inverse-surface: #2d3133;
    --inverse-on-surface: #eff1f3;
}

.mi { font-family: 'Material Symbols Outlined'; font-weight: normal; font-style: normal; line-height: 1;
      letter-spacing: normal; text-transform: none; display: inline-block; white-space: nowrap;
      direction: ltr; -webkit-font-feature-settings: 'liga'; font-feature-settings: 'liga'; vertical-align: middle; }

.container-xl { max-width: 1216px; margin: 0 auto; padding: 0 1.5rem; }
@media (min-width: 1024px) { .container-xl { padding: 0 3rem; } }

/* Buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; font-family: 'Inter';
       font-weight: 600; font-size: 14px; letter-spacing: .01em; border-radius: 12px; padding: .55rem 1rem;
       border: 1px solid transparent; cursor: pointer; text-decoration: none; transition: all .15s; white-space: nowrap; }
.btn .mi { font-size: 18px; }
.btn-lg { padding: .85rem 1.5rem; font-size: 15px; }
.btn-primary { background: var(--fire-red); color: #fff; box-shadow: 0 2px 6px rgba(211,47,47,.25); }
.btn-primary:hover { background: var(--fire-red-dark); color: #fff; }
.btn-dark { background: var(--slate-navy); color: #fff; }
.btn-dark:hover { background: var(--slate-navy-2); color: #fff; }
.btn-soft { background: var(--surface-2); color: var(--on-surface); }
.btn-soft:hover { background: var(--surface-container); }
.btn-ghost { background: transparent; border-color: var(--hairline); color: var(--slate-navy); }
.btn-ghost:hover { background: var(--surface-2); }
.btn-wa { background: #25D366; color: #fff; }
.btn-wa:hover { background: #1da851; color: #fff; }
.btn-green { background: var(--safety-green); color: #fff; }
.btn-green:hover { background: #15803d; color: #fff; }

/* Norm tag / chips reused from top block */
.tech-tag { display:inline-flex; align-items:center; gap:.35rem; font-size:11px; font-weight:700; letter-spacing:.06em;
            text-transform:uppercase; color: var(--on-surface-variant); background: var(--surface-container);
            padding: 2px 8px; border-radius: 4px; }

/* Top utility bar */
.utility-bar { background: var(--surface-2); border-bottom: 1px solid var(--hairline); color: var(--slate-muted); font-size: 12px; }
.utility-inner { display:flex; align-items:center; justify-content:space-between; height: 38px; gap: 1rem; }
.utility-group { display:flex; align-items:center; gap: 1rem; }
.utility-link { display:inline-flex; align-items:center; gap:.35rem; color: var(--slate-muted); text-decoration:none; font-weight:600; }
.utility-link:hover { color: var(--fire-red); }
.utility-link .mi { font-size: 16px; }
.utility-sep { color: var(--hairline); }
.utility-live { display:inline-flex; align-items:center; gap:.4rem; background: var(--safety-green-subtle); color:#166534;
                padding: 2px 10px; border-radius:9999px; font-size:11px; font-weight:700; letter-spacing:.04em; }
.live-dot { width:6px; height:6px; border-radius:9999px; background: var(--safety-green); animation: pulse 1.6s infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.35} }
.utility-tag { color: var(--on-surface-variant); font-size:11px; font-weight:700; letter-spacing:.06em; }
@media (max-width: 900px) { .utility-hide { display:none !important; } }

/* Main header */
.site-header { position: sticky; top: 0; z-index: 1200; background: var(--surface-lowest); box-shadow: 0 1px 8px rgba(15,23,42,.05); }
.header-inner { height: 76px; display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.brand { display:flex; align-items:center; gap:.75rem; text-decoration:none; }
.brand img { height: 44px; width:auto; }
.main-nav { display:flex; align-items:center; gap: .15rem; }
.nav-link { position:relative; padding:.5rem .75rem; border-radius:8px; font-weight:600; font-size:14px; color: var(--slate-muted);
            text-decoration:none; display:inline-flex; align-items:center; gap:.25rem; transition: all .12s; cursor:pointer; }
.nav-link:hover { background: var(--surface-2); color: var(--on-surface); }
.nav-link.active { background: var(--surface-container); color: var(--on-surface); }
.nav-link .mi { font-size: 16px; }
.header-actions { display:flex; align-items:center; gap:.5rem; }
.search-toggle { padding:.5rem; }

/* Site search */
.search-backdrop { position: fixed; inset:0; background: rgba(15,23,42,.35); z-index: 1150; }
.search-panel { position:absolute; top:100%; left:0; right:0; background:#fff; border-bottom:1px solid var(--hairline);
                box-shadow: 0 20px 25px -5px rgba(15,23,42,.14); z-index: 1250; padding: 1.25rem 0; }
.search-field { display:flex; align-items:center; gap:.6rem; background: var(--surface-2); border:1px solid var(--hairline);
                border-radius:10px; padding:.65rem .9rem; }
.search-field .mi { font-size:20px; color: var(--on-surface-variant); }
.search-field input { flex:1; border:none; background:transparent; outline:none; font-size:15px; color:var(--on-surface); }
.search-field input::placeholder { color: var(--on-surface-variant); }
.search-close { background:transparent; border:none; cursor:pointer; color: var(--on-surface-variant); display:flex; padding:.2rem; }
.search-results { margin-top:.75rem; max-height: 60vh; overflow-y:auto; display:grid; gap:.15rem; }
.search-result { display:flex; align-items:baseline; gap:.6rem; padding:.6rem .5rem; border-radius:8px; text-decoration:none; }
.search-result:hover { background: var(--surface-2); }
.search-result-cat { font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color: var(--fire-red); min-width:92px; flex-shrink:0; }
.search-result-title { font-size:14px; font-weight:600; color: var(--on-surface); }
.search-empty { padding:.75rem .5rem; color: var(--on-surface-variant); font-size:14px; }

/* Desktop dropdown (CSS hover) */
.nav-dd { position: relative; }
.nav-dd-menu { position:absolute; top: 100%; left:0; min-width: 280px; background:#fff; border:1px solid var(--hairline);
               border-radius:12px; box-shadow: 0 20px 25px -5px rgba(15,23,42,.14); padding:.4rem; margin-top:10px;
               display:none; z-index: 1300; }
/* Ponte invisibile che copre il gap tra voce e sottomenu, così l'hover non si interrompe */
.nav-dd-menu::before { content:""; position:absolute; left:0; right:0; top:-12px; height:12px; }
.nav-dd:hover .nav-dd-menu,
.nav-dd:focus-within .nav-dd-menu { display:block; }
.nav-dd-menu a { display:flex; align-items:center; gap:.5rem; padding:.65rem .85rem; border-radius:8px;
                 color: var(--slate-muted); text-decoration:none; font-size:14px; font-weight:500; }
.nav-dd-menu a:hover { background: var(--surface-2); color: var(--fire-red); }
/* Sottomenu di secondo livello (flyout a destra) */
.nav-sub { position: relative; }
.nav-sub-trigger { display:flex; align-items:center; justify-content:space-between; gap:.5rem; padding:.65rem .85rem; border-radius:8px;
                   color: var(--slate-muted); text-decoration:none; font-size:14px; font-weight:500; cursor:pointer; }
.nav-sub-trigger .mi { font-size:18px; }
.nav-sub:hover > .nav-sub-trigger,
.nav-sub:focus-within > .nav-sub-trigger { background: var(--surface-2); color: var(--fire-red); }
.nav-sub-menu { position:absolute; top:-.4rem; left:100%; min-width: 240px; background:#fff; border:1px solid var(--hairline);
                border-radius:12px; box-shadow: 0 20px 25px -5px rgba(15,23,42,.14); padding:.4rem; margin-left:.4rem; display:none; }
.nav-sub-menu::before { content:""; position:absolute; top:0; bottom:0; left:-.6rem; width:.6rem; }
.nav-sub:hover > .nav-sub-menu,
.nav-sub:focus-within > .nav-sub-menu { display:block; }

/* Mobile nav */
.hamburger { display:none; }
.mobile-nav { display:none; }
@media (max-width: 1100px) {
    .main-nav, .header-cta-desktop { display:none; }
    .hamburger { display:inline-flex; }
    .mobile-nav.open { display:block; }
    .mobile-nav { position: fixed; inset: 0 0 0 auto; width: min(340px, 88vw); background:#fff; z-index: 2000;
                  box-shadow: -8px 0 24px rgba(0,0,0,.15); padding: 1rem; overflow-y:auto; }
    .mobile-backdrop { position: fixed; inset:0; background: rgba(15,23,42,.5); z-index: 1999; }
    .mobile-nav a { display:block; padding:.7rem .5rem; border-bottom:1px solid var(--surface-2); color: var(--slate-navy);
                    text-decoration:none; font-weight:600; }
    .mobile-nav .mob-group-title { font-size:11px; letter-spacing:.06em; text-transform:uppercase; color: var(--on-surface-variant);
                                   margin-top:.75rem; padding:0 .5rem; }
    .mobile-nav a.mob-sub { padding-left:1.25rem; font-size:14px; }
}

/* Announcement banner */
.announce { background: var(--surface-highest); }
.announce-inner { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.75rem; padding:.5rem 0; font-size:12px; color: var(--slate-muted); }
.announce .ping { width:8px; height:8px; border-radius:9999px; background: var(--fire-red); animation: pulse 1.4s infinite; }

/* Hero light */
.hero-light { background: var(--surface-lowest); }
.hero-light .container-xl { padding-top: 3.5rem; padding-bottom: 3.5rem; }
.hero-grid { display:grid; grid-template-columns: 1fr; gap: 2rem; align-items:center; }
@media (min-width: 1024px) { .hero-grid { grid-template-columns: 7fr 5fr; gap: 2.5rem; } }
.hero-eyebrow { display:inline-flex; align-items:center; gap:.5rem; background: var(--fire-red-light); color:#930010;
                padding:.4rem .85rem; border-radius:9999px; font-size:11px; font-weight:700; letter-spacing:.05em; }
.hero-title { font-family:'Plus Jakarta Sans'; font-weight:800; font-size:clamp(2rem,4.5vw,3rem); line-height:1.12;
              letter-spacing:-.02em; color: var(--slate-navy); margin:1rem 0 0; }
.hero-title .accent { color: var(--fire-red); text-decoration: underline; text-decoration-color: rgba(211,47,47,.25);
                      text-decoration-thickness: 4px; text-underline-offset: 8px; }
.hero-lead { color: var(--on-surface-variant); font-size:17px; line-height:1.6; margin-top:1rem; max-width: 640px; }
.hero-cta-row { display:flex; flex-wrap:wrap; gap:.75rem; margin-top:1.5rem; align-items:center; }
.trust-grid { display:grid; grid-template-columns: repeat(2,1fr); gap:.75rem; margin-top:2rem; }
@media (min-width: 640px) { .trust-grid { grid-template-columns: repeat(3,1fr); } }
.trust-item { background: var(--surface-low); border-radius:10px; padding:.85rem; }
.trust-num { font-family:'Plus Jakarta Sans'; font-weight:800; font-size:22px; }
.trust-label { font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color: var(--on-surface-variant); margin-top:2px; }

/* Diagnostic card */
.hero-img { width:100%; height:auto; border-radius:16px; border:1px solid var(--hairline); box-shadow: 0 20px 40px -12px rgba(15,23,42,.18); display:block; }
.hero-head-split { display:grid; grid-template-columns:1fr; gap:1.5rem; align-items:center; }
@media (min-width: 900px) { .hero-head-split { grid-template-columns: 1fr minmax(200px, 320px); gap:2.5rem; } }
.hero-head-img { display:flex; justify-content:center; }
.hero-head-img img { max-height:240px; width:auto; max-width:100%; }
@media (min-width: 900px) { .hero-head-img { justify-content:flex-end; } }
.diag-card { background: var(--surface-container); border-radius:16px; padding:1.5rem; box-shadow: 0 20px 40px -12px rgba(15,23,42,.18); }
.diag-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; }
.diag-head .dot { width:12px; height:12px; border-radius:9999px; background: var(--fire-red); }
.diag-panel { background:#fff; border-radius:12px; padding:1rem; box-shadow: 0 1px 3px rgba(15,23,42,.05); }
.gauge { width:100%; height:10px; border-radius:9999px; background: var(--surface-high); overflow:hidden; }
.gauge-fill { height:100%; background: var(--safety-green); border-radius:9999px; }
.diag-stats { display:grid; grid-template-columns: repeat(3,1fr); gap:.5rem; margin-top:.75rem; text-align:center; }
.diag-stat { background: var(--surface-low); border-radius:8px; padding:.5rem; }
.diag-stat .n { font-family:'Plus Jakarta Sans'; font-weight:800; font-size:16px; }
.diag-feed { background: var(--inverse-surface); color: var(--inverse-on-surface); border-radius:12px; padding:1rem; margin-top:1rem; }

/* Section headers */
.sec { padding: 3.5rem 0; }
.sec-eyebrow { font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color: var(--fire-red); display:block; margin-bottom:.35rem; }
.sec-title { font-family:'Plus Jakarta Sans'; font-weight:700; font-size:clamp(1.6rem,3vw,2rem); letter-spacing:-.015em; color: var(--slate-navy); }
.sec-lead { color: var(--on-surface-variant); margin-top:.5rem; max-width: 720px; }

/* Audience switcher */
.aud-tabs { display:inline-flex; padding:6px; border-radius:16px; background: var(--surface-high); }
.aud-tab { padding:.6rem 1.15rem; border-radius:12px; font-weight:600; font-size:14px; color: var(--on-surface-variant);
           background:transparent; border:none; cursor:pointer; transition: all .15s; }
.aud-tab.active { background:#fff; color: var(--on-surface); box-shadow: 0 1px 3px rgba(15,23,42,.1); font-weight:700; }
.card-grid { display:grid; grid-template-columns:1fr; gap:1.25rem; }
@media (min-width: 768px) { .card-grid { grid-template-columns: repeat(3,1fr); } }

/* Service / feature cards */
.svc-card { background:#fff; border:1px solid var(--hairline); border-radius:12px; padding:1.5rem; display:flex; flex-direction:column;
            transition: box-shadow .15s, border-color .15s; height:100%; }
.svc-card:hover { border-color:#CBD5E1; box-shadow: 0 4px 6px -1px rgba(15,23,42,.08); }
.svc-top { display:flex; align-items:center; justify-content:space-between; }
.svc-icon { width:48px; height:48px; border-radius:12px; display:flex; align-items:center; justify-content:center; }
.svc-icon .mi { font-size:26px; }
.svc-icon.red { background: var(--fire-red-light); color: var(--fire-red); }
.svc-icon.slate { background: var(--surface-2); color: var(--slate-navy); }
.svc-icon.green { background: var(--safety-green-subtle); color: var(--safety-green); }
.svc-title { font-family:'Plus Jakarta Sans'; font-weight:700; font-size:18px; color: var(--on-surface); margin:1rem 0 .5rem; }
.svc-text { color: var(--on-surface-variant); font-size:14px; line-height:1.55; flex:1; }
.svc-foot { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin:1.25rem -1.5rem -1.5rem;
            padding:1rem 1.5rem; background: var(--surface-low); border-radius:0 0 12px 12px; font-size:14px; }
.svc-foot a { color: var(--fire-red); font-weight:600; text-decoration:none; display:inline-flex; align-items:center; gap:.2rem; }
.svc-foot a:hover { color: var(--fire-red-dark); }

/* Special callout cards */
.special-card { background:#fff; border:1px solid var(--hairline); border-radius:16px; padding:1.5rem; display:flex; flex-direction:column; height:100%; }
.special-media { position:relative; height:176px; border-radius:12px; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.special-media.red { background: linear-gradient(135deg,#7f1d1d,#b91c1c); color:#fff; }
.special-media.green { background: linear-gradient(135deg,#065f46,#16a34a); color:#fff; }
.special-media.slate { background: linear-gradient(135deg,#1e293b,#334155); color:#fff; }
.special-media .mi { font-size:56px; opacity:.9; }
.special-badge { position:absolute; top:12px; left:12px; padding:.25rem .7rem; border-radius:9999px; font-size:11px; font-weight:700; letter-spacing:.04em; }

/* Certifications strip */
.cert-strip { display:flex; flex-wrap:wrap; align-items:center; gap:1rem; }
.cert-item { display:flex; align-items:center; gap:.6rem; background: var(--surface-low); border-radius:12px; padding:.7rem 1rem; }
.cert-item .mi { font-size:22px; }

/* Enriched footer */
.footer2 { background: var(--surface-low); padding: 3rem 0 1.5rem; margin-top: 3rem; color: var(--slate-muted); }
.footer2 a:not(.btn) { color: var(--slate-muted); text-decoration:none; }
.footer2 a:not(.btn):hover { color: var(--fire-red); }
.footer2-partner { background:#fff; border:1px solid var(--hairline); border-radius:12px; padding:1.25rem;
                   display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:2rem; }
.footer2-cols { display:grid; grid-template-columns: 1fr; gap:1.5rem; }
@media (min-width: 640px) { .footer2-cols { grid-template-columns: repeat(2,1fr); } }
@media (min-width: 1024px) { .footer2-cols { grid-template-columns: 2fr 1fr 1fr 1fr; } }
.footer2 h4 { font-family:'Plus Jakarta Sans'; font-weight:700; font-size:15px; color: var(--on-surface); margin:0 0 .75rem; }
.footer2 ul { list-style:none; margin:0; padding:0; }
.footer2 ul li { padding:.2rem 0; font-size:14px; }
.footer2-bottom { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.75rem;
                  border-top:1px solid var(--hairline); margin-top:2rem; padding-top:1.25rem; font-size:13px; }

/* ===================== Pagine di autenticazione (Identity) ===================== */
.auth-wrap { min-height: 70vh; display:flex; align-items:center; justify-content:center; padding: 3.5rem 1.5rem; background: var(--surface-2); }
.auth-card { width:100%; max-width: 460px; background:#fff; border:1px solid var(--hairline); border-radius:16px;
             padding:2.25rem; box-shadow: 0 20px 40px -18px rgba(15,23,42,.18); }
.auth-card.auth-wide { max-width: 560px; }
.auth-head { text-align:center; margin-bottom:1.75rem; }
.auth-icon { width:56px; height:56px; border-radius:14px; background:#FEE2E2; color:var(--fire-red);
             display:inline-flex; align-items:center; justify-content:center; margin-bottom:.85rem; }
.auth-icon .mi { font-size:28px; }
.auth-eyebrow { font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--fire-red); }
.auth-title { font-family:'Plus Jakarta Sans'; font-weight:800; font-size:1.6rem; line-height:1.15;
              color:var(--slate-navy); margin:.35rem 0 .4rem; }
.auth-sub { color:var(--on-surface-variant); font-size:14px; margin:0; }
.auth-field { margin-bottom:1.1rem; text-align:left; }
.auth-label { display:block; font-size:13px; font-weight:600; color:var(--slate-navy); margin-bottom:.4rem; }
.auth-pwd-rules { list-style:none; margin:.5rem 0 0; padding:.6rem .8rem; background:var(--surface-2);
                  border:1px solid var(--hairline); border-radius:8px; font-size:12.5px; color:var(--on-surface-variant); }
.auth-pwd-rules li { position:relative; padding-left:1.1rem; line-height:1.6; }
.auth-pwd-rules li::before { content:"•"; position:absolute; left:.2rem; color:var(--fire-red); font-weight:700; }
.auth-summary { font-weight:700; font-size:15px; text-align:center; margin-bottom:1rem; padding:.6rem .8rem;
                background:#FEE2E2; border:1px solid var(--fire-red); border-radius:8px; }
.auth-card .form-control { border-radius:8px; border:1px solid var(--hairline); padding:.7rem .85rem; font-size:15px;
                           width:100%; background:#fff; transition: border-color .12s, box-shadow .12s; }
.auth-card .form-control:focus { border-color: var(--fire-red); box-shadow: 0 0 0 3px rgba(211,47,47,.12); outline:none; }
.auth-row { display:flex; align-items:center; justify-content:space-between; gap:.75rem; flex-wrap:wrap; margin:.1rem 0 1.35rem; }
.auth-check { display:inline-flex; align-items:center; gap:.5rem; font-size:14px; color:var(--slate-muted); margin:0; cursor:pointer; }
.auth-check .form-check-input { width:16px; height:16px; margin:0; }
.auth-link { color: var(--fire-red); font-weight:600; text-decoration:none; font-size:14px; }

/* Embed ritagliato del vecchio registro_antincendio (banner/menu storici nascosti) */
.legacy-embed-card { background:#fff; border:1px solid var(--hairline); border-radius:16px; overflow:hidden;
                      box-shadow: 0 20px 40px -18px rgba(15,23,42,.18); }
.legacy-embed-wrap { position:relative; overflow-y:hidden; overflow-x:hidden; width:100%; height:320px; background:#fff; }
.legacy-embed-frame { display:block; border:0; width:880px; height:2000px; position:absolute;
                       left:50%; top:-250px; transform:translateX(-50%) scale(1); transform-origin: top center; }
.auth-link:hover { color: var(--fire-red-dark); text-decoration:underline; }
.auth-btn { width:100%; }
.auth-sep { display:flex; align-items:center; gap:.75rem; color:var(--on-surface-variant);
            font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; margin:1.4rem 0; }
.auth-sep::before, .auth-sep::after { content:""; height:1px; background:var(--hairline); flex:1; }
.auth-foot { border-top:1px solid var(--hairline); margin-top:1.6rem; padding-top:1.35rem;
             display:flex; flex-direction:column; gap:.6rem; text-align:center; }
.auth-note { font-size:13px; color:var(--on-surface-variant); text-align:center; line-height:1.5; margin:0; }
.auth-card .validation-message { display:block; margin-top:.35rem; font-size:13px; }
.auth-card .alert { border-radius:8px; font-size:14px; padding:.75rem 1rem; }
.auth-card .btn-primary { background: var(--fire-red); border-color: transparent; color:#fff; box-shadow: 0 2px 6px rgba(211,47,47,.25); }
.auth-card .btn-primary:hover { background: var(--fire-red-dark); border-color: transparent; color:#fff; }

/* Configurazione account (Manage) */
.manage-topbar { display:flex; align-items:center; justify-content:flex-end; gap:1rem; flex-wrap:wrap; margin-bottom:1rem; }
.manage-user { display:inline-flex; align-items:center; gap:.4rem; font-size:14px; font-weight:600; color:var(--slate-navy); }
.manage-user .mi { font-size:20px; color:var(--on-surface-variant); }
.manage-head { margin-bottom: 1.75rem; }
.manage-title { font-family:'Plus Jakarta Sans'; font-weight:800; font-size:clamp(1.6rem,3vw,2rem);
                letter-spacing:-.015em; color:var(--slate-navy); margin:.35rem 0 .4rem; }
.manage-grid { display:grid; grid-template-columns: 1fr; gap:1.5rem; align-items:start; }
@media (min-width: 900px) { .manage-grid { grid-template-columns: 260px 1fr; } }
.manage-nav { display:flex; flex-direction:column; gap:.25rem; background:#fff; border:1px solid var(--hairline);
              border-radius:12px; padding:.5rem; }
.manage-nav a { display:flex; align-items:center; gap:.6rem; padding:.65rem .85rem; border-radius:8px;
                color:var(--slate-muted); text-decoration:none; font-weight:600; font-size:14px; transition: all .12s; }
.manage-nav a:hover { background:var(--surface-2); color:var(--on-surface); }
.manage-nav a.active { background:#FEE2E2; color:var(--fire-red); }
.manage-nav a .mi { font-size:19px; }
.manage-content { max-width: 640px; }
.manage-content h3 { font-family:'Plus Jakarta Sans'; font-weight:700; font-size:1.25rem; color:var(--slate-navy); margin:0 0 1.25rem; }
.manage-field { margin-bottom:1.1rem; }
.manage-label { display:block; font-size:13px; font-weight:600; color:var(--slate-navy); margin-bottom:.4rem; }
.manage-content .form-control { border-radius:8px; border:1px solid var(--hairline); padding:.7rem .85rem; font-size:15px; width:100%; background:#fff; }
.manage-content .form-control:focus { border-color:var(--fire-red); box-shadow:0 0 0 3px rgba(211,47,47,.12); outline:none; }
.manage-content .form-control:disabled { background:var(--surface-2); color:var(--on-surface-variant); }
.manage-content .btn-primary { background:var(--fire-red); border-color:transparent; color:#fff; box-shadow:0 2px 6px rgba(211,47,47,.25); }
.manage-content .btn-primary:hover { background:var(--fire-red-dark); border-color:transparent; color:#fff; }
.manage-content .validation-message { display:block; margin-top:.35rem; font-size:13px; }
.manage-content .alert { border-radius:8px; font-size:14px; padding:.75rem 1rem; }

.content {
    padding-top: 1.1rem;
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}