*{box-sizing:border-box}body{margin:0;font-family:Pretendard,Malgun Gothic,system-ui,sans-serif;background:#f6f7f9;color:#1d2430}main{max-width:1280px;margin:0 auto;padding:32px 24px 64px}h1{font-size:22px;margin:0 0 6px}.sub{color:#667085;font-size:13px;margin:0 0 20px}.drop{border:2px dashed #c3c9d4;border-radius:12px;background:#fff;padding:36px 20px;text-align:center;cursor:pointer;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,background .15s}.drop.on,.drop:hover{border-color:#2f6fed;background:#f3f7ff}.drop .file{color:#667085;font-size:13px}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin:20px 0 12px}.stat{background:#fff;border:1px solid #e4e7ec;border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}.stat span{color:#667085;font-size:12px}.stat strong{font-size:22px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.issues{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.issue{border-radius:8px;padding:10px 12px;font-size:13px;border:1px solid;margin-top:12px}.issues .issue{margin-top:0}.issue.error{background:#fef3f2;border-color:#fecdca;color:#912018}.issue.warn{background:#fffaeb;border-color:#fedf89;color:#93370d}.issue.info{background:#f0f9ff;border-color:#b9e6fe;color:#065986}.issue .rows{opacity:.75}.actions{margin:12px 0 16px}button{background:#2f6fed;color:#fff;border:0;border-radius:8px;padding:11px 18px;font-size:14px;font-weight:600;cursor:pointer}button:hover{background:#2559c9}.tableWrap{overflow:auto;max-height:560px;background:#fff;border:1px solid #e4e7ec;border-radius:10px}table{border-collapse:collapse;font-size:12px;white-space:nowrap}td,th{border-bottom:1px solid #eef0f3;padding:6px 10px;text-align:left}th{position:-webkit-sticky;position:sticky;top:0;background:#f2f4f7;font-weight:600;z-index:1}td.n{color:#98a2b3;text-align:right}@media (max-width:720px){.stats{grid-template-columns:repeat(2,1fr)}}