*{box-sizing:border-box}
body{margin:0;font:14px/1.45 system-ui,"Malgun Gothic",sans-serif;background:#f4f5f7;color:#222}
nav{display:flex;gap:14px;align-items:center;background:#1f2937;color:#eee;padding:8px 16px;position:sticky;top:0;z-index:5}
nav a{color:#cbd5e1;text-decoration:none;padding:4px 8px;border-radius:6px}
nav a.on,nav a:hover{background:#374151;color:#fff}
nav .brand{font-weight:700;color:#fbbf24}
nav .spacer{flex:1}
nav .dim{color:#9ca3af;font-size:12px}
main{max-width:1280px;margin:16px auto;padding:0 16px}
h1{font-size:20px;margin:6px 0 12px}
h2{font-size:16px;margin:18px 0 8px;border-bottom:1px solid #ddd;padding-bottom:4px}
.card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:12px 14px;margin-bottom:14px}
.grid{display:grid;gap:12px}
.grid.c2{grid-template-columns:1fr 1fr}
.grid.c3{grid-template-columns:1fr 1fr 1fr}
.grid.c4{grid-template-columns:repeat(4,1fr)}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{border-bottom:1px solid #eee;padding:5px 8px;text-align:left;vertical-align:top}
th{background:#f9fafb;position:sticky;top:44px}
tr:hover td{background:#fafafa}
.msg{background:#ecfdf5;border:1px solid #6ee7b7;color:#065f46;padding:8px 12px;border-radius:6px;margin-bottom:12px}
.err{background:#fef2f2;border:1px solid #fca5a5;color:#991b1b;padding:8px 12px;border-radius:6px}
input[type=text],input[type=number],input[type=password],textarea,select{width:100%;padding:5px 7px;border:1px solid #cbd5e1;border-radius:5px;font:inherit}
textarea{font-family:Consolas,monospace;font-size:12px}
label{display:block;font-size:12px;color:#555;margin-top:6px}
button,.btn{background:#2563eb;color:#fff;border:0;padding:6px 12px;border-radius:6px;cursor:pointer;font:inherit;text-decoration:none;display:inline-block}
button.danger,.btn.danger{background:#dc2626}
button.ghost,.btn.ghost{background:#e5e7eb;color:#111}
.fields{display:grid;grid-template-columns:repeat(6,1fr);gap:6px 10px}
.fields label{margin:0}
pre.log{background:#0b1020;color:#d1d5db;padding:10px;border-radius:6px;font-size:12px;max-height:70vh;overflow:auto;white-space:pre-wrap}
.pill{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;background:#e5e7eb}
.pill.ok{background:#bbf7d0}.pill.bad{background:#fecaca}
.small{font-size:12px;color:#666}
.inline{display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.inline label{margin:0}
details summary{cursor:pointer;font-weight:600;margin:6px 0}
