:root{--ink:#1d2024;--slate:#5d6670;--line:#d9dde2;--bg:#f4f5f6;--card:#fff;--red:#c8202e;--red-d:#a31925;--good:#1b7f55;--warn:#a86a00;--weak:#8a3b3b;--r:6px}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg)}
h1,h2,h3{margin:0 0 .5em;font-weight:600;line-height:1.25}h1{font-size:1.5rem}h2{font-size:1.15rem}h3{font-size:1rem}
a{color:var(--red-d)}p{margin:.4em 0}
.mark{font-weight:700;letter-spacing:.28em;color:var(--red);font-size:1.05rem}.mark small{display:block;letter-spacing:.3em;font-size:.6rem;color:var(--slate);font-weight:500}
.wrap{max-width:1180px;margin:0 auto;padding:20px}.narrow{max-width:560px;margin:0 auto;padding:20px}
.bar{background:var(--card);border-bottom:1px solid var(--line)}.bar .wrap{display:flex;align-items:center;gap:24px;padding-top:12px;padding-bottom:12px;flex-wrap:wrap}
.bar nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}.bar nav a{text-decoration:none;color:var(--slate);padding:6px 12px;border-radius:var(--r)}.bar nav a.on{background:var(--ink);color:#fff}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px}.card+.card{margin-top:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:820px){.grid2,.grid3{grid-template-columns:1fr}}
label{display:block;font-weight:600;margin:12px 0 4px;font-size:.9rem}label.inline{display:flex;gap:10px;align-items:flex-start;font-weight:400;margin:10px 0}
input,select,textarea{width:100%;font:inherit;padding:10px 12px;border:1px solid #b8bec6;border-radius:var(--r);background:#fff;color:var(--ink)}
input[type=checkbox]{width:20px;height:20px;margin-top:2px;flex:none}input[type=file]{padding:8px}
textarea{min-height:90px;resize:vertical}
:focus-visible{outline:3px solid #1b5fd1;outline-offset:2px}
button,.btn{font:inherit;font-weight:600;border:1px solid var(--ink);background:var(--ink);color:#fff;padding:10px 16px;border-radius:var(--r);cursor:pointer;text-decoration:none;display:inline-block}
button.red,.btn.red{background:var(--red);border-color:var(--red)}button.ghost{background:#fff;color:var(--ink)}button.danger{background:#fff;color:var(--weak);border-color:var(--weak)}
button:disabled{opacity:.5;cursor:default}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.row>*{flex:0 0 auto}.grow{flex:1 1 200px!important}
table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.82rem;color:var(--slate);font-weight:600;background:#fafbfb}
tr.click{cursor:pointer}tr.click:hover{background:#f8f2f2}
.chip{display:inline-block;padding:2px 10px;border-radius:99px;font-size:.8rem;font-weight:600;border:1px solid}
.Strong{color:var(--good);border-color:var(--good)}.Review{color:var(--warn);border-color:var(--warn)}.Weak{color:var(--weak);border-color:var(--weak)}.Scoring,.Not{color:var(--slate);border-color:var(--slate)}
.score{font-size:3rem;font-weight:700;line-height:1}.muted{color:var(--slate)}.small{font-size:.85rem}
.bars div{display:grid;grid-template-columns:110px 1fr 34px;gap:8px;align-items:center;margin:6px 0;font-size:.88rem}.bars i{height:8px;background:#e5e8eb;border-radius:4px;overflow:hidden}.bars b{display:block;height:100%;background:var(--ink)}
ul.tight{margin:.3em 0;padding-left:1.2em}.flag{background:#fff4e0;border:1px solid #e8c37a;border-radius:var(--r);padding:8px 12px;margin:8px 0;font-size:.9rem}
.err{background:#fdecec;border:1px solid #e3a3a3;color:#7a1d1d;padding:10px 12px;border-radius:var(--r);margin:10px 0}.okmsg{background:#e8f5ee;border:1px solid #9fd0b6;color:#12583a;padding:10px 12px;border-radius:var(--r);margin:10px 0}
dl{margin:0;display:grid;grid-template-columns:150px 1fr;gap:6px 12px}dt{color:var(--slate)}dd{margin:0}
pre.txt{white-space:pre-wrap;font:13px/1.5 ui-monospace,Menlo,monospace;background:#fafbfb;border:1px solid var(--line);padding:12px;border-radius:var(--r);max-height:380px;overflow:auto}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
dialog{border:1px solid var(--line);border-radius:var(--r);padding:20px;max-width:min(520px,92vw);width:100%;box-shadow:0 12px 40px rgba(0,0,0,.25)}dialog::backdrop{background:rgba(0,0,0,.45)}
dialog h2{margin-top:0}dialog label{display:block}
