:root{--bg:#0f1115;--panel:#171a21;--line:#2a2f3a;--fg:#e8eaf0;--muted:#9aa3b2;--acc:#f6821f;--good:#2fbf71;--bad:#ef5350;--warn:#f5b041;--unk:#6b7280}
*{box-sizing:border-box}html{font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--fg)}
body{margin:0}a{color:#7cb7ff}main{max-width:1100px;margin:0 auto;padding:1.5rem}
header.site{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;padding:.9rem 1.5rem;border-bottom:1px solid var(--line);background:var(--panel)}
.logo{font-weight:800;font-size:1.35rem;color:var(--fg);text-decoration:none;letter-spacing:-.02em}.logo span{color:var(--acc)}
header nav{display:flex;flex-wrap:wrap;gap:1rem}header nav a{color:var(--muted);text-decoration:none}header nav a[aria-current]{color:var(--fg);border-bottom:2px solid var(--acc)}
.hero h1{font-size:2.3rem;margin:.5rem 0}.hero p{max-width:760px;color:#c9cfdb}
.btn,button{display:inline-block;background:var(--acc);color:#111;border:0;border-radius:8px;padding:.6rem 1rem;font-weight:700;text-decoration:none;cursor:pointer;font-size:.95rem}
.btn.ghost{background:transparent;color:var(--fg);border:1px solid var(--line)}
input,select,textarea{width:100%;background:#0c0e12;color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:.55rem .7rem;font:inherit}
.tools{display:flex;gap:1rem;align-items:center;margin:1.5rem 0 .75rem}.tools input{max-width:420px}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
table.list{width:100%;border-collapse:collapse;font-size:.93rem}table.list th,table.list td{padding:.6rem .75rem;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
table.list th{background:var(--panel);cursor:pointer;user-select:none;position:sticky;top:0}table.list th::after{content:" ↕";color:var(--unk)}
table.list th[aria-sort=ascending]::after{content:" ↑";color:var(--acc)}table.list th[aria-sort=descending]::after{content:" ↓";color:var(--acc)}
table.list tbody tr:hover{background:#1b1f27}
.badge{display:inline-block;padding:.12rem .55rem;border-radius:999px;font-size:.8rem;font-weight:700;border:1px solid}
.badge.good{color:var(--good);border-color:var(--good)}.badge.bad{color:var(--bad);border-color:var(--bad)}.badge.warn{color:var(--warn);border-color:var(--warn)}
.badge.unk,.badge.na{color:var(--unk);border-color:var(--unk)}.badge.txt{color:var(--fg);border-color:var(--line)}
.muted,.meta,.crumbs{color:var(--muted)}.crumbs a{color:var(--muted)}
table.facts{width:100%;border-collapse:collapse;margin:1rem 0}table.facts th{width:30%;text-align:left;vertical-align:top;padding:.85rem;border-bottom:1px solid var(--line);color:#c9cfdb;font-weight:600}
table.facts td{padding:.85rem;border-bottom:1px solid var(--line);vertical-align:top}.val{font-weight:700}
.note{margin:.35rem 0;color:#c9cfdb;font-size:.93rem}blockquote{margin:.5rem 0;padding:.5rem .8rem;border-left:3px solid var(--acc);background:#13161c;font-size:.9rem;color:#d7dbe4}
ul.src{list-style:none;padding:0;margin:.4rem 0 0;font-size:.82rem}ul.src li{display:inline-block;margin-right:.8rem}
.kind{font-size:.72rem;padding:.05rem .4rem;border-radius:4px;background:#232834;color:var(--muted)}.kind.official{background:#1d3b2a;color:#7fe0a8}.kind.official-forum{background:#1d3340;color:#8fd0f0}.kind.community{background:#3a321b;color:#f0d38f}.kind.secondary{background:#352033;color:#e4a3dd}
.callout{background:#1c1a14;border:1px solid #4a3f1d;padding:.8rem 1rem;border-radius:8px}.legend{font-size:.85rem;color:var(--muted)}
.prose{max-width:780px}.lede{font-size:1.12rem;color:#c9cfdb}.diagram pre{background:#0c0e12;border:1px solid var(--line);padding:1rem;border-radius:8px;overflow-x:auto;font-size:.85rem}
code{background:#1b1f27;padding:.05rem .35rem;border-radius:4px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1rem 1.25rem;margin:1.25rem 0}.card label{display:block;margin:.8rem 0 .3rem;font-weight:600}
.card fieldset{border:1px solid var(--line);border-radius:8px;margin-top:.8rem}.card fieldset label{font-weight:400;margin:.3rem 0}.card input[type=radio]{width:auto;margin-right:.4rem}
.row{display:flex;gap:.6rem}.row input{flex:1}
dl.ips{display:grid;grid-template-columns:max-content 1fr;gap:.4rem 1rem}dl.ips dd{margin:0;font-family:ui-monospace,monospace;word-break:break-all}
.verdict{margin-top:1rem;padding:.8rem 1rem;border-radius:8px;border:1px solid var(--line);background:#13161c}
.hp{position:absolute;left:-9999px}.form-msg{font-size:.85rem;color:var(--muted)}
footer.site{border-top:1px solid var(--line);margin-top:3rem;padding:1.5rem;background:var(--panel)}footer .newsletter{max-width:640px;margin:0 auto 1rem}footer .newsletter label{display:block;margin-bottom:.5rem}
.fine{max-width:900px;margin:0 auto;text-align:center;font-size:.82rem;color:var(--muted)}
@media (max-width:640px){.hero h1{font-size:1.7rem}table.facts th{width:38%}}

.conf{font-size:.85rem;margin:.35rem 0}.conf-high strong,.cdot.conf-high{color:#7fe0a8}.conf-medium strong,.cdot.conf-medium{color:#8fd0f0}.conf-low strong,.cdot.conf-low{color:#f0d38f}
.cdot{font-size:.68rem;margin-left:.3rem;white-space:nowrap}
.answer{background:#121a14;border:1px solid #24432b;padding:.8rem 1rem;border-radius:8px;font-size:1.05rem}.prose.wide{max-width:980px}
ul.cols{columns:3 14em;padding-left:1.2em}
ul.cols li{margin:.2em 0;break-inside:avoid}
.filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem 1rem;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:1rem;margin:1rem 0}
.filters .f{display:flex;flex-direction:column;gap:.3rem}.filters label{font-size:.9rem;color:var(--muted)}
.filters fieldset.ports{border:0;padding:0;margin:0}.filters legend{font-size:.9rem;color:var(--muted);padding:0;margin-bottom:.3rem}
.filters .chk{display:flex;align-items:center;gap:.45rem;color:var(--fg)}.filters .chk input{width:auto;margin:0}
.filters .actions{flex-direction:row;align-items:flex-end;gap:.5rem}
.small{font-size:.85rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
table.finder td{vertical-align:top}
@media (max-width:640px){.filters{grid-template-columns:1fr 1fr}.filters .ports,.filters .actions{grid-column:1/-1}}
table.finder th{cursor:default}table.finder th::after{content:none}
