:root{--bg:#0b1020;--bg2:#111833;--card:#151d3b;--line:#26305a;--txt:#e8ecf8;--mut:#9aa5c8;--acc:#ff6b4a;--acc2:#ffd2c7;
--crit:#ff3b5c;--high:#ff8a3d;--med:#ffc145;--low:#57a6ff;--info:#7d89b0;--ok:#33d17a;--r:14px;
font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color-scheme:dark}
.p-sitesentry{--acc:#3dd6c6;--acc2:#c9f6f1}.p-patchpilot{--acc:#ffc145;--acc2:#fff0c9}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--txt)}
body{min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(1200px 600px at 80% -10%,color-mix(in srgb,var(--acc) 14%,transparent),transparent 60%),var(--bg)}
a{color:var(--acc)}a:hover{color:var(--acc2)}code,pre{font-family:"JetBrains Mono",ui-monospace,Menlo,monospace;font-size:.88em}
code{background:#0003;padding:.1em .35em;border-radius:5px}
h1{font-size:clamp(1.7rem,3.2vw,2.5rem);line-height:1.12;margin:.2em 0 .4em;letter-spacing:-.02em}h2{font-size:1.25rem;margin:2rem 0 .8rem}h3{font-size:1.02rem;margin:.2rem 0 .4rem}
.top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem clamp(1rem,4vw,2.5rem);border-bottom:1px solid var(--line);background:#0b1020cc;backdrop-filter:blur(8px);position:sticky;top:0;z-index:5}
.brand{display:flex;align-items:center;gap:.55rem;color:var(--txt);text-decoration:none;font-weight:800;font-size:1.15rem;letter-spacing:-.01em}
.top nav{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap}.top nav a{color:var(--mut);text-decoration:none;font-weight:500}.top nav a:hover{color:var(--txt)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;background:var(--acc);color:#0b1020!important;border:0;border-radius:10px;padding:.72rem 1.15rem;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{filter:brightness(1.08)}.btn.sm{padding:.45rem .8rem;font-size:.9rem}.btn.ghost{background:transparent;color:var(--txt)!important;border:1px solid var(--line)}.btn.ghost:hover{border-color:var(--acc)}
.install{background:transparent;border:1px solid var(--acc);color:var(--acc);border-radius:8px;padding:.35rem .7rem;font:inherit;cursor:pointer}
main{flex:1;width:100%}.wrap{max-width:1120px;margin:0 auto;padding:1.5rem clamp(1rem,4vw,2.5rem) 3rem}.narrowish{max-width:760px}
.narrow{max-width:440px;margin:3rem auto}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.4rem;margin:1rem 0}
.muted{color:var(--mut)}.small{font-size:.88rem}.center{text-align:center}.err{color:var(--crit);font-weight:600}
.flash{max-width:1120px;margin:1rem auto 0;padding:.8rem 1.1rem;border-radius:10px;background:color-mix(in srgb,var(--acc) 18%,var(--bg2));border:1px solid var(--acc)}
.form{display:grid;gap:.9rem}.form label{display:grid;gap:.35rem;font-weight:600;font-size:.92rem}
input,textarea,select{font:inherit;color:var(--txt);background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:.7rem .85rem;width:100%}
input:focus,textarea:focus,select:focus{outline:2px solid var(--acc);outline-offset:1px}input[type=file]{padding:.5rem}input[type=radio]{width:auto}
.kicker{color:var(--acc);text-transform:uppercase;letter-spacing:.12em;font-size:.78rem;font-weight:700;margin:0}
/* hero */
.hero{max-width:1200px;margin:0 auto;padding:clamp(2rem,6vw,5rem) clamp(1rem,4vw,2.5rem) 3rem;display:grid;grid-template-columns:1.15fr .85fr;gap:3rem;align-items:center}
.hero h1{font-size:clamp(2.1rem,4.6vw,3.6rem)}.hero h1 em{font-style:normal;color:var(--acc)}.lead{font-size:1.12rem;line-height:1.6;color:#c8d0ea;max-width:60ch}
.quick{display:flex;gap:.6rem;margin:1.3rem 0 .5rem;flex-wrap:wrap}.quick input{flex:1;min-width:200px}.quick.col{flex-direction:column}.quick .row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.quick .row input{flex:1}
.cta{display:flex;gap:.7rem;flex-wrap:wrap;margin:1.3rem 0 .5rem}.cta form{margin:0}
.band{max-width:1120px;margin:0 auto;padding:2.5rem clamp(1rem,4vw,2.5rem)}.band h2{font-size:1.7rem}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.feat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.2rem}
.feat h3{color:var(--acc)}.feat p{color:#c8d0ea;line-height:1.55;margin:0}
.vs{margin-top:1.5rem;font-size:1.1rem;border-left:3px solid var(--acc);padding-left:1rem;color:#dfe5f7}
.steps ol{counter-reset:s;list-style:none;padding:0;display:grid;gap:.8rem}.steps li{counter-increment:s;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1rem 1rem 3.6rem;position:relative;line-height:1.55}
.steps li::before{content:counter(s);position:absolute;left:1rem;top:.85rem;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--acc);color:#0b1020;display:grid;place-items:center;font-weight:800}
.prices .price{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.4rem;display:flex;flex-direction:column}.price.hot{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc),0 20px 50px -20px var(--acc)}
.amt{font-size:2rem;font-weight:800;margin:.2rem 0}.amt small{font-size:.9rem;color:var(--mut);font-weight:500}.price ul{padding-left:1.1rem;line-height:1.8;flex:1;color:#c8d0ea}
.narrowtext p{max-width:75ch;line-height:1.65;color:#c8d0ea}
/* hero art */
.hero-art{display:grid;place-items:center}
.radar{width:min(380px,80vw);aspect-ratio:1;border-radius:50%;position:relative;background:repeating-radial-gradient(circle,transparent 0 18%,color-mix(in srgb,var(--acc) 30%,transparent) 18% calc(18% + 1px)),radial-gradient(circle,#ff6b4a14,#0000 70%);border:1px solid color-mix(in srgb,var(--acc) 50%,transparent);overflow:hidden}
.sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,color-mix(in srgb,var(--acc) 55%,transparent),transparent 25%);animation:spin 4s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.blip{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(var(--a)) translateY(calc(var(--r) * -1.75px)) rotate(calc(var(--a) * -1));font:700 .75rem "JetBrains Mono",monospace;padding:.2rem .45rem;border-radius:6px;background:#0b1020;border:1px solid var(--ok);color:var(--ok)}
.blip.warn{border-color:var(--med);color:var(--med)}.blip.bad{border-color:var(--crit);color:var(--crit);box-shadow:0 0 18px var(--crit)}
.gradecard{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:1.6rem 1.8rem;display:flex;gap:1.6rem;align-items:center;box-shadow:0 30px 80px -30px var(--acc)}
.gradecard .g{font-size:5.5rem;font-weight:900;color:var(--acc);line-height:1;width:7rem;height:7rem;border-radius:50%;border:6px solid var(--acc);display:grid;place-items:center}
.gradecard ul,.term{list-style:none;padding:0;margin:0;line-height:2}.gradecard li::before{content:"✓ ";color:var(--ok);font-weight:800}.gradecard li.warn::before{content:"! ";color:var(--med)}.gradecard li.bad::before{content:"✕ ";color:var(--crit)}
.term{background:#060913;border:1px solid var(--line);border-radius:14px;padding:1.2rem 1.4rem;font:.86rem/1.9 "JetBrains Mono",monospace;width:100%;max-width:470px;box-shadow:0 30px 80px -30px var(--acc)}
.term p{margin:0;white-space:pre}.term span{color:var(--acc)}.term .bad{color:var(--crit)}.term .warn{color:var(--med)}.term .ok{color:var(--ok)}
/* footer */
.foot{border-top:1px solid var(--line);padding:1.5rem clamp(1rem,4vw,2.5rem);color:var(--mut);font-size:.9rem}.suite{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:.6rem}
.chip{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--line);border-radius:999px;padding:.3rem .75rem;text-decoration:none;color:var(--txt)}.chip small{color:var(--mut)}.chip.on{border-color:var(--acc)}
.ios-hint{position:fixed;bottom:1rem;left:1rem;right:1rem;background:var(--card);border:1px solid var(--acc);border-radius:12px;padding:.9rem 2.5rem .9rem 1rem;z-index:9}.ios-hint .x{position:absolute;right:.6rem;top:.5rem;background:none;border:0;color:var(--txt);font-size:1.4rem}
/* dashboard */
.head-row{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:.8rem;margin:1.2rem 0}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem}
.stat b{display:block;font-size:2rem}.stat span{color:var(--mut);font-size:.88rem}.stat.crit b{color:var(--crit)}.stat.high b{color:var(--high)}.stat.med b{color:var(--med)}.stat.kev b{color:#ff5fd2}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.8rem}
.tile{display:grid;grid-template-columns:auto 1fr;gap:.3rem .8rem;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem;text-decoration:none;color:var(--txt)}
.tile:hover{border-color:var(--acc)}.tile .grade{grid-row:span 3}.t-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.t-meta{font-size:.8rem;color:var(--mut)}
.t-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;background:var(--line)}.t-bar i{display:block}.t-bar .critical{background:var(--crit)}.t-bar .high{background:var(--high)}.t-bar .medium{background:var(--med)}.t-bar .low{background:var(--low)}
.grade{display:inline-grid;place-items:center;width:3rem;height:3rem;border-radius:12px;font-weight:900;font-size:1.5rem;color:#0b1020}.grade.sm{width:2rem;height:2rem;font-size:1rem;border-radius:8px}
.gA{background:var(--ok)}.gB{background:#9be15d}.gC{background:var(--med)}.gD{background:var(--high)}.gE,.gF{background:var(--crit)}
table.list{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.list th,.list td{text-align:left;padding:.7rem .9rem;border-bottom:1px solid var(--line)}.list th{color:var(--mut);font-weight:600;font-size:.85rem}.list tr[data-href]{cursor:pointer}.list tr[data-href]:hover td{background:#ffffff08}
.st{font-size:.8rem;padding:.15rem .5rem;border-radius:6px;background:var(--line)}.st-done{background:#33d17a22;color:var(--ok)}.st-failed{background:#ff3b5c22;color:var(--crit)}.st-running,.st-queued{background:#ffc14522;color:var(--med)}
.empty{text-align:center}
.pill{display:inline-block;font-style:normal;font-size:.78rem;font-weight:700;padding:.15rem .5rem;border-radius:999px;border:1px solid}.pill.ok{color:var(--ok)}.pill.bad{color:var(--crit)}.pill.warn{color:var(--med)}.pill.off{color:var(--mut);opacity:.6}
.modes{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.mode{display:flex!important;grid-template-columns:none;gap:.6rem!important;align-items:flex-start;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:.8rem;font-weight:400!important;cursor:pointer}
.mode:has(input:checked){border-color:var(--acc)}.mode span{display:grid;gap:.2rem}.mode b{font-size:1rem}
.code{background:#060913;border:1px solid var(--line);border-radius:10px;padding:.9rem 1rem;overflow-x:auto;white-space:pre-wrap;word-break:break-all;position:relative}
.code.copy{cursor:copy}.code.copied::after{content:"Copied";position:absolute;right:.6rem;top:.5rem;color:var(--ok);font-family:Inter,sans-serif;font-size:.8rem}
.scanning{padding:3rem 1.5rem}.spinner{width:64px;height:64px;margin:0 auto 1rem;border-radius:50%;border:5px solid var(--line);border-top-color:var(--acc);animation:spin 1s linear infinite}.prog{font-size:1.1rem;color:var(--acc2)}
/* report */
.rep-head{display:grid;grid-template-columns:auto 1fr auto;gap:1.5rem;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:1.4rem}
.ring{position:relative;width:120px;height:120px;display:grid;place-items:center;background:none!important}.ring svg{position:absolute;inset:0;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:10}.ring .bg{stroke:var(--line)}.ring .fg{stroke:var(--ok);stroke-linecap:round;stroke-dasharray:327;stroke-dashoffset:327;transition:stroke-dashoffset 1.2s ease}
.ring.gC .fg{stroke:var(--med)}.ring.gD .fg{stroke:var(--high)}.ring.gE .fg,.ring.gF .fg{stroke:var(--crit)}.ring.gB .fg{stroke:#9be15d}
.ring b{font-size:2.8rem;font-weight:900;line-height:1}.ring small{position:absolute;bottom:22px;color:var(--mut);font-size:.75rem}
.ring b{margin-top:-10px}.rep-title h1{margin:.1rem 0;word-break:break-all}.verdict{font-size:1.08rem;margin:.2rem 0}
.rep-actions{display:flex;flex-direction:column;gap:.5rem}.rep-actions form{margin:0}.rep-actions .btn{width:100%}
.sevrow{display:flex;gap:.6rem;margin:1rem 0;flex-wrap:wrap}.sev{flex:1;min-width:90px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.7rem;color:var(--mut);font:inherit;text-transform:capitalize;cursor:pointer;text-align:left}
.sev b{display:block;font-size:1.6rem;color:var(--txt)}.sev.on{border-color:var(--acc)}.s-critical b{color:var(--crit)}.s-high b{color:var(--high)}.s-medium b{color:var(--med)}.s-low b{color:var(--low)}
.kevbox{background:linear-gradient(90deg,#ff3b5c26,#ff5fd214);border:1px solid var(--crit);border-radius:12px;padding:1rem 1.2rem;line-height:1.55}
.delta{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.8rem 1.2rem;margin-top:1rem}.delta .new{color:var(--crit);margin:0 .5rem}.delta .fixed{color:var(--ok)}
.ports{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.7rem}
.port{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--info);border-radius:12px;padding:.8rem;display:grid;gap:.1rem}
.port b{font-size:1.4rem;font-family:"JetBrains Mono",monospace}.port small{color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.port em{font-style:normal;font-size:.8rem;color:var(--mut)}
.port.s-critical{border-left-color:var(--crit)}.port.s-high{border-left-color:var(--high)}.port.s-medium{border-left-color:var(--med)}.port.s-low{border-left-color:var(--low)}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.7rem;margin-top:1rem}.facts div{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.8rem 1rem;display:grid;gap:.3rem}.facts span{color:var(--mut);font-size:.82rem}
.checks{display:flex;flex-wrap:wrap;gap:.5rem}.chk{padding:.45rem .8rem;border-radius:9px;background:var(--card);border:1px solid var(--line);font-weight:600;font-size:.9rem}.chk.ok{color:var(--ok)}.chk.bad{color:var(--crit)}
.findings{list-style:none;padding:0;margin:0;display:grid;gap:.45rem}.f details{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--info);border-radius:10px}
.f.s-critical details{border-left-color:var(--crit)}.f.s-high details{border-left-color:var(--high)}.f.s-medium details{border-left-color:var(--med)}.f.s-low details{border-left-color:var(--low)}
.f summary{display:flex;gap:.6rem;align-items:center;padding:.75rem 1rem;cursor:pointer;list-style:none;flex-wrap:wrap}.f summary::-webkit-details-marker{display:none}
.ft{flex:1;min-width:220px;font-weight:600}.cvss,.where{font:.78rem "JetBrains Mono",monospace;color:var(--mut)}
.sevtag{font-size:.7rem;text-transform:uppercase;font-weight:800;letter-spacing:.05em;padding:.2rem .45rem;border-radius:5px;background:var(--line);color:var(--txt)}
.sevtag.s-critical{background:var(--crit)}.sevtag.s-high{background:var(--high);color:#0b1020}.sevtag.s-medium{background:var(--med);color:#0b1020}.sevtag.s-low{background:var(--low);color:#0b1020}
.kevtag{font-size:.7rem;font-weight:800;padding:.2rem .45rem;border-radius:5px;background:#ff5fd2;color:#0b1020;text-transform:uppercase}
.fbody{padding:0 1rem 1rem;line-height:1.6;color:#c8d0ea}.fix{background:#33d17a14;border:1px solid #33d17a44;border-radius:8px;padding:.6rem .8rem}
.f.hide{display:none}.del{margin-top:1.5rem}.linkbtn{background:none;border:0;color:var(--mut);text-decoration:underline;cursor:pointer;font:inherit}.disclaimer{margin-top:1.5rem}
.plan td{vertical-align:middle}
@media (max-width:860px){.hero{grid-template-columns:1fr}.hero-art{order:-1}.grid3{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.rep-head{grid-template-columns:1fr;text-align:center}.ring{margin:0 auto}.rep-actions{flex-direction:row;flex-wrap:wrap;justify-content:center}.rep-actions .btn{width:auto}.modes{grid-template-columns:1fr}.top nav{gap:.7rem;font-size:.9rem}.top{flex-wrap:wrap}.list th:nth-child(3),.list td:nth-child(3){display:none}}
@media print{.top,.foot,.rep-actions,.sevrow button.s-all,.del,.install,.ios-hint{display:none!important}body{background:#fff;color:#000}.card,.rep-head,.f details,.facts div,.port,.kevbox,.delta{background:#fff!important;color:#000;border-color:#ccc}.fbody{color:#222}.f details{break-inside:avoid}details>*{display:block}}
