/* ── 🟢 네이버 가격 · 재고 반영 v2 (v572) — 설계 「31 네이버 가격재고 반영 v2」 naver-sync.css 이식 · 스토어 카드 · 진행 4단계 · 탭 패널 ── */
.ns-wrap { padding:12px 0 48px; display:flex; flex-direction:column; gap:12px; }
.ns-btn { display:inline-flex; align-items:center; gap:5px; height:30px; padding:0 12px; border:1px solid var(--line); background:var(--panel); font:inherit; font-size:11.5px; font-weight:700; color:var(--accent-fg); cursor:pointer; white-space:nowrap; }
.ns-btn:hover { background:var(--accent-bg-2); }
.ns-btn--pri { border-color:var(--accent-hover); background:var(--accent); color:#f2eeda; font-weight:800; }
.ns-btn--pri:hover { background:var(--accent-hover); }
.ns-btn--sm { height:26px; padding:0 9px; font-size:11px; }
.ns-btn--ghost { border-color:transparent; background:transparent; }
.ns-btn--ghost:hover { background:var(--panel-alt); }
.ns-btn:disabled { color:var(--muted); background:var(--panel-alt); border-color:var(--line); cursor:default; }
.ns-tag { display:inline-flex; align-items:center; gap:3px; font-size:10px; font-weight:800; padding:2px 6px; white-space:nowrap; background:var(--panel-alt); color:var(--sub); }
.ns-tag--ok { background:var(--ok-bg); color:var(--ok-fg); }
.ns-tag--warn { background:var(--warn-bg); color:var(--warn-fg); }
.ns-tag--acc { background:var(--accent-bg); color:var(--accent-fg); }
.ns-tag--live { background:#2a3020; color:#e9e6cc; }
.ns-tag--live i { width:6px; height:6px; background:#9bc36b; animation:ns-blink 1.6s ease-in-out infinite; }
@keyframes ns-blink { 50% { opacity:.25; } }
.ns-mono { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:11px; }
.ns-num { text-align:right; font-variant-numeric:tabular-nums; }
.ns-seg { display:inline-flex; border:1px solid var(--line); background:var(--panel); }
.ns-seg button { height:28px; padding:0 11px; border:0; background:transparent; font:inherit; font-size:11.5px; font-weight:700; color:var(--sub); cursor:pointer; display:inline-flex; align-items:center; gap:5px; }
.ns-seg button + button { border-left:1px solid var(--line); }
.ns-seg button.is-on { background:var(--accent); color:#f2eeda; }

/* 스토어 카드 */
.ns-stores { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:10px; }
.ns-store { display:flex; flex-direction:column; border:1px solid var(--line); background:var(--panel); cursor:pointer; text-align:left; font:inherit; color:inherit; padding:0; }
.ns-store:hover { border-color:var(--accent-line); }
.ns-store.is-on { border-color:var(--accent); box-shadow:inset 0 3px 0 var(--accent); }
.ns-store__h { display:flex; align-items:center; gap:7px; padding:11px 13px 3px; }
.ns-store__h b { font-size:13.5px; letter-spacing:-.2px; }
.ns-store__m { padding:0 13px 9px; font-size:10.5px; color:var(--muted); }
.ns-slot { display:flex; align-items:center; gap:8px; padding:7px 13px; border-top:1px solid var(--line-faint); }
.ns-slot__n { flex:none; width:16px; height:16px; display:flex; align-items:center; justify-content:center; font-size:9.5px; font-weight:800; background:var(--accent-bg); color:var(--accent-fg); }
.ns-slot__n.is-miss { background:var(--warn-bg); color:var(--warn-fg); }
.ns-slot__b { flex:1; min-width:0; display:flex; flex-direction:column; }
.ns-slot__b b { font-size:11px; color:var(--text-mid); }
.ns-slot__b span { font-size:10.5px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ns-slot__b span.is-miss { color:var(--warn-fg); font-weight:700; }
.ns-store__f { display:flex; align-items:center; gap:8px; padding:9px 13px; border-top:1px solid var(--line-soft); background:var(--panel-sub); font-size:11px; color:var(--sub); margin-top:auto; }
.ns-store__f b { color:var(--text); font-variant-numeric:tabular-nums; }
.ns-store--add { align-items:center; justify-content:center; gap:4px; min-height:170px; border-style:dashed; background:var(--panel-sub); color:var(--sub); font-size:12px; font-weight:700; }
.ns-store--add .ns-in { width:100%; text-align:left; }

/* 작업 패널 */
.ns-panel { border:1px solid var(--line); background:var(--panel); }
.ns-ptabs { display:flex; align-items:stretch; gap:2px; padding:0 8px; border-bottom:1px solid var(--line-soft); background:var(--panel-sub); flex-wrap:wrap; position:sticky; top:var(--ns-top1, 0px); z-index:4; }   /* v580 — 탭 줄 틀고정 */
.ns-ptab { height:40px; padding:0 13px; border:0; background:transparent; font:inherit; font-size:12px; font-weight:700; color:var(--sub); cursor:pointer; display:inline-flex; align-items:center; gap:6px; box-shadow:inset 0 -2px 0 transparent; }
.ns-ptab:hover { color:var(--text); }
.ns-ptab.is-on { color:var(--text); font-weight:800; box-shadow:inset 0 -2px 0 var(--accent); background:var(--panel); }
.ns-ptab em { font-style:normal; font-size:10px; font-weight:800; padding:0 5px; line-height:16px; background:var(--panel-alt); color:var(--sub); }
.ns-ptab em.is-warn { background:var(--warn-bg); color:var(--warn-fg); }
.ns-ptabs__r { margin-left:auto; display:flex; align-items:center; gap:7px; font-size:11px; color:var(--muted); }
.ns-bar { display:flex; align-items:center; gap:9px; padding:10px 13px; border-bottom:1px solid var(--line-faint); flex-wrap:wrap; }
.ns-bar__t { font-size:11.5px; color:var(--sub); line-height:1.55; flex:1 1 280px; min-width:0; text-wrap:pretty; }
.ns-bar__t b { color:var(--text); }
.ns-chips { display:flex; gap:2px; flex-wrap:wrap; }
.ns-chip { height:26px; padding:0 9px; border:0; background:transparent; font:inherit; font-size:11px; font-weight:700; color:var(--sub); cursor:pointer; display:inline-flex; align-items:center; gap:5px; }
.ns-chip b { font-size:10.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.ns-chip:hover { background:var(--panel-alt); }
.ns-chip.is-on { background:var(--accent-bg); color:var(--accent-fg); }
.ns-chip.is-on b { color:var(--accent-fg); }

.ns-scroll { overflow:clip; }   /* v580 — 스크롤 통합: 표는 창 스크롤 하나로 (내부 스크롤 없음 · clip 은 스크롤 컨테이너를 만들지 않아 머리글 sticky 가 창에 붙는다) */
.ns-tb { width:100%; border-collapse:collapse; }
.ns-tb th { position:sticky; top:var(--ns-top3, 0px); z-index:2; text-align:left; font-size:10px; font-weight:800; color:var(--sub); background:var(--panel-alt); border-bottom:1px solid var(--line-soft); padding:7px 9px; white-space:nowrap; }
.ns-tb td { font-size:11.5px; color:var(--text-mid); border-bottom:1px solid var(--line-faint); padding:7px 9px; vertical-align:middle; }
.ns-tb tr.is-dim td { color:var(--muted); }
.ns-tb tr.is-hot td { background:#fffaf0; }
.ns-tb th.ns-num { text-align:right; }
.ns-up { color:var(--ok-fg); font-weight:800; }
.ns-dn { color:var(--warn-fg); font-weight:800; }
.ns-in { width:92px; height:26px; box-sizing:border-box; border:1px solid var(--line); background:var(--panel-sub); font:inherit; font-size:11.5px; padding:0 7px; color:var(--text); text-align:right; font-variant-numeric:tabular-nums; }
.ns-in:focus { outline:none; border-color:var(--accent); background:#fff; box-shadow:0 0 0 3px rgba(90,102,54,.12); }
.ns-in--code { width:110px; text-align:left; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:11px; }
.ns-foot { display:flex; align-items:center; gap:9px; padding:10px 13px; border-top:1px solid var(--line-soft); background:var(--panel-sub); flex-wrap:wrap; }
.ns-foot__t { flex:1 1 260px; min-width:0; font-size:11px; color:var(--sub); line-height:1.55; }
.ns-foot__t b { color:var(--text); }

/* 파일 준비 */
.ns-setup { display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:10px; padding:14px; }
.ns-drop { border:1.5px dashed var(--accent-line); background:var(--panel-sub); padding:16px; display:flex; flex-direction:column; gap:7px; }
.ns-drop.is-set { border-style:solid; border-color:var(--accent-line); background:var(--accent-bg-2); }
.ns-drop b { font-size:12.5px; }
.ns-drop span { font-size:11px; color:var(--sub); line-height:1.55; }

/* 반영 설정 */
.ns-cfg { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); gap:0; }
.ns-cfg__l { padding:4px 16px 14px; border-right:1px solid var(--line-faint); }
.ns-cfg__r { padding:14px 16px; background:var(--panel-sub); }
.ns-row { display:flex; align-items:center; gap:12px; padding:12px 0; border-bottom:1px solid var(--line-faint); flex-wrap:wrap; }
.ns-row:last-child { border-bottom:0; }
.ns-row__l { flex:1 1 200px; min-width:0; }
.ns-row__l b { display:block; font-size:12.5px; }
.ns-row__l span { display:block; font-size:10.5px; color:var(--muted); margin-top:2px; line-height:1.5; }
.ns-pct { display:flex; align-items:center; gap:9px; flex:1 1 260px; }
.ns-pct input[type=range] { flex:1; min-width:120px; accent-color:var(--accent); }
.ns-pct__v { flex:none; width:52px; text-align:right; font-size:20px; font-weight:800; color:var(--accent-fg); font-variant-numeric:tabular-nums; letter-spacing:-.5px; }
.ns-stepper { display:inline-flex; align-items:center; border:1px solid var(--line); background:var(--panel); }
.ns-stepper button { width:26px; height:28px; border:0; background:var(--panel); font:inherit; font-size:13px; color:var(--accent-fg); cursor:pointer; }
.ns-stepper button:hover { background:var(--accent-bg-2); }
.ns-stepper b { min-width:40px; text-align:center; font-size:12px; font-variant-numeric:tabular-nums; }
.ns-ex { width:100%; border-collapse:collapse; margin-top:8px; }
.ns-ex th, .ns-ex td { font-size:11px; padding:6px 8px; border-bottom:1px solid var(--line-faint); text-align:right; font-variant-numeric:tabular-nums; }
.ns-ex th { font-size:10px; color:var(--muted); font-weight:800; }
.ns-ex th:first-child, .ns-ex td:first-child { text-align:left; }
.ns-ck { display:inline-flex; align-items:center; gap:6px; height:28px; padding:0 10px; border:1px solid var(--line); background:var(--panel); font:inherit; font-size:11.5px; font-weight:700; color:var(--sub); cursor:pointer; }
.ns-ck i { width:13px; height:13px; border:1.5px solid var(--accent-line); display:inline-flex; align-items:center; justify-content:center; font-style:normal; font-size:9px; color:#fff; }
.ns-ck.is-on { color:var(--accent-fg); border-color:var(--accent-line); background:var(--accent-bg-2); }
.ns-ck.is-on i { background:var(--accent); border-color:var(--accent); }

/* 진행 4단계 */
.ns-steps { display:flex; align-items:stretch; gap:0; padding:10px 13px; border-bottom:1px solid var(--line-faint); flex-wrap:wrap; row-gap:6px; }
.ns-step { flex:1 1 150px; display:flex; align-items:center; gap:8px; padding:6px 10px; position:relative; color:var(--muted); }
.ns-step + .ns-step::before { content:''; position:absolute; left:-6px; top:50%; width:12px; height:1px; background:var(--line); }
.ns-step i { flex:none; width:20px; height:20px; display:flex; align-items:center; justify-content:center; font-style:normal; font-size:10.5px; font-weight:800; border:1px solid var(--line); background:var(--panel); }
.ns-step b { display:block; font-size:11.5px; }
.ns-step small { display:block; font-size:10px; color:var(--muted); }
.ns-step.is-done { color:var(--accent-fg); }
.ns-step.is-done i { background:var(--accent-bg); border-color:var(--accent-line); color:var(--accent-fg); }
.ns-step.is-on { background:#2a3020; color:#f2eeda; }
.ns-step.is-on i { background:var(--accent); border-color:var(--accent); color:#f2eeda; }
.ns-step.is-on small { color:#b9bda6; }
.ns-steps__done { align-self:center; margin-left:8px; font-size:11px; font-weight:800; color:var(--ok-fg); }
/* 업로드 확인 대기 */
.ns-pend { display:flex; align-items:center; gap:10px; padding:10px 13px; background:var(--warn-bg); border-bottom:1px solid var(--warn-line); flex-wrap:wrap; }
.ns-pend__i { flex:none; width:26px; height:26px; display:flex; align-items:center; justify-content:center; background:var(--warn); color:#fff; font-weight:800; }
.ns-pend__t { flex:1 1 300px; min-width:0; font-size:11.5px; color:var(--warn-fg); line-height:1.55; }
.ns-pend__t b { color:#8a4208; }
/* v627 — 품목 500행씩 나눈 발행 파일(part) 내려받기 단추 */
.ns-parts { display:flex; gap:6px; flex-wrap:wrap; margin-top:6px; }
.ns-parts__n { font-weight:400; opacity:.75; margin-left:2px; }
/* 매칭 출처 · 매칭률 */
.ns-via { display:inline-block; font-size:9.5px; font-weight:800; padding:1px 5px; vertical-align:1px; }
.ns-via--B { background:#e6eefb; color:#2f5da8; }
.ns-via--cat { background:var(--accent-bg); color:var(--accent-fg); }
.ns-via--file { background:var(--panel-alt); color:var(--slate); }
.ns-via--norm { background:var(--warn-bg); color:var(--warn-fg); }
.ns-via--un { background:var(--danger-bg); color:var(--danger-fg); }
.ns-rate { display:inline-block; width:46px; height:5px; background:var(--line-soft); vertical-align:2px; margin-left:4px; }
.ns-rate i { display:block; height:100%; background:var(--accent); }
.ns-rate__v { font-style:normal; font-size:10px; font-weight:800; color:var(--accent-fg); }
.ns-rate__v.is-warn { color:var(--warn-fg); }
/* 실시간 변동 로그 */
.ns-log { display:flex; gap:12px; padding:9px 13px; border-bottom:1px solid var(--line-faint); background:var(--panel-sub); flex-wrap:wrap; }
.ns-log__h { flex:none; display:flex; align-items:center; gap:6px; font-size:11px; color:var(--sub); width:100%; }
.ns-log__list { display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:4px 14px; width:100%; }
.ns-log__r { display:flex; align-items:center; gap:7px; font-size:11px; color:var(--text-mid); min-width:0; }
.ns-log__r em { flex:none; font-style:normal; font-size:10.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.ns-log__r > span:nth-child(3) { flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--sub); }
.ns-log__q { flex:none; font-size:10.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.ns-log__q b { color:var(--accent-fg); }
/* 가격 3경로 */
.ns-why { margin:12px 13px 0; font-size:11.5px; color:var(--sub); line-height:1.6; text-wrap:pretty; }
.ns-why b { color:var(--warn-fg); }
.ns-paths { display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:8px; padding:10px 13px 12px; }
.ns-path { display:flex; flex-direction:column; gap:6px; padding:11px 12px; background:var(--panel-sub); border:1px solid var(--line-soft); }
.ns-path b { font-size:12px; }
.ns-path > span:not(.ns-path__f) { font-size:11px; color:var(--sub); line-height:1.55; }
.ns-path__f { font-size:10.5px; color:var(--muted); margin-top:auto; }
/* 파일 · DB */
.ns-files { display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:10px; padding:12px 13px; }
.ns-fcard { border:1px solid var(--line-soft); background:var(--panel); padding:12px 13px; min-width:0; }
.ns-fcard__h { display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin-bottom:5px; }
.ns-fcard__h b { font-size:12.5px; }
.ns-fcard__m { font-size:11px; color:var(--sub); line-height:1.55; }
.ns-fcard__n { font-size:10.5px; color:var(--muted); margin-top:8px; line-height:1.5; }
.ns-cols { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:3px 10px; margin-top:9px; }
.ns-cols span { display:flex; align-items:center; gap:6px; font-size:11px; color:var(--text-mid); padding:3px 0; }
.ns-cols em { flex:none; min-width:18px; height:18px; padding:0 3px; display:flex; align-items:center; justify-content:center; font-style:normal; font-size:10px; font-weight:800; background:var(--panel-alt); color:var(--sub); }
.ns-cols i { margin-left:auto; font-style:normal; color:var(--ok-fg); font-weight:800; }
.ns-cols i.is-miss { color:var(--warn-fg); }
.ns-mbar { display:flex; height:8px; gap:2px; margin-top:11px; }
.ns-mbar i, .ns-mleg i { display:block; }
.ns-mbar--B { background:#6f93cf; } .ns-mbar--cat { background:var(--accent); } .ns-mbar--file { background:#8a94a3; }
.ns-mbar--norm { background:var(--warn); } .ns-mbar--un { background:#e9b98a; }
.ns-mleg { display:flex; gap:12px; flex-wrap:wrap; margin-top:7px; font-size:10.5px; color:var(--sub); }
.ns-mleg span { display:inline-flex; align-items:center; gap:5px; }
.ns-mleg i { width:9px; height:9px; }
.ns-mleg b { color:var(--text); font-variant-numeric:tabular-nums; }
.ns-pri { margin:6px 0 0; padding:0; list-style:none; display:flex; flex-direction:column; }
.ns-pri li { display:flex; align-items:center; gap:9px; padding:7px 0; border-top:1px solid var(--line-faint); }
.ns-pri li:first-child { border-top:0; }
.ns-pri li > span:nth-child(2) { flex:1; min-width:0; }
.ns-pri b { display:block; font-size:11.5px; }
.ns-pri small { display:block; font-size:10.5px; color:var(--muted); line-height:1.45; }
.ns-pri em { flex:none; font-style:normal; font-size:12px; font-weight:800; color:var(--text); font-variant-numeric:tabular-nums; }
.ns-pri .ns-via { flex:none; width:52px; text-align:center; }
/* 옵션별 예외 */
.ns-exlist { display:flex; flex-direction:column; gap:6px; width:100%; }
.ns-ex__r { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.ns-note { margin:12px 13px; padding:10px 12px; background:var(--warn-bg); color:var(--warn-fg); font-size:11.5px; line-height:1.6; display:flex; gap:10px; align-items:flex-start; flex-wrap:wrap; }
.ns-note b { color:#8a4208; }
@keyframes ns-in { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
.ns-anim { animation:ns-in .14s ease-out; }
@media (max-width: 860px) { .ns-cfg { grid-template-columns:minmax(0,1fr); } .ns-cfg__l { border-right:0; border-bottom:1px solid var(--line-faint); } }

/* ══ v580 — 스크롤 통합: 동작 바(재계산 · 업로드 파일 생성 / API 반영)는 표 위에서 헤더 · 탭 줄 아래에 틀고정 · 옵션명 링크 ══ */
.ns-foot--top { position:sticky; top:var(--ns-top2, 0px); z-index:3; border-top:0; border-bottom:1px solid var(--line-soft); }
.ns-link { color:inherit; text-decoration:none; border-bottom:1px dotted var(--line); cursor:pointer; }
.ns-link:hover { color:var(--accent-fg); border-bottom-color:var(--accent); }

/* ══ v582 — 재고 · 가격 통합 표 ══ */
.ns-chip.is-warn b { color:var(--warn-fg); }
.ns-tb--all td.ns-wrap { white-space:normal; max-width:220px; word-break:break-word; }
.ns-tb--all .ns-in { width:84px; }
.ns-tb--all th { white-space:normal; line-height:1.3; }   /* v582 — 통합 표(13열)는 머리글 줄바꿈 허용 · 셀 여백 축소로 1,400px 화면에도 맞춘다 */
.ns-tb--all th, .ns-tb--all td { padding:6px 6px; }
.ns-tb--all .ns-in { width:78px; }
.ns-tb--all input[data-disc] { width:58px !important; }
.ns-tb--all select[data-discu] { width:44px !important; }

/* ══ v584 — 통합 표 행 정렬(위 맞춤 · 상품번호/옵션번호 · 옵션명/상품명 두 줄) · 보조 줄 · 가격 수정 단위 ══ */
.ns-tb--all td { vertical-align:top; line-height:1.35; }
.ns-tb--all .ns-sub { display:block; font-size:10px; line-height:1.3; color:var(--muted); margin-top:2px; white-space:nowrap; }
.ns-tb--all .ns-sub--file { color:var(--accent-fg); font-weight:700; }
.ns-tb--all .ns-sub--file b { color:var(--accent-fg); }
.ns-pcell { display:inline-flex; align-items:center; gap:3px; }   /* v585 — 옵션 가격 입력 + «전체» */
.ns-btn--xs { height:22px; padding:0 6px; font-size:10px; font-weight:700; }
/* v624 — 상품코드 · 판매가 양식 미리보기(모달 #modal.pcp): 코드(옵션)마다 한 줄 · 상품 머리줄 · 보기 단추 · 찾기 */
.nvc-bar { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin:0 0 8px; }
.nvc-f { height:26px; padding:0 10px; border:1px solid var(--line); background:#fff; font:inherit; font-size:11.5px; font-weight:700; color:var(--sub); cursor:pointer; }
.nvc-f b { margin-left:3px; font-variant-numeric:tabular-nums; color:var(--muted); }
.nvc-f.is-on { background:var(--accent-bg); color:var(--accent-fg); border-color:var(--accent-line); }
.nvc-f.is-on b { color:var(--accent-fg); }
.nvc-f--warn b { color:var(--warn-fg); }
.nvc-f:disabled { opacity:.45; cursor:default; }
.nvc-q { height:26px; width:200px; margin-left:auto; padding:0 9px; border:1px solid var(--line); font:inherit; font-size:11.5px; }
#nvcTb { font-size:11.5px; }
#nvcTb td { vertical-align:top; padding:5px 9px; }
#nvcTb tr.nvc-g td { background:var(--panel-alt); color:var(--text); padding:6px 9px; border-top:2px solid var(--line); line-height:1.45; }
#nvcTb tr.nvc-dim td { color:var(--muted); }
#nvcTb .nvc-sub { font-size:10.5px; color:var(--muted); margin-top:1px; }
#nvcTb .nvc-no { color:var(--muted); margin-left:4px; }
#nvcTb .nvc-gi { color:var(--sub); margin-left:8px; }
/* v629 — 상품코드 · 판매가 미리보기: 상품 줄 «반영» 체크 · 끈 상품 흐리게 */
.nvc-inc { font-size:11px; font-weight:600; color:var(--sub); margin-right:6px; cursor:pointer; white-space:nowrap; }
.nvc-inc input { vertical-align:-2px; margin:0 3px 0 0; }
#nvcTb tr.nvc-off td { opacity:.42; }
