:root{
  --bg:#0e1116;--panel:#161b22;--border:#2d333b;--txt:#e6edf3;--muted:#8b949e;
  --acc:#58a6ff;--ok:#27c93f;--warn:#f0a500;--bad:#ff5f56;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--txt);font:15px/1.55 'Segoe UI',system-ui,sans-serif}
a{color:var(--acc)}
header{padding:22px 30px 6px}
h1{margin:0;font-size:23px}
.sub{margin:6px 0 0;color:var(--muted);max-width:1000px;font-size:13.5px}
main{display:grid;grid-template-columns:380px 1fr;gap:22px;padding:18px 30px 70px;align-items:start}
@media(max-width:900px){main{grid-template-columns:1fr}}

/* ---- widget ---- */
.cf-widget{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:18px}
.cf-check{display:flex;align-items:center;gap:12px;background:#0d1117;border:1px solid #30363d;border-radius:8px;padding:14px 16px;cursor:pointer;position:relative;user-select:none;transition:.15s}
.cf-check:hover{border-color:#484f58}
.cf-box{width:24px;height:24px;border:2px solid #6e7681;border-radius:5px;flex:0 0 auto;position:relative;transition:.2s}
.cf-check.busy .cf-box{border-color:var(--acc);border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
.cf-check.ok .cf-box{border-color:var(--ok);background:var(--ok)}
.cf-check.ok .cf-box::after{content:'';position:absolute;left:7px;top:3px;width:6px;height:11px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.cf-check.fail .cf-box{border-color:var(--bad);background:var(--bad)}
.cf-check.fail .cf-box::after{content:'✕';position:absolute;left:4px;top:-2px;color:#fff;font-size:18px}
@keyframes spin{to{transform:rotate(360deg)}}
.cf-text{font-size:14.5px}
.cf-brand{margin-left:auto;font-size:11px;color:var(--muted);text-align:right;line-height:1.1}
.cf-result{margin-top:12px;font-size:13px;min-height:18px;font-weight:600}
.cf-result.allow,.cf-result.low{color:var(--ok)}
.cf-result.mid{color:var(--warn)}
.cf-result.block{color:var(--bad)}

.actions{display:flex;gap:8px;margin:14px 0}
button{background:var(--panel);color:var(--txt);border:1px solid var(--border);padding:8px 12px;border-radius:7px;font-size:13px;cursor:pointer}
button:hover{border-color:var(--acc)}
.hintbox{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px 16px;font-size:12.5px;color:var(--muted)}
.hintbox ul{margin:6px 0 0;padding-left:18px}
.hintbox code{background:#0d1117;color:var(--warn);padding:1px 5px;border-radius:4px}
.weights{margin-top:14px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 16px;font-size:12.5px}
.weights summary{cursor:pointer;font-weight:600}
.weights table{width:100%;border-collapse:collapse;margin-top:8px}
.weights td{border-bottom:1px solid #21262d;padding:3px 4px}
.weights td:last-child{text-align:right;font-weight:600;color:var(--acc)}

/* ---- stats ---- */
.right{min-width:0}
#stats{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px}
.loading{color:var(--muted);padding:30px;text-align:center}
.score-card{display:grid;grid-template-columns:auto 1fr;gap:4px 18px;align-items:center;padding:14px 18px;border-radius:10px;margin-bottom:6px;border:1px solid var(--border)}
.score-card.allow,.score-card.low{background:#27c93f14;border-color:var(--ok)}
.score-card.mid{background:#f0a50014;border-color:var(--warn)}
.score-card.block{background:#ff5f5614;border-color:var(--bad)}
.score-card .big{grid-row:span 3;font-size:48px;font-weight:800;line-height:1}
.score-card .big span{font-size:20px;color:var(--muted)}
.score-card .lbl{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px}
.score-card .risk{font-size:13px;color:var(--muted)}
.score-card .band{font-size:16px;font-weight:700}

h3{font-size:14px;margin:20px 0 6px;border-bottom:1px solid var(--border);padding-bottom:4px}
h3 .muted{font-weight:400;font-size:12px}
.muted{color:var(--muted)}
table.ft{width:100%;border-collapse:collapse;font-size:12.5px}
table.ft th{text-align:left;color:var(--muted);font-weight:600;padding:3px 6px;border-bottom:1px solid var(--border)}
table.ft td{padding:3px 6px;border-bottom:1px solid #1b2027;vertical-align:top}
table.ft td.v{color:var(--muted);font-variant-numeric:tabular-nums;word-break:break-word;max-width:260px}
table.ft td.w,table.ft td.c{text-align:right;font-variant-numeric:tabular-nums}
table.ft td.c{font-weight:700}
tr.good td:first-child{color:var(--ok)}
tr.warn td:first-child{color:var(--warn)}
tr.bad td:first-child{color:var(--bad)}
tr.bad td.c{color:var(--bad)}
.na{font-size:12.5px;color:var(--muted);background:#0d1117;border:1px dashed var(--border);border-radius:8px;padding:10px 12px}
