:root { --bg:#0d1117; --panel:#161b22; --border:#30363d; --fg:#e6edf3; --muted:#8b949e; --accent:#58a6ff;
  --A:#3fb950; --B:#a3be2a; --C:#d29922; --D:#e8590c; --F:#da3633; }
* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--fg); font:16px/1.55 system-ui, sans-serif; }
main { max-width: 880px; margin: 0 auto; padding: 2rem 1rem 4rem; }
a { color: var(--accent); }
h1 { font-size: 1.7rem; } .muted { color: var(--muted); font-size: .85rem; }
textarea, input[type=text], input[type=email] { width:100%; background:var(--panel); color:var(--fg);
  border:1px solid var(--border); border-radius:6px; padding:.6rem; font:inherit; }
textarea { font-family: ui-monospace, monospace; font-size:.85rem; min-height:180px; }
button { background:#238636; color:#fff; border:0; border-radius:6px; padding:.6rem 1.2rem; font:inherit; cursor:pointer; }
button:disabled { opacity:.5; cursor:default; }
.panel { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:1rem 1.25rem; margin:1rem 0; }
.grade-big { font-size:4rem; font-weight:800; line-height:1; }
.grade-A{color:var(--A)} .grade-B{color:var(--B)} .grade-C{color:var(--C)} .grade-D{color:var(--D)} .grade-F{color:var(--F)}
table { width:100%; border-collapse:collapse; font-size:.9rem; }
th, td { text-align:left; padding:.4rem .5rem; border-bottom:1px solid var(--border); vertical-align:top; }
.pill { display:inline-block; min-width:1.6em; text-align:center; border-radius:4px; padding:0 .3em; font-weight:700; color:#fff; }
.pill-A{background:var(--A)} .pill-B{background:var(--B)} .pill-C{background:var(--C)} .pill-D{background:var(--D)} .pill-F{background:var(--F)} .pill-x{background:var(--muted)}
.factors { color: var(--muted); font-size:.8rem; margin:.15rem 0 0; }
blockquote { border-left:3px solid var(--border); margin:1rem 0; padding:.25rem 1rem; color:var(--muted); }
footer { margin-top:3rem; border-top:1px solid var(--border); padding-top:1rem; }
.disclaimer { font-size:.85rem; color:var(--muted); }
.consent { font-size:.8rem; color:var(--muted); margin:.5rem 0; }
.notes li { color: var(--muted); font-size:.85rem; }
.doc h1 { margin-top:1rem; }
.err { color: var(--F); }
label.chk { display:flex; gap:.5rem; align-items:flex-start; }
