*{box-sizing:border-box}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:0;color:#1f2937;background:#f8fafc}
header,main,footer{max-width:1000px;margin:0 auto;padding:16px}header h1{margin:0;font-size:24px}header p{margin:4px 0 0;color:#475569}
.card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px;margin:12px 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
label{display:block;font-size:13px;color:#334155}input,select,textarea{width:100%;padding:7px;border:1px solid #cbd5e1;border-radius:6px;font:inherit;margin-top:3px}
textarea{font-family:ui-monospace,Consolas,monospace;font-size:12px}button{padding:9px 14px;border-radius:6px;border:1px solid #cbd5e1;background:#fff;cursor:pointer;font:inherit}
button.primary{background:#2563eb;color:#fff;border-color:#2563eb}table{border-collapse:collapse;width:100%;font-size:12px}th,td{border:1px solid #e2e8f0;padding:4px 6px;text-align:left}
tr.bad td{background:#fef2f2}td.err{color:#b91c1c}.msg{padding:8px;border-radius:6px;margin-top:8px;white-space:pre-wrap}.ok{background:#ecfdf5;color:#065f46}.errbox{background:#fef2f2;color:#991b1b}
.warn{background:#fffbeb;color:#92400e}.hide{display:none}.small{font-size:12px;color:#64748b}.badge{display:inline-block;background:#fef3c7;color:#92400e;padding:1px 6px;border-radius:9px;font-size:11px}
nav a{margin-right:12px}footer{font-size:12px;color:#64748b}
.tablewrap{overflow:auto;max-height:420px;margin-top:10px}td.num{text-align:right;font-variant-numeric:tabular-nums}table{border-collapse:collapse;font-size:12px}th,td{border:1px solid #e2e8f0;padding:3px 6px;white-space:nowrap}
