/* ====== 데이터 추가/업로드 ====== */
.upload-view{padding:24px;max-width:1080px;margin:0 auto;}
.section-title{font-size:14px;font-weight:700;color:var(--ink-1);margin:0 0 4px;}
.section-sub{font-size:12.5px;color:var(--ink-3);margin:0 0 16px;}

.dz{border:2px dashed #C7D2E5;border-radius:16px;background:linear-gradient(180deg,#F8FAFE,#fff);padding:34px 24px;text-align:center;transition:.16s;margin-bottom:14px;}
.dz.over{border-color:var(--blue-500);background:var(--blue-50);}
.dz .ic{width:54px;height:54px;border-radius:14px;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;box-shadow:var(--sh-1);}
.dz .ic svg{width:26px;height:26px;color:var(--blue-500);}
.dz h3{font-size:15px;margin:0 0 5px;}
.dz p{font-size:12.5px;color:var(--ink-3);margin:0 0 16px;}

/* 데이터 유형 선택 */
.type-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px;}
.type-card{border:1.5px solid var(--line);border-radius:12px;padding:14px;cursor:pointer;transition:.13s;background:#fff;position:relative;}
.type-card:hover{border-color:var(--blue-400);}
.type-card.active{border-color:var(--blue-600);background:var(--blue-50);box-shadow:0 0 0 3px var(--blue-50);}
.type-card .top{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.type-card .ic{width:30px;height:30px;border-radius:8px;background:var(--blue-50);color:var(--blue-600);display:flex;align-items:center;justify-content:center;}
.type-card.active .ic{background:var(--blue-600);color:#fff;}
.type-card .ic svg{width:16px;height:16px;}
.type-card .nm{font-size:13.5px;font-weight:700;}
.type-card .sc{font-size:11px;color:var(--ink-3);line-height:1.5;}
.type-card .check{position:absolute;top:10px;right:10px;width:18px;height:18px;border-radius:50%;background:var(--blue-600);color:#fff;display:none;align-items:center;justify-content:center;}
.type-card.active .check{display:flex;}
.type-card .check svg{width:11px;height:11px;}

/* 매핑 검증 패널 */
.mapping{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:14px;}
.mapping-head{padding:11px 16px;background:var(--surface-2);border-bottom:1px solid var(--line);font-size:12.5px;font-weight:700;display:flex;align-items:center;gap:8px;}
.mapping-head svg{width:15px;height:15px;color:var(--pos);flex:0 0 auto;}
.mapping-row{display:grid;grid-template-columns:1fr 24px 1fr 110px;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px solid var(--line-soft);font-size:12.5px;}
.mapping-row:last-child{border-bottom:none;}
.mapping-row .src{color:var(--ink-1);font-weight:500;}
.mapping-row .arr{color:var(--ink-4);text-align:center;}
.mapping-row .dst{color:var(--ink-2);}
.mapping-row .st{justify-self:end;}

/* 업로드 진행 */
.up-progress{border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px;display:flex;align-items:center;gap:14px;}
.up-progress .file-ic{width:40px;height:40px;border-radius:10px;background:var(--blue-50);color:var(--blue-600);display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.up-progress .file-ic svg{width:20px;height:20px;}
.up-progress .info{flex:1;min-width:0;}
.up-progress .nm{font-size:13px;font-weight:600;}
.up-progress .bar{height:6px;border-radius:4px;background:var(--line-soft);overflow:hidden;margin-top:8px;}
.up-progress .bar i{display:block;height:100%;background:var(--blue-600);border-radius:4px;transition:width .2s;}
.up-progress .pct{font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums;}

/* 히스토리 테이블 */
.hist-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.hist-table th{text-align:left;font-size:11px;font-weight:600;color:var(--ink-3);padding:10px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);}
.hist-table th.num,.hist-table td.num{text-align:right;font-variant-numeric:tabular-nums;}
.hist-table td{padding:11px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink-2);}
.hist-table tr:hover{background:var(--blue-50);}
.hist-file{display:flex;align-items:center;gap:8px;color:var(--ink-1);font-weight:500;}
.hist-file svg{width:15px;height:15px;color:var(--ink-3);}
.hist-err{font-size:11px;color:var(--neg);margin-top:2px;}

.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px;}
.stat-card{border:1px solid var(--line);border-radius:12px;padding:15px 16px;background:#fff;}
.stat-card .lab{font-size:11.5px;color:var(--ink-3);font-weight:600;}
.stat-card .val{font-size:24px;font-weight:700;color:var(--ink-1);margin-top:5px;letter-spacing:-.5px;}
.stat-card .val span{font-size:13px;font-weight:600;color:var(--ink-3);}
.stat-card .delta{font-size:11.5px;font-weight:600;margin-top:3px;}
