:root{--bg:#f3f6fa;--card:#fff;--ink:#14213d;--mut:#64748b;--line:#e2e8f0;--ac:#1d4ed8;--ac2:#dbeafe;--ok:#15803d;--okbg:#dcfce7;--ko:#b91c1c;--kobg:#fee2e2;--warn:#b45309;--warnbg:#fef3c7}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
#wm{position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.07}
header{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 16px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.brand{font-weight:700}
nav{display:flex;gap:4px;flex-wrap:wrap}
main{max-width:980px;margin:0 auto;padding:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
h1{font-size:1.4rem;margin:.2em 0 .6em}h2{font-size:1.15rem;margin:.2em 0 .7em}h3{font-size:1rem;margin:.2em 0 .5em}
button{font:inherit;cursor:pointer;border-radius:10px;border:1px solid var(--ac);background:var(--ac);color:#fff;padding:9px 16px}
button:hover{filter:brightness(1.08)}button:disabled{opacity:.5;cursor:default}
button.sec{background:#fff;color:var(--ac)}button.link{background:none;border:0;color:var(--ac);padding:6px 10px}
button.danger{background:#fff;color:var(--ko);border-color:var(--ko)}
button.sm{padding:4px 10px;font-size:.85rem;border-radius:8px}
input,select,textarea{font:inherit;padding:9px 11px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;max-width:100%}
textarea{width:100%;min-height:140px}
label.f{display:block;margin:10px 0 4px;font-weight:600;font-size:.92rem}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.muted{color:var(--mut)}.small{font-size:.85rem}.err{color:var(--ko);margin-top:8px}.okmsg{color:var(--ok)}
.login{max-width:380px;margin:8vh auto}.login input{width:100%}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th,td{text-align:left;padding:8px 8px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--mut);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}
.tw{overflow-x:auto}
tr.click{cursor:pointer}tr.click:hover{background:#f8fafc}
.tag{display:inline-block;padding:2px 9px;border-radius:99px;font-size:.78rem;background:var(--ac2);color:var(--ac)}
.tag.ok{background:var(--okbg);color:var(--ok)}.tag.ko{background:var(--kobg);color:var(--ko)}.tag.w{background:var(--warnbg);color:var(--warn)}.tag.g{background:#e2e8f0;color:#475569}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#cbd5e1;margin-right:6px}.dot.on{background:#16a34a}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.tabs button{background:#fff;color:var(--ink);border-color:var(--line)}.tabs button.on{background:var(--ac);color:#fff;border-color:var(--ac)}
/* test */
.noselect{user-select:none;-webkit-user-select:none}
.qhead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.bar{height:6px;background:var(--line);border-radius:9px;overflow:hidden;margin-bottom:14px}.bar>i{display:block;height:100%;background:var(--ac)}
.qtext{font-size:1.1rem;font-weight:600;margin:6px 0 14px;white-space:pre-line}
.qimg{margin:6px 0 16px}.qimg img{max-width:min(100%,420px);max-height:260px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:6px}
.opt{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;margin:8px 0;padding:12px 14px;border-radius:12px;border:1.5px solid var(--line);background:#fff;color:var(--ink);white-space:pre-line}
.opt:hover{border-color:var(--ac);filter:none}.opt.sel{border-color:var(--ac);background:var(--ac2)}
.opt b{min-width:1.4em;color:var(--ac)}
.opt.good{border-color:var(--ok);background:var(--okbg)}.opt.bad{border-color:var(--ko);background:var(--kobg)}
.nav{display:flex;justify-content:space-between;gap:8px;margin-top:14px;flex-wrap:wrap}
.pal{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.pal button{width:38px;height:38px;padding:0;background:#fff;color:var(--ink);border:1.5px solid var(--line);border-radius:9px;font-size:.9rem}
.pal button.done{background:var(--ac2);border-color:var(--ac)}.pal button.cur{outline:2px solid var(--ac);outline-offset:1px}
.big{font-size:2.4rem;font-weight:800;line-height:1}
.stat{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center}
.stat .big{font-size:1.7rem}
.rev{border-top:1px solid var(--line);padding:14px 0}
.expl{background:#f8fafc;border-left:4px solid var(--ac);padding:8px 12px;border-radius:6px;margin-top:8px;font-size:.92rem;white-space:pre-line}
dialog{border:0;border-radius:14px;padding:22px;max-width:min(560px,94vw);box-shadow:0 20px 60px rgba(0,0,0,.3)}
dialog::backdrop{background:rgba(15,23,42,.5)}
dialog input{width:100%}
pre.cred{background:#0f172a;color:#e2e8f0;padding:12px;border-radius:10px;overflow:auto;font-size:.9rem}
@media(max-width:560px){main{padding:10px}.card{padding:14px}}
@media print{header,.nav,button{display:none}}
