:root{color-scheme:dark;--bg:#07101c;--line:#203446;--cyan:#76e8dc;--text:#edf5f8;--muted:#a9bdce}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.65 system-ui,-apple-system,"Segoe UI",sans-serif}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-9999px;top:8px;background:var(--cyan);color:#061521;padding:10px 14px;font-weight:800;z-index:100}
.skip:focus{left:8px}
.site-header{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 6%;border-bottom:1px solid var(--line);position:relative;z-index:5;background:#07101ce8}
.logo{font-weight:850;letter-spacing:-1.5px;font-size:22px}
.logo span{color:var(--cyan)}
nav{display:flex;gap:28px;font-size:11px;font-weight:750;letter-spacing:1.6px}
nav a:hover,.read{color:var(--cyan)}
.hero{position:relative;min-height:740px;overflow:hidden;display:flex;align-items:center;padding:90px 9%}
.hero canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.75}
.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#07101c 8%,#07101cbb 42%,transparent 95%);pointer-events:none}
.hero-inner{position:relative;z-index:1;max-width:850px}
.eyebrow,.kicker,.meta{font-size:11px;letter-spacing:2px;color:var(--cyan);font-weight:750;margin:0}
.eyebrow:before{content:"● ";font-size:10px}
h1{font-size:clamp(56px,7.6vw,112px);line-height:1.03;letter-spacing:-5px;margin:30px 0}
em{font-style:normal;color:var(--cyan)}
.hero p{max-width:600px;font-size:19px;color:#b5c7d6}
.hero .eyebrow{font-size:11px;color:var(--cyan)}
.cta{display:inline-block;background:var(--cyan);color:#061521;padding:15px 22px;font-weight:800;letter-spacing:1px;font-size:12px;margin-top:26px;border:0;cursor:pointer;font-family:inherit}
.cta[disabled]{opacity:.6;cursor:wait}
.section{padding:110px 9%;border-top:1px solid var(--line)}
.section h2{font-size:clamp(38px,5vw,70px);line-height:1.08;letter-spacing:-2px;margin:22px 0 38px}
.lead{max-width:800px;font-size:20px;color:var(--muted)}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-top:50px}
.tile{background:#0a1929;padding:32px;min-height:230px}
.tile small{color:var(--cyan);letter-spacing:2px}
.tile h3{font-size:24px;line-height:1.2}
.tile p{color:var(--muted)}
.light{background:#edf2f5;color:#0c1d2a}
.light .kicker{color:#0f6e6f}
.light em{color:#0f6e6f}
.projects{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.project{border-bottom:1px solid #b9c9d2;padding:22px 0;font-weight:700}
.project:hover{color:#0f6e6f}
.project span:first-child{color:#0f6e6f;margin-right:20px}
.filters{display:flex;gap:8px;margin:35px 0 25px;flex-wrap:wrap}
.filters button{border:1px solid #3c5264;color:#d8e9ee;background:transparent;padding:10px 18px;cursor:pointer;font-weight:700;font-family:inherit}
.filters button.active{background:var(--cyan);color:#07101c}
.stream-title{font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:40px 0 16px}
.articles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
[hidden]{display:none!important}
.article{padding:16px;background:#102336;border:1px solid #2a465a;min-height:175px;transition:transform .25s,border-color .25s;display:flex;flex-direction:column}
.article:hover{transform:translateY(-7px);border-color:var(--cyan)}
.num{display:flex;justify-content:space-between;font-size:12px;color:#9db6c5;margin-bottom:12px}
.num time{color:var(--cyan);font-weight:700;letter-spacing:.5px}
.article h3{font-size:17px;line-height:1.3;flex:1}
.read{font-size:11px;font-weight:800;letter-spacing:1px}
.contact-form{max-width:720px;display:grid;gap:15px}
.contact-form label{display:block;font-weight:600}
.contact-form input:not([type=checkbox]),.contact-form textarea{display:block;width:100%;margin-top:6px;padding:15px;background:#12293c;border:1px solid #436276;color:#fff;font:inherit}
.contact-form .check{display:flex;gap:10px;align-items:flex-start;font-size:14px;font-weight:400}
.contact-form .check a{color:var(--cyan);text-decoration:underline}
.contact-form [aria-invalid=true]{border-color:#ff8a8a}
.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.form-result{min-height:1.5em}
.form-result.ok{color:var(--cyan)}
.form-result.err{color:#ffb4b4}
.prose{max-width:900px;border-top:0}
.prose h2{font-size:24px;letter-spacing:0;margin:36px 0 10px}
.prose p,.prose li{color:#d3e0e8}
.prose a{color:var(--cyan);text-decoration:underline}
.prose img{max-width:100%;height:auto}
.prose .kicker a{text-decoration:none}
.page-title{font-size:clamp(34px,5vw,62px);line-height:1.1;letter-spacing:-1.5px;margin:20px 0}
.muted{color:var(--muted)}
.site-footer{padding:35px 9%;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:center;color:#b3c7d4;font-size:12px}
.footer-links{display:flex;gap:18px}
.site-footer a:hover{color:var(--cyan)}
.back-top{position:fixed;right:22px;bottom:22px;z-index:950;background:var(--cyan);color:#07101c;border:0;border-radius:50%;width:50px;height:50px;display:flex;align-items:center;justify-content:center;font-size:25px;font-weight:bold;cursor:pointer;box-shadow:0 5px 20px #0007}
@media(max-width:850px){nav{gap:12px;flex-wrap:wrap}nav a{font-size:10px}.hero{min-height:660px;padding:60px 6%}h1{letter-spacing:-3px}.section{padding:70px 6%}.grid,.articles{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.site-header{padding:12px 5%;height:auto;display:block}nav{margin-top:12px;gap:13px}.hero{min-height:570px}h1{font-size:52px}.grid,.articles,.projects{grid-template-columns:1fr}.tile{min-height:160px}.section h2{font-size:40px}.site-footer{display:block}.site-footer>*{display:block;margin:8px 0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.article{transition:none}.article:hover{transform:none}}
.credentials{list-style:none;padding:0;margin:36px 0 0;display:flex;flex-wrap:wrap;gap:10px;max-width:1000px}
.credentials li{border:1px solid #2f4b5f;background:#0d1d2e;padding:8px 14px;font-size:13px;font-weight:600;color:#d8e9ee}
.form-notice{font-size:13px;color:var(--muted);line-height:1.55;max-width:720px;margin:4px 0 0}
.form-notice a,.text-link{color:var(--cyan);text-decoration:underline}
.light .text-link{color:#0f6e6f}
.cta-row{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin-top:40px}
.cta-row .cta{margin-top:0}
.breadcrumb{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}
.breadcrumb a{color:var(--cyan);text-decoration:none}
.lang-switch{font-size:13px;text-align:right;margin:0}
.toc{border:1px solid var(--line);padding:6px 22px;margin:28px 0;background:#0a1929}
.toc ol{columns:2;column-gap:40px;padding-left:18px}
.toc a{text-decoration:none}
.table-wrap{overflow-x:auto;margin:18px 0}
.prose table{border-collapse:collapse;width:100%;font-size:14px;min-width:640px}
.prose th,.prose td{border:1px solid var(--line);padding:12px;vertical-align:top;text-align:left}
.prose th{background:#0d1d2e;color:var(--cyan);font-size:12px;letter-spacing:1px;text-transform:uppercase}
.callout{border-left:3px solid var(--cyan);background:#0d1d2e;padding:16px 20px}
.small{font-size:12px}
.repos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:40px}
.repo{padding:24px;background:#102336;border:1px solid #2a465a;display:flex;flex-direction:column;transition:border-color .25s}
.repo:hover{border-color:var(--cyan)}
.repo-featured{grid-column:1/-1;background:linear-gradient(135deg,#0f2a3d,#102336);border-color:#3c6a7c}
.repo-featured h3{font-size:30px}
.repo h3{font-size:21px;margin:6px 0 8px}
.repo h3 a:hover{color:var(--cyan)}
.repo p{color:#c3d4df;margin:6px 0}
.repo .repo-meta{margin-top:auto;padding-top:12px;font-size:13px;color:var(--muted)}
.repo .repo-meta a{color:var(--cyan)}
.tags{list-style:none;padding:0;margin:10px 0;display:flex;flex-wrap:wrap;gap:6px}
.tags li{font-size:11px;letter-spacing:.5px;padding:3px 9px;border:1px solid #2f4b5f;color:var(--cyan)}
@media(max-width:850px){.repos{grid-template-columns:1fr}.toc ol{columns:1}}
.toc{display:block;font-size:14px;letter-spacing:0;font-weight:400}
.contact-form .cta{justify-self:start}
.lang-badge{color:#9db6c5}
/* 5. pulsanti dentro i testi: il colore dei link non deve coprire quello del pulsante */
.prose a.cta,.prose a.cta:visited{color:#061521;text-decoration:none}
.prose a.cta:hover{filter:brightness(1.08)}
/* Manuale NIS2 */
.promo{background:linear-gradient(135deg,#0c2233,#07101c)}
.promo-inner{display:grid;grid-template-columns:minmax(0,300px) 1fr;gap:56px;align-items:center;max-width:1100px}
.promo-inner img{width:100%;height:auto;box-shadow:0 20px 60px #000a;border:1px solid #1f3a4d}
.manual-hero{display:grid;grid-template-columns:minmax(0,380px) 1fr;gap:64px;align-items:center;margin-top:28px}
.manual-cover{margin:0}
.manual-cover img{width:100%;height:auto;box-shadow:0 24px 70px #000b;border:1px solid #1f3a4d}
.manual-intro .page-title{margin-top:12px}
.manual-facts{margin-top:22px}
.manual-body{margin-top:70px}
.manual-parts{padding-left:20px}
.manual-parts li{margin:10px 0}
.manual-parts strong{color:var(--text);display:block}
.manual-form-wrap{margin-top:70px;max-width:760px;border-top:1px solid var(--line);padding-top:50px}
.manual-form-wrap h2{font-size:clamp(30px,4vw,46px);letter-spacing:-1px;margin:0 0 10px}
.form-result .cta{margin-top:14px}
@media(max-width:850px){.promo-inner,.manual-hero{grid-template-columns:1fr;gap:32px}.promo-inner img{max-width:240px}.manual-cover img{max-width:300px}}
/* Podcast */
.player{margin:22px 0 0;max-width:720px}
.player audio{width:100%;height:48px;display:block;color-scheme:dark}
.podcast-hero .manual-cover img{aspect-ratio:1/1;object-fit:cover}
.podcast-promo .promo-inner img{aspect-ratio:1/1;object-fit:cover}
.podcast-promo h2{margin-bottom:18px}
.latest-episode{margin:70px 0 10px;max-width:900px;border:1px solid #2a465a;background:#102336;padding:28px}
.latest-episode h2{font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:0 0 18px}
.episode-title{font-size:clamp(22px,3vw,32px);line-height:1.2;margin:10px 0 0}
.episode-title a:hover{color:var(--cyan)}
.episode .meta{margin-bottom:6px}
.episode-notes{margin-top:60px;padding:0}
.episode-nav{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:60px;padding-top:24px;border-top:1px solid var(--line)}
.section h2.stream-title{font-size:13px;letter-spacing:2px;line-height:1.4;margin:60px 0 16px}
.section .latest-episode h2{font-size:13px;letter-spacing:2px;line-height:1.4;margin:0 0 18px}
/* Archivio podcast compatto */
.ep-archive{max-width:900px;border-top:1px solid var(--line)}
.ep-year{border-bottom:1px solid var(--line)}
.ep-year summary{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:16px 0;cursor:pointer;font-weight:800;font-size:20px;list-style:none}
.ep-year summary::-webkit-details-marker{display:none}
.ep-year summary span:first-child:before{content:"+";display:inline-block;width:22px;color:var(--cyan)}
.ep-year[open] summary span:first-child:before{content:"−"}
.ep-month{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--cyan);margin:14px 0 4px}
.ep-list{list-style:none;padding:0;margin:0 0 10px}
.ep-list a{display:grid;grid-template-columns:72px 1fr auto;gap:14px;align-items:baseline;padding:9px 0;border-bottom:1px solid #15283a}
.ep-list a:hover .ep-t{color:var(--cyan)}
.ep-list time{font-size:12px;color:#9db6c5;font-weight:700}
.ep-t{font-weight:600}
.ep-n{color:var(--muted);font-weight:400}
.ep-d{font-size:12px;color:var(--muted);white-space:nowrap}
@media(max-width:560px){.ep-list a{grid-template-columns:60px 1fr}.ep-d{display:none}}
