/* r3v3ng3 scan (/scan): console a sinistra, voto a destra, poi i risultati per gruppo */
#scanApp [hidden]{display:none!important}
.scan-head{padding-bottom:0}
.scan-top{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:22px;align-items:stretch}

/* console */
.scan-console{display:flex;flex-direction:column;border:1px solid var(--line2);border-radius:var(--r);background:rgba(4,9,4,.85);box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden;min-width:0}
.scan-console-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.015)}
.scan-console-bar #scanClock{margin-left:auto;font-variant-numeric:tabular-nums}
.scan-dots{display:inline-flex;gap:6px}
.scan-dots i{width:9px;height:9px;border-radius:50%;background:var(--line2)}
.scan-dots i:first-child{background:rgba(var(--accent-rgb),.55)}
.scan-log{list-style:none;margin:0;padding:14px 16px;height:300px;overflow:auto;line-height:1.75;scrollbar-width:thin;scrollbar-color:var(--line2) transparent}
.scan-log li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;animation:scanIn .18s ease-out}
.scan-log .st{float:right;padding-left:10px}
.scan-log .ok,.scan-ident .ok{color:var(--accent)}
.scan-log .warn,.scan-ident .warn{color:var(--prem)}
.scan-log .bad{color:var(--err)}
@keyframes scanIn{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
.scan-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 16px;border-top:1px solid var(--line)}
.scan-third{display:inline-flex;align-items:flex-start;gap:8px;color:var(--dim);cursor:pointer;flex:1;min-width:240px;line-height:1.45}
.scan-third input{accent-color:var(--accent);width:15px;height:15px;margin:2px 0 0;flex:none}

/* score */
.scan-score{--c:var(--dim2);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);padding:26px 22px;transition:border-color .3s,box-shadow .3s}
.scan-score[data-state=good]{--c:var(--accent)}
.scan-score[data-state=warn]{--c:var(--prem)}
.scan-score[data-state=bad]{--c:var(--err)}
.scan-score[data-state=run]{--c:var(--dim)}
.scan-score:not([data-state=idle]):not([data-state=run]){border-color:color-mix(in srgb,var(--c) 40%,var(--line));box-shadow:0 0 60px color-mix(in srgb,var(--c) 10%,transparent)}
.scan-ring{position:relative;width:184px;height:184px}
.scan-ring svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 7px color-mix(in srgb,var(--c) 45%,transparent))}
.scan-score[data-state=idle] .scan-ring svg{filter:none}
.scan-ring circle{fill:none;stroke-width:7}
/* nomi propri: .track e' gia' usato dal nastro scorrevole della home (site.css) */
.scan-ring .ring-track{stroke:var(--line)}
.scan-ring .ring-arc{stroke:var(--c);stroke-linecap:round;stroke-dasharray:327;stroke-dashoffset:327}
/* l'anello e' ruotato dall'attributo SVG; il CSS lo tocca solo durante la scansione */
.scan-score[data-state=run] .ring-g{transform-origin:60px 60px;animation:scanSpin 1.1s linear infinite}
.scan-score[data-state=run] .ring-arc{stroke-dashoffset:250!important}
@keyframes scanSpin{from{transform:rotate(-90deg)}to{transform:rotate(270deg)}}
.scan-grade{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.scan-grade b{font-size:4rem;line-height:1;font-weight:700;letter-spacing:-.04em;color:var(--c)}
.scan-grade span{font-variant-numeric:tabular-nums}
.scan-verdict{margin:0;color:var(--text);max-width:300px;line-height:1.45}
.scan-counts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%;margin:4px 0 0}
.scan-counts div{border:1px solid var(--line);border-radius:8px;padding:8px 4px}
.scan-counts dt{color:var(--dim2);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em}
.scan-counts dd{margin:2px 0 0;font-size:1.15rem;color:var(--text)}
.scan-counts div:nth-child(1) dd{color:var(--accent)}
.scan-counts div:nth-child(2) dd{color:var(--prem)}
.scan-counts div:nth-child(3) dd{color:var(--err)}

/* fingerprint id */
.scan-ident{margin-top:18px;padding:12px 16px;border:1px solid var(--line);border-radius:var(--r);background:rgba(255,255,255,.015);line-height:1.6}
.scan-ident b{letter-spacing:.06em}

