:root{
  --bg:#0d1117; --panel:#161b22; --line:#30363d; --ink:#e6edf3; --mut:#8b949e;
  --acc:#58a6ff; --crit:#f85149; --warn:#d29922; --ok:#3fb950; --info:#8b949e;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:16px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}
.wrap{max-width:920px;margin:0 auto;padding:0 20px}
a{color:var(--acc)}
header{border-bottom:1px solid var(--line);padding:28px 0 32px;margin-bottom:32px}
.nav{display:flex;align-items:baseline;justify-content:space-between;gap:18px;flex-wrap:wrap}
.nav .links{display:flex;gap:4px;flex-wrap:wrap}
.nav .links a{color:var(--mut);text-decoration:none;font-size:14px;padding:6px 10px;border-radius:6px}
.nav .links a:hover{color:var(--ink);background:var(--panel)}
.nav .links a[aria-current]{color:var(--ink);background:var(--panel)}
.brand{font:700 34px/1 var(--mono);letter-spacing:-.5px;color:var(--ink);text-decoration:none}
.brand span{color:var(--acc)}
.tag{color:var(--mut);max-width:64ch;margin:14px 0 0}
.tag em{color:var(--ink);font-style:normal}
label{display:block;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--mut);margin-bottom:8px}
.row{display:flex;gap:10px;flex-wrap:wrap}
input{flex:1 1 260px;min-width:0;background:var(--panel);border:1px solid var(--line);
  color:var(--ink);border-radius:6px;padding:12px 14px;font:15px var(--mono)}
input:focus{outline:2px solid var(--acc);outline-offset:-1px;border-color:transparent}
button{background:var(--acc);color:#0d1117;border:0;border-radius:6px;padding:12px 20px;
  font-weight:600;font-size:15px;cursor:pointer}
button:disabled{opacity:.55;cursor:progress}
.hint{color:var(--mut);font-size:13px;margin:10px 0 0}
section{margin:32px 0}

.score{display:flex;align-items:baseline;gap:14px;border:1px solid var(--line);
  background:var(--panel);border-radius:8px;padding:18px 20px;margin-bottom:20px;flex-wrap:wrap}
.score b{font:700 32px/1 var(--mono)}
.score .dom{font:15px var(--mono);color:var(--mut);word-break:break-all}

.f{border:1px solid var(--line);border-left-width:4px;background:var(--panel);
  border-radius:6px;padding:14px 16px;margin-bottom:10px}
.f.critical{border-left-color:var(--crit)} .f.warning{border-left-color:var(--warn)}
.f.ok{border-left-color:var(--ok)} .f.info{border-left-color:var(--info)}
.f h3{margin:0 0 6px;font-size:15px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.sev{font:600 10px/1 var(--mono);text-transform:uppercase;letter-spacing:.1em;
  padding:4px 7px;border-radius:4px;background:#ffffff12}
.critical .sev{color:var(--crit)} .warning .sev{color:var(--warn)}
.ok .sev{color:var(--ok)} .info .sev{color:var(--info)}
.f p{margin:0;color:var(--mut);font-size:14px}
.f ul{margin:10px 0 0;padding-left:18px;font:13px var(--mono);color:var(--ink)}

h2{font-size:14px;text-transform:uppercase;letter-spacing:.08em;color:var(--mut);
  border-bottom:1px solid var(--line);padding-bottom:8px;margin:28px 0 14px}
table{width:100%;border-collapse:collapse;font:13px var(--mono)}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--mut);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.06em}
td.bad{color:var(--crit)} td.good{color:var(--ok)}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

.trace{font:13px var(--mono);border-left:2px solid var(--line);padding-left:16px;margin-left:6px}
.trace li{margin-bottom:12px;list-style:none;position:relative}
.trace li::before{content:"";position:absolute;left:-21px;top:8px;width:8px;height:8px;
  border-radius:50%;background:var(--line)}
.trace .z{color:var(--acc)} .trace .s{color:var(--mut)}

.explain dl{border-top:1px solid var(--line)}
.explain dt{font-weight:600;margin-top:18px}
.explain dd{margin:4px 0 0;color:var(--mut);font-size:14px}
footer{border-top:1px solid var(--line);margin-top:56px;padding:24px 0 48px;
  color:var(--mut);font-size:13px}
.err{border:1px solid var(--crit);background:#f8514915;border-radius:6px;padding:14px 16px;color:var(--ink)}
.spin{color:var(--mut)}

/* documentation pages */
.doc h1{font-size:24px;margin:0 0 6px}
.doc .lede{color:var(--mut);max-width:70ch;margin:0 0 28px}
.doc .lede em{color:var(--ink);font-style:normal}
pre{background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:14px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;
  font:13px/1.55 var(--mono);color:var(--ink);margin:12px 0 20px}
code{font:.92em var(--mono);background:var(--panel);border:1px solid var(--line);
  border-radius:4px;padding:1px 5px}
pre code{background:none;border:0;padding:0}
.doc dt code{font-size:14px}
.step{border:1px solid var(--line);background:var(--panel);border-radius:8px;
  padding:16px 18px;margin-bottom:14px}
.step h3{margin:0 0 8px;font-size:15px}
.step h3 .n{color:var(--acc);font:700 13px var(--mono);margin-right:8px}
.step p{margin:0 0 8px;color:var(--mut);font-size:14px}
.step pre{margin:10px 0 0}
