*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,"Malgun Gothic",sans-serif;background:#f4f5f7;color:#1f2937;font-size:14px}
a{color:#1d4ed8;text-decoration:none}a:hover{text-decoration:underline}
.top{display:flex;align-items:center;gap:18px;background:#111827;color:#e5e7eb;padding:0 18px;height:48px}
.top .brand{color:#fff;font-weight:700;font-size:16px}.top .brand small{font-weight:400;color:#9ca3af;margin-left:6px}
.top nav a{color:#d1d5db;margin-right:14px}.top nav a:hover{color:#fff}.top .who{margin-left:auto;font-size:12px;color:#d1d5db}.top .who a{color:#93c5fd}
.chip{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:700}
.m-dev{background:#fef3c7;color:#92400e}.m-prod{background:#fee2e2;color:#991b1b}.m-mock{background:#dbeafe;color:#1e40af}
main{max-width:1100px;margin:0 auto;padding:20px}
h1{font-size:20px;margin:0 0 14px}h2{font-size:16px;margin:22px 0 8px}
.card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:16px 18px;margin-bottom:16px}
.msg{padding:10px 14px;border-radius:8px;margin-bottom:12px}.msg.ok{background:#dcfce7;color:#166534}.msg.err{background:#fee2e2;color:#991b1b}
table.grid{width:100%;border-collapse:collapse;background:#fff}table.grid th,table.grid td{border-bottom:1px solid #e5e7eb;padding:6px 8px;text-align:left;font-size:13px;vertical-align:top}
table.grid th{background:#f9fafb;font-weight:600}table.grid tr:hover td{background:#f8fafc}
input[type=text],input[type=password],input[type=number],select,textarea{border:1px solid #d1d5db;border-radius:6px;padding:7px 9px;font-size:14px;font-family:inherit}
input[type=file]{font-size:13px}
button,.btn{background:#1d4ed8;color:#fff;border:0;border-radius:6px;padding:8px 14px;font-size:14px;cursor:pointer;font-family:inherit}
button.sec,.btn.sec{background:#e5e7eb;color:#111827}button.danger{background:#b91c1c}button:disabled{opacity:.5;cursor:default}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.muted{color:#6b7280;font-size:12px}
.st{display:inline-block;padding:1px 7px;border-radius:4px;font-size:12px;font-weight:600}
.st-success{background:#dcfce7;color:#166534}.st-failed{background:#fee2e2;color:#991b1b}.st-ordered{background:#fef3c7;color:#92400e}.st-locked{background:#e5e7eb;color:#374151}.st-cancelled{background:#f3f4f6;color:#6b7280;text-decoration:line-through}
/* 스캔 화면 */
.scan-box{display:flex;gap:16px;align-items:flex-end}.scan-box input.fb{font-size:26px;padding:12px 14px;width:420px;letter-spacing:1px;font-family:ui-monospace,Consolas,monospace}
#result{margin-top:16px;padding:22px;border-radius:12px;min-height:120px;background:#fff;border:2px solid #e5e7eb}
#result.r-접수{border-color:#16a34a;background:#f0fdf4}#result.r-이미접수{border-color:#9ca3af;background:#f9fafb}#result.r-실패{border-color:#dc2626;background:#fef2f2}
#result .big{font-size:34px;font-weight:800;letter-spacing:1px;margin:6px 0}#result .tag{font-size:18px;font-weight:700}
#history{margin-top:16px}#history li{font-size:13px;padding:3px 0;border-bottom:1px dashed #e5e7eb;list-style:none}
iframe#printer{position:absolute;width:0;height:0;border:0;left:-9999px}
.login{max-width:360px;margin:80px auto}.login input{width:100%;margin:6px 0 12px}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media(max-width:900px){.steps{grid-template-columns:1fr}}
pre{background:#f3f4f6;padding:10px;border-radius:6px;font-size:12px;overflow:auto;max-height:260px}
.kv td:first-child{width:220px;color:#374151}