/* results */
.scan-results{margin-top:34px;display:flex;flex-direction:column;gap:34px}
.scan-group header{margin-bottom:12px}
.scan-group h2{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:1.3rem;letter-spacing:-.02em;margin:0 0 4px}
.scan-group header p{margin:0}
.pill{font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;border:1px solid;border-radius:999px;padding:2px 9px}
.pill.ok{color:var(--accent);border-color:rgba(var(--accent-rgb),.35)}
.pill.warn{color:var(--prem);border-color:rgba(255,176,0,.35)}
.pill.bad{color:var(--err);border-color:rgba(255,77,106,.4)}
.scan-items{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.scan-item{--c:var(--dim2);position:relative;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);padding:14px 16px 12px 18px;min-width:0;overflow:hidden}
.scan-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--c);opacity:.85}
.scan-item.ok{--c:var(--accent)} .scan-item.warn{--c:var(--prem)} .scan-item.bad{--c:var(--err)} .scan-item.info{--c:var(--line2)}
.scan-item.bad{background:linear-gradient(90deg,rgba(255,77,106,.06),transparent 60%),var(--panel)}
.si-head{display:flex;align-items:center;gap:10px}
.si-dot{width:8px;height:8px;border-radius:50%;background:var(--c);flex:none;box-shadow:0 0 8px color-mix(in srgb,var(--c) 60%,transparent)}
.scan-item.info .si-dot{box-shadow:none}
.si-title{font-weight:600;flex:1;min-width:0}
.si-word{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--c)}
.si-val{margin:6px 0 0;font-size:.8rem;color:var(--dim);overflow-wrap:anywhere;line-height:1.5}
.si-list{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px}
.si-list .ok{color:var(--accent)} .si-list .bad{color:var(--err)}
.si-more{margin-top:8px}
.si-more summary{cursor:pointer;color:var(--dim2);list-style:none;width:max-content;max-width:100%}
.si-more summary::-webkit-details-marker{display:none}
.si-more summary::before{content:"+ ";color:var(--c)}
.si-more[open] summary::before{content:"- "}
.si-more summary:hover{color:var(--text)}
.si-more p{margin:8px 0 0;color:#b9c3cc;font-size:.88rem;line-height:1.55}
.si-more .fix b{color:var(--text)}
.scan-items.compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}
.scan-items.compact .scan-item{border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;padding:10px 0}
.scan-items.compact .scan-item::before{display:none}
.scan-items.compact .si-dot{display:none}
.scan-items.compact .si-title{font-weight:500;font-size:.92rem}
.scan-items.compact .si-val{margin-top:2px}

.scan-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:26px}
.btn.sm{height:34px;padding:0 12px;font-size:.82rem;gap:6px}
.scan-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:40px;padding:24px 26px;border:1px solid rgba(var(--accent-rgb),.3);border-radius:var(--r);background:linear-gradient(120deg,rgba(var(--accent-rgb),.08),rgba(var(--accent-rgb),.01) 60%),var(--panel)}
.scan-cta .sec-label{margin-bottom:8px}
.scan-cta p{margin:0;max-width:640px;font-size:1.04rem}
.scan-note{margin-top:34px;padding-top:16px;border-top:1px solid var(--line)}
.scan-note p{margin:0 0 6px;max-width:860px}
.scan-note a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line2);text-underline-offset:3px}
.scan-note a:hover{color:var(--accent)}

@media (max-width:900px){
  .scan-top{grid-template-columns:1fr}
  .scan-score{order:-1;flex-direction:row;flex-wrap:wrap;text-align:left;gap:18px}
  .scan-ring{width:132px;height:132px}
  .scan-grade b{font-size:3rem}
  .scan-verdict{flex:1;min-width:180px}
  .scan-items,.scan-items.compact{grid-template-columns:1fr}
  .scan-log{height:240px}
  .scan-cta{flex-direction:column;align-items:flex-start}
}
@media (max-width:520px){
  .scan-log li{white-space:normal}
  .scan-log .st{float:none;padding-left:6px}
  .scan-controls .btn{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .scan-log li{animation:none}
  .scan-score[data-state=run] .ring-g{animation:none}
}

/* passo 2: test fra siti diversi */
.scan-pending{margin:0;color:var(--prem)}
.scan-xs{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:18px;padding:20px 22px;border:1px dashed rgba(var(--accent-rgb),.45);border-radius:var(--r);background:rgba(var(--accent-rgb),.035)}
.scan-xs .sec-label{margin-bottom:8px}
.scan-xs p{margin:0 0 6px;max-width:720px;color:#b9c3cc}
.scan-xs p.dim{color:var(--dim)}
.scan-xs .btn{flex:none}
.scan-xs.done{border-style:solid;border-color:var(--line)}
.scan-item.pend{--c:var(--prem)}
.scan-item.pend .si-dot{animation:scanPulse 1.2s ease-in-out infinite}
@keyframes scanPulse{50%{opacity:.25}}
@media (max-width:900px){.scan-xs{flex-direction:column;align-items:flex-start}}
