:root{--text: #1a1a1a;--muted: #5c6470;--line: #d8dde6;--bg: #fff;--bg-soft: #f6f8fb;--primary: #3182f6;--primary-hover: #1b64da;--danger: #c62828;--danger-bg: #fff5f5;--ok: #1b7a3a;--ok-bg: #f1faf3;--warn: #c05600;--warn-bg: #fff7ed;--header: #2b2f36}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg-soft);color:var(--text)}body{font-family:Malgun Gothic,Apple SD Gothic Neo,Noto Sans KR,sans-serif;font-size:13px;line-height:1.45}a{color:var(--primary)}button,input,select{font:inherit}.app{min-height:100vh}.topbar{background:var(--header);color:#fff;height:48px;display:flex;align-items:center;padding:0 16px;gap:16px}.topbar strong{font-size:15px;letter-spacing:-.02em}.topbar .meta{margin-left:auto;font-size:12px;color:#cfd4dc}.wrap{width:min(1280px,100%);margin:0 auto;padding:16px 16px 80px}.steps{display:flex;border:1px solid var(--line);background:#fff;margin-bottom:12px}.steps button{flex:1;border:0;border-right:1px solid var(--line);background:#fff;padding:10px 6px;color:var(--muted);cursor:pointer}.steps button:last-child{border-right:0}.steps button.on{background:#eef5ff;color:var(--primary);font-weight:700}.steps button:disabled{color:#b0b6c0;cursor:default}.panel{background:#fff;border:1px solid var(--line);padding:16px 18px}h1{font-size:18px;margin:0 0 8px}h2{font-size:14px;margin:0 0 10px}.lead{color:var(--muted);margin:0 0 14px}.flow{font-weight:700;color:var(--text)}.btn{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;border:1px solid var(--line);background:#fff;cursor:pointer}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn-lg{height:44px;padding:0 22px;font-size:15px;font-weight:700}.field{margin:10px 0}.field label{display:block;margin-bottom:4px;font-weight:700}.field input,.field select{height:32px;border:1px solid var(--line);padding:0 8px;width:280px;max-width:100%}.drop{border:1px dashed #8aa4c8;background:#f8fbff;padding:36px 16px;text-align:center;cursor:pointer}.drop.on{background:#eef5ff}.chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--bg-soft);padding:6px 10px}table.data{width:100%;border-collapse:collapse}table.data th,table.data td{border:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}table.data th{background:var(--bg-soft);font-weight:700}table.data tr.failed{background:var(--danger-bg)}table.data tr.changed{background:var(--warn-bg)}table.data tr.ready{background:var(--ok-bg)}.badge{font-weight:700}.badge.failed{color:var(--danger)}.badge.changed{color:var(--warn)}.badge.ready{color:var(--ok)}.settings{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}.ai-banner{background:#eef5ff;border:1px solid #c5d8f5;color:var(--text);padding:8px 10px;margin:8px 0 12px;font-weight:700}.ai-steps{margin:0 0 12px 18px;padding:0;color:var(--text)}.ai-steps li{margin:4px 0}.ai-links{list-style:none;margin:0 0 12px;padding:0}.ai-issue{border:1px solid var(--line);padding:8px 10px;margin-bottom:6px;background:#fff}.ai-issue.on{border-color:var(--primary);background:#eef5ff}.ai-issue a{font-weight:700}.ai-issue .lead{display:block;margin:4px 0 0}.settings input[type=password],.settings select{height:32px;border:1px solid var(--line);padding:0 8px;width:240px;max-width:100%}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:12px 0}.counts span{margin-right:12px}.logbox{height:160px;overflow:auto;border:1px solid var(--line);background:#111;color:#d7e0ea;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;padding:8px;white-space:pre-wrap}.bar{height:10px;background:#e8edf4;border:1px solid var(--line)}.bar>i{display:block;height:100%;background:var(--primary);width:0}.empty{color:var(--muted);padding:20px 0}.actions{margin-top:14px;display:flex;gap:8px}.dialog-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center}.dialog{background:#fff;border:1px solid var(--line);width:min(440px,92vw);padding:18px}.dialog h2{margin:0 0 8px;font-size:16px}.dialog .lead{margin-bottom:8px}.hidden{display:none!important}@media(max-width:720px){.field input,.field select{width:100%}.steps button{font-size:11px;padding:8px 2px}}
