*{box-sizing:border-box}body{margin:0;font-family:"Malgun Gothic","Apple SD Gothic Neo",sans-serif;font-size:14px;color:#1f2933;background:#f4f6f8}
a{color:#1d5fbf;text-decoration:none}a:hover{text-decoration:underline}
.top{display:flex;align-items:center;background:#1e293b;color:#fff;padding:0 16px;height:48px;gap:16px}
.top .brand{font-weight:700;font-size:16px}.top .who{margin-left:auto;font-size:13px;opacity:.85}.top a{color:#cbd5e1}
.layout{display:flex;min-height:calc(100vh - 48px)}
nav.side{width:190px;background:#fff;border-right:1px solid #e2e8f0;padding:10px 0;flex-shrink:0}
nav.side a{display:block;padding:8px 18px;color:#334155}nav.side a.on{background:#e0ecff;color:#1d4ed8;font-weight:700}
nav.side .grp{font-size:11px;color:#94a3b8;padding:12px 18px 4px}
main{flex:1;padding:18px 24px;min-width:0}
h1{font-size:20px;margin:0 0 14px}h2{font-size:16px;margin:22px 0 8px}
.card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px 16px;margin-bottom:14px}
.kpis{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:14px}.kpi{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;min-width:130px}
.kpi .v{font-size:24px;font-weight:700}.kpi .l{font-size:12px;color:#64748b}
table{width:100%;border-collapse:collapse;background:#fff}th,td{border-bottom:1px solid #e5e7eb;padding:6px 8px;text-align:left;vertical-align:top}
th{background:#f8fafc;font-size:12px;color:#475569;white-space:nowrap}td.n,th.n{text-align:right}
.badge{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;background:#e2e8f0}
.s-NEW{background:#fef3c7}.s-MATCHED{background:#dbeafe}.s-CJ_REQUESTED{background:#e0e7ff}.s-INVOICED{background:#ede9fe}
.s-SHIPPED{background:#dcfce7}.s-CANCELED{background:#fee2e2;color:#b91c1c}.s-HOLD{background:#ffedd5}.s-RETURNED{background:#f1f5f9}
.ok{color:#15803d}.err{color:#b91c1c}.muted{color:#64748b;font-size:12px}
.flash{padding:9px 12px;border-radius:6px;margin-bottom:10px}.flash.ok{background:#dcfce7;color:#14532d}.flash.err{background:#fee2e2;color:#7f1d1d}
.warn{background:#fff7ed;border:1px solid #fdba74;color:#9a3412;padding:9px 12px;border-radius:6px;margin-bottom:10px}
form.inline{display:inline}input,select,textarea{font:inherit;padding:5px 7px;border:1px solid #cbd5e1;border-radius:5px}
button,.btn{font:inherit;padding:6px 12px;border:0;border-radius:5px;background:#2563eb;color:#fff;cursor:pointer;display:inline-block}
button.sec,.btn.sec{background:#e2e8f0;color:#1e293b}button.danger{background:#dc2626}button:disabled{background:#94a3b8;cursor:not-allowed}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.login{max-width:340px;margin:12vh auto;background:#fff;padding:26px;border-radius:10px;border:1px solid #e2e8f0}
.login input{width:100%;margin-bottom:10px;padding:9px}.login button{width:100%;padding:10px}
#scanbox{font-size:26px;padding:12px;width:100%}
#scanres{margin-top:14px;padding:26px;border-radius:10px;font-size:22px;font-weight:700;min-height:90px}
#scanres.ok{background:#16a34a;color:#fff}#scanres.stop{background:#dc2626;color:#fff;animation:blink .4s 4}
#scanres.dup{background:#f59e0b;color:#fff}#scanres.idle{background:#e2e8f0;color:#475569}
@keyframes blink{50%{opacity:.4}}
.pager a{margin-right:8px}code{background:#f1f5f9;padding:1px 4px;border-radius:3px}
table.wide td, table.wide th{white-space:nowrap;font-size:12px;padding:5px 6px}
/* ---- 2026-11-12 사방넷식 레이아웃 ---- */
body{font-size:13px;background:#eef1f5}
.top{background:#203a5c;height:42px}.top .brand{color:#fff;font-size:17px;letter-spacing:.5px}.top .brand:hover{text-decoration:none}
.top .sub{color:#9fb4cf;font-size:12px}
.layout{min-height:calc(100vh - 42px)}
nav.side{width:200px;background:#f7f9fb;border-right:1px solid #cfd8e3;padding:0 0 20px;overflow-y:auto}
nav.side a.home{display:block;padding:10px 14px;font-weight:700;background:#fff;border-bottom:1px solid #cfd8e3;color:#203a5c}
nav.side a.home.on{background:#dbe7f7}
.mg .mh{background:#3c6496;color:#fff;padding:8px 12px;font-weight:700;cursor:pointer;user-select:none;border-bottom:1px solid #2f527e}
.mg .mh:hover{background:#4672a8}.mg .ar{display:inline-block;width:12px;transition:transform .15s}
.mg.closed .ar{transform:rotate(-90deg)}.mg.closed .mi{display:none}
.mg .mi a{display:block;padding:6px 14px 6px 24px;color:#283b52;border-bottom:1px solid #e7ecf2;font-size:13px}
.mg .mi a:hover{background:#e8f0fb;text-decoration:none}.mg .mi a.on{background:#dbe7f7;color:#0b4aa2;font-weight:700;border-left:3px solid #0b4aa2;padding-left:21px}
.mtools{padding:10px 14px;font-size:11px;color:#94a3b8}.mtools a{color:#64748b}
.mainwrap{flex:1;min-width:0;display:flex;flex-direction:column}
.tabs{display:flex;flex-wrap:wrap;gap:2px;background:#dfe5ec;padding:5px 8px 0;border-bottom:2px solid #3c6496;min-height:33px}
.tab{background:#f3f5f8;border:1px solid #c3cdd9;border-bottom:0;padding:5px 8px 5px 12px;border-radius:5px 5px 0 0;color:#334155;font-size:12px;white-space:nowrap}
.tab:hover{text-decoration:none;background:#fff}.tab.on{background:#3c6496;color:#fff;border-color:#3c6496;font-weight:700}
.tab .x{margin-left:8px;color:#94a3b8;padding:0 2px}.tab .x:hover{color:#dc2626}.tab.on .x{color:#cbd5e1}
.tab.tball{margin-left:auto;background:transparent;border:0;color:#64748b}
main{padding:14px 18px}
h1{font-size:17px;color:#203a5c;border-left:4px solid #3c6496;padding-left:8px}
.sbar{background:#fff;border:1px solid #cfd8e3;margin-bottom:10px}
table.sbt{background:#fff}table.sbt th{width:90px;background:#eef2f7;color:#334155;font-size:12px;border-bottom:1px solid #dfe5ec;vertical-align:middle}
table.sbt td{border-bottom:1px solid #dfe5ec;vertical-align:middle}
.sbconds{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.sbconds label{font-size:12px;color:#475569}
.pbtns{margin-left:8px}.pb{background:#fff;color:#334155;border:1px solid #cbd5e1;padding:3px 9px;font-size:12px;border-radius:3px;margin-right:2px}
.pb.on{background:#3c6496;color:#fff;border-color:#3c6496}.sbq{width:200px}.sbgo{background:#203a5c;padding:5px 18px}
.lhead{display:flex;align-items:center;justify-content:space-between;background:#f7f9fb;border:1px solid #cfd8e3;border-bottom:0;padding:6px 10px;font-size:12px}
.lhead .cnt{color:#c2410c;font-size:14px}.lright{display:flex;gap:12px;align-items:center}.xl{display:flex;gap:4px;align-items:center}
button.sm,.btn.sm{padding:3px 9px;font-size:12px}
table.lst{border:1px solid #cfd8e3}table.lst th{background:#e9eef5;border-right:1px solid #dfe5ec;text-align:center}
table.lst td{border-right:1px solid #eef1f5;font-size:12px}table.lst tr:hover td{background:#f5f9ff}
th.ck,td.ck{width:28px;text-align:center}
.pgr{text-align:center;padding:10px 0;font-size:13px}.pgr a,.pgr b{display:inline-block;min-width:26px;padding:3px 6px;margin:0 1px;border:1px solid #cfd8e3;background:#fff;border-radius:3px}
.pgr b{background:#3c6496;color:#fff;border-color:#3c6496}.pgr .muted{margin-left:10px}
.smp{display:inline-block;background:#fde68a;color:#92400e;font-size:11px;padding:0 5px;border-radius:3px;font-weight:700;margin-left:3px}
.prep{display:inline-block;background:#e2e8f0;color:#64748b;font-size:11px;padding:2px 7px;border-radius:3px}
.dash3{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.btnbar{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.dtab{display:flex;gap:0;margin-bottom:10px;border-bottom:2px solid #3c6496}.dtab a{padding:7px 16px;background:#eef2f7;border:1px solid #cfd8e3;border-bottom:0;margin-right:2px;color:#334155}
.dtab a.on{background:#3c6496;color:#fff;font-weight:700}
.tbar{display:flex;align-items:baseline;gap:12px;background:#fff;border:1px solid #cfd8e3;padding:8px 12px;margin-bottom:10px}.tbar h1{margin:0}
.flow{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:10px}.fs{padding:4px 10px;border:1px solid #cfd8e3;border-radius:14px;background:#fff;color:#334155;font-size:12px}
.fs.on{outline:2px solid #3c6496;font-weight:700}.fs b{color:#c2410c;margin-left:3px}.fa{color:#94a3b8}
.sku{font-weight:700;color:#0f766e}a.kpi{color:inherit}a.kpi:hover{text-decoration:none;border-color:#3c6496}
.bars{display:flex;align-items:flex-end;gap:6px;overflow-x:auto;min-height:200px}.bar{text-align:center;font-size:11px;min-width:38px}
.bb{background:#4f8fdc;border-radius:2px 2px 0 0;margin:0 auto;width:26px}.bv{color:#475569}.bl{color:#334155}
.band{display:flex;align-items:center;gap:30px;background:#4f8fdc;color:#fff;padding:14px 20px;border-radius:4px;margin-bottom:12px;flex-wrap:wrap}
.band .t{font-size:18px;font-weight:700}.band a{color:#fff}.band .it{font-size:13px}.band .it b{font-size:24px;margin:0 3px}
.bx{background:#fff;border:1px solid #cfd8e3;padding:12px 14px}.bx h3{margin:0 0 8px;font-size:14px;color:#203a5c}
.bx .ln{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px dashed #e5e7eb}.bx .ln b{color:#1d4ed8}
@media print{nav.side,.tabs,.sbar,.top,.lhead,.pgr{display:none}}
.alertbar{display:flex;gap:26px;align-items:center;background:#fff;border:1px solid #cfd8e3;padding:9px 14px;margin-bottom:10px;flex-wrap:wrap}.alertbar a{color:#334155}.alertbar a b{color:#dc2626}
/* ---- 2026-11-12 촘촘하게 (대표 피드백: 사방넷처럼 한 화면에 많이) ---- */
body{font-size:12px}
.top{height:34px}.top .brand{font-size:15px;cursor:pointer}.top .brand:hover{color:#bfdbfe}
.layout{min-height:calc(100vh - 34px)}
nav.side{width:172px}nav.side a.home{padding:6px 12px}
.mg .mh{padding:5px 10px;font-size:12px}.mg .mi a{padding:3px 10px 3px 20px;font-size:12px}.mg .mi a.on{padding-left:17px}
.tabs{padding:3px 6px 0;min-height:26px}.tab{padding:3px 6px 3px 9px;font-size:11px}
main{padding:8px 10px}
h1{font-size:14px;margin:0 0 6px}h2{font-size:13px;margin:10px 0 5px}
.tbar{padding:5px 10px;margin-bottom:6px}.card{padding:8px 10px;margin-bottom:8px}
th,td{padding:3px 5px}th{font-size:11px}
table.lst td{font-size:11.5px}table.wide td,table.wide th{padding:3px 4px;font-size:11px}
input,select,textarea{padding:2px 5px;font-size:12px}button,.btn{padding:3px 9px;font-size:12px}
button.sm,.btn.sm{padding:1px 7px;font-size:11px}
table.sbt th{width:80px;padding:4px 6px}table.sbt td{padding:4px 6px}.sbconds{gap:4px 10px}.pb{padding:1px 7px;font-size:11px}
.lhead{padding:4px 8px}.pgr{padding:6px 0;font-size:12px}.pgr a,.pgr b{min-width:22px;padding:1px 5px}
.flow{margin-bottom:6px}.fs{padding:2px 8px;font-size:11px}.dtab{margin-bottom:6px}.dtab a{padding:4px 12px}
.kpis{gap:6px;margin-bottom:8px}.kpi{padding:6px 10px;min-width:100px}.kpi .v{font-size:17px}.kpi .l{font-size:11px}
.flash,.warn{padding:5px 9px;margin-bottom:6px}
/* 대시보드 */
.dash .alertbar{padding:5px 10px;gap:18px;margin-bottom:6px}
.dash .band{padding:6px 12px;gap:22px;margin-bottom:6px;border-radius:3px}.dash .band .t{font-size:14px}.dash .band .it{font-size:12px}.dash .band .it b{font-size:17px}table.tt td:first-child{width:22px}table.tt td.n:last-child{width:58px}
.kkbar{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid #cfd8e3;padding:5px 10px;margin-bottom:6px}
.kkres{background:#fff;border:1px solid #3c6496;padding:6px 10px;margin-bottom:6px}
.kkhead{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:5px}.kkhead .kv b{color:#1d4ed8}
.kkgrid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:10px}.kkres .sub{font-weight:700;margin-bottom:3px;display:flex;gap:6px;align-items:center}
tr.tot td{background:#f1f5f9;font-weight:700}
.cards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin-bottom:6px}
.cards.c4{grid-template-columns:repeat(4,minmax(0,1fr))}.cards.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.cards .c2{grid-column:span 2}
.bx{padding:6px 9px}.bx h3{font-size:12px;margin:0 0 4px;display:flex;align-items:center;gap:4px}.bx .fr{margin-left:auto;font-size:11px;font-weight:400}
.bx .ln{padding:2px 0}
.bars.sm{min-height:100px;gap:2px}.bars.sm .bar{min-width:20px;flex:1}.bars.sm .bb{width:70%;max-width:22px}.bars.sm .bv,.bars.sm .bl{font-size:10px}
table.tt{width:100%;table-layout:fixed}table.tt td{padding:2px 4px;font-size:11px;border-bottom:1px solid #f1f5f9}table.tt td.nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#475569}
table.tt.tl td:first-child{width:92px}
.bars.sm{overflow:hidden}.bars.sm .bar{min-width:0}
.kkbar{padding:14px 14px;gap:12px}.kkbar .kkt{font-size:16px;color:#203a5c}.kkbar .kkin{width:240px;height:34px;font-size:15px;padding:4px 10px}
.kkbar .kkgo{height:34px;padding:0 20px;font-size:14px;background:#203a5c}.kkbar .btn{height:34px;line-height:28px}
table.grid30 th,table.grid30 td{padding:2px 4px;font-size:11px;white-space:nowrap}table.grid30 td.opt{max-width:140px;overflow:hidden;text-overflow:ellipsis}
table.tt td.kkc{width:58px;font-size:10.5px;color:#64748b;white-space:nowrap}table.tt td.n:last-child{width:52px}
.cards.c4 .bx{padding:5px 7px}table.tt td{padding:1px 3px}
.hgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.hgrid .bx{max-height:360px;overflow-y:auto}
td.opts{white-space:normal!important;max-width:320px;font-size:11px}
.kkwrap{overflow-x:auto;border:1px solid #cfd8e3}
table.kkt{width:100%;border:0;border-collapse:separate;border-spacing:0}table.kkt th,table.kkt td{padding:2px 5px;font-size:11px;white-space:nowrap;border-bottom:1px solid #e5e7eb}
table.kkt th{background:#e9eef5;line-height:1.15}table.kkt.mon td.n{min-width:34px}table.kkt.day td.n:nth-child(n+8){min-width:30px}
table.kkt .fx1{position:sticky;left:0;background:#fff;z-index:1;min-width:92px}table.kkt .fx2{position:sticky;left:92px;background:#fff;z-index:1;max-width:150px;overflow:hidden;text-overflow:ellipsis;border-right:2px solid #cfd8e3}
table.kkt th.fx1,table.kkt th.fx2{background:#e9eef5;z-index:2}table.kkt tr.tot td{background:#f1f5f9}table.kkt tr.tot .fx1,table.kkt tr.tot .fx2{background:#f1f5f9}
table.kkt .sep{border-left:2px solid #94a3b8;background-color:#f8fafc}table.kkt th.sep{background:#dbe4ef}
table.kkt .smp{margin-left:2px;padding:0 3px;font-size:10px}
.pd{display:grid;grid-template-columns:320px minmax(0,1fr);gap:8px;margin-bottom:6px}
.pd-photo img.main{width:100%;max-height:300px;object-fit:contain;border:1px solid #e2e8f0;background:#fafafa}
.pd-photo .noimg{height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f1f5f9;color:#64748b;border:1px dashed #cbd5e1}
.thumbs{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.thumbs .th{display:flex;flex-direction:column;align-items:center;gap:2px}.thumbs img{width:56px;height:56px;object-fit:cover;border:1px solid #e2e8f0}
table.kv2 th{width:130px;background:#f1f5f9;font-size:11px;text-align:left}table.kv2 td{font-size:12px}
.req{color:#dc2626;font-size:10px;font-weight:700}.kkb{color:#0b4aa2}
table.skut td{font-size:11.5px}table.skut td.nm2{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}input.empty{background:#fff7ed;border-color:#fdba74}
.role-admin{background:#1e3a8a;color:#fff}.role-staff{background:#e2e8f0;color:#334155}tr.deleted td{background:#fef2f2;color:#94a3b8}
.xlb{display:inline-flex;align-items:center;gap:4px;border:1px solid #16a34a;border-radius:4px;padding:1px 4px 1px 2px;background:#f0fdf4}
.xlic{display:inline-block;background:#16a34a;color:#fff;font-weight:900;font-size:11px;width:17px;height:17px;line-height:17px;text-align:center;border-radius:3px}
.xlb b{color:#166534;font-size:11.5px}.xlbtn{background:#fff;color:#166534;border:1px solid #86efac;padding:1px 7px;font-size:11px;border-radius:3px;cursor:pointer}
.xlbtn:hover{background:#dcfce7;text-decoration:none}.mapbar{background:#eef2ff;padding:1px 5px;border-radius:4px}.m1{display:inline-flex;gap:2px;margin-right:4px}
.s-CANCEL_REQ{background:#fecaca;color:#991b1b}.s-RETURN_REQ{background:#fde68a}.s-RETURNING{background:#fed7aa}.s-RETURN_HOLD{background:#e9d5ff}
.memobox{width:100%;min-height:110px;font-size:13px;line-height:1.5}.memo{border-bottom:1px solid #eef1f5;padding:5px 0}.mh2{font-size:11px;margin-bottom:2px}
.sbar.wide .sbq{width:340px}
.sbq{width:280px}
#scanres{margin-top:10px;padding:18px 24px;border-radius:10px;min-height:120px}#scanres .big{font-size:44px;font-weight:900;line-height:1.2}#scanres .why{font-size:20px;margin-top:6px}
.r-idle{background:#e2e8f0;color:#475569}.r-ok{background:#16a34a;color:#fff}.r-cancel{background:#dc2626;color:#fff;animation:blink .4s 4}.r-bad{background:#f59e0b;color:#1f2937}.r-wait{background:#2563eb;color:#fff}
#progress tr.done td{background:#dcfce7}
.dgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:8px}.dgrid tr.sel td{background:#e0ecff}
.grey{color:#94a3b8}textarea.grey{color:#94a3b8}table.inbox{table-layout:fixed}table.inbox td{overflow:hidden;text-overflow:ellipsis}table.inbox td.ans{white-space:normal;font-size:11.5px}
table.inbox details summary{cursor:pointer;list-style:none}
/* 입력칸 크게 (대표 지시: 입력 화면 2배) */
.card input:not([type=checkbox]):not([type=radio]):not([type=file]),.card select,.card textarea,.inpbig input:not([type=checkbox]),.inpbig select{font-size:13.5px;padding:7px 10px;min-height:34px}
.card button,.inpbig button{padding:7px 16px;font-size:13px}.errbox{border:2px solid #dc2626;background:#fef2f2}
.k-IN,.k-ADJ_IN,.k-RETURN{background:#dcfce7}.k-OUT,.k-RELEASE,.k-ADJ_OUT{background:#fee2e2}.k-RETURN_BAD{background:#fde68a}.k-OPEN{background:#e0e7ff}
.modal{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:50;align-items:flex-start;justify-content:center;padding-top:60px}
.mbox{background:#fff;width:min(1100px,92vw);max-height:80vh;display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:6px;box-shadow:0 10px 30px rgba(0,0,0,.3)}
.mhead{display:flex;align-items:center;gap:8px;font-size:14px}.mres{overflow:auto}
table.inbox td:nth-child(3),table.inbox td:nth-child(4),table.inbox td:nth-child(5),table.inbox td:nth-child(6),table.inbox td:nth-child(11),table.inbox td:nth-child(12){white-space:nowrap}table.inbox th{white-space:nowrap}
table.decide td.pn{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}table.decide td.pn div{overflow:hidden;text-overflow:ellipsis}table.decide td.op{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}table.decide td button.sm{padding:1px 6px}
/* 1366(스크롤바 포함)에서 매핑 버튼 2개가 잘리지 않게: 매핑 칸 폭 고정, 긴 글자 칸은 말줄임 */
table.decide td.shop,table.decide td.kk{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}table.decide td.shop{max-width:110px}table.decide td.kk{max-width:140px}table.decide td.kk div{overflow:hidden;text-overflow:ellipsis}
table.decide th.mapc,table.decide td.mapc{width:128px;min-width:128px;white-space:nowrap}
/* 로켓그로스 전체 표: 1366(스크롤바 포함)에서 한 화면에 — 두 줄 칸으로 묶고 상품명 말줄임 */
table.rk td.pn{max-width:190px;overflow:hidden;text-overflow:ellipsis}table.rk td.pn div{overflow:hidden;text-overflow:ellipsis}table.rk td div{line-height:1.25}
span.tx{display:inline-block;max-width:120px;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}
/* 즐겨찾기 */
button.favstar{background:none;border:0;color:#94a3b8;font-size:18px;padding:0 6px 0 0;cursor:pointer;vertical-align:-1px;line-height:1}button.favstar:hover{color:#f59e0b;background:none}button.favstar.on{color:#f59e0b}
.mg.fav .mh{color:#fde68a}.favnone{display:block;padding:4px 10px;font-size:11px}
/* 재고부족 송장 차단 */
.badge.short{background:#dc2626;color:#fff;font-weight:700}.badge.hold{background:#fee2e2;color:#b91c1c}.badge.over{background:#f97316;color:#fff;font-weight:700}
/* W1 검색 한 줄(전 화면 공통) */
.sbar.sb1{padding:5px 8px}.sbrow{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:12px}.sbrow label{color:#475569;white-space:nowrap}
.sbl{font-weight:700;color:#334155;white-space:nowrap}.sbrow input.dt{width:118px;padding:2px 4px;font-size:12px}.sbrow .pbtns{margin-left:0;white-space:nowrap}.sbrow .pb{padding:1px 6px;margin-right:1px}
.sbsep{width:1px;height:18px;background:#cbd5e1;margin:0 2px}.sbrow .sbq{width:180px}.sbar.wide .sbrow .sbq{width:240px}.sbrow .sbgo{padding:3px 14px}.sbrow select{max-width:150px}
/* W4 띠별 작업 줄 */
.actbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;background:#f0f6ff;border:1px solid #bfd3ee;padding:5px 10px;margin:0 0 8px;font-size:12px}.actbar form.inline{display:inline}
.flow.flow2{margin-top:-4px}.flow.flow2 .muted{font-size:11px;margin-right:4px}
table.lst td.opt{max-width:120px;overflow:hidden;text-overflow:ellipsis}table.lst td.opt div{overflow:hidden;text-overflow:ellipsis}
table.lst div.nm{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sbrow input[type=date].dt{width:118px!important;min-width:0}.sbrow .sbq{width:150px}.sbrow select{max-width:130px}

/* V(9783367) 상품조회/수정 = 출고상품(SKU)형 */
.sbnum{width:56px!important;padding:2px 4px}
.lsort{display:inline-flex;gap:3px;align-items:center}.lsort select{font-size:12px}
.bulkbar{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;background:#fff;border:1px solid #cfd8e3;padding:4px 8px;margin-bottom:6px;font-size:12px}
.bulkbar .bgrp{display:inline-flex;gap:4px;align-items:center;white-space:nowrap}.bulkbar select{max-width:110px}
table.skul{width:100%}table.skul td.nm{max-width:250px;overflow:hidden;text-overflow:ellipsis}
table.skul td.kw{max-width:78px;overflow:hidden;text-overflow:ellipsis}table.skul td.kw3{max-width:110px;overflow:hidden;text-overflow:ellipsis}
table.skul .cb{font-size:9.5px;color:#94a3b8}table.skul tr.off td{background:#f8fafc;color:#94a3b8}
table.skul td.acts a{margin-right:3px}.sbrow label.rng{display:inline-flex;align-items:center;gap:2px}

/* X10 로고 */
.top .brand{display:inline-flex;align-items:center;gap:7px}.top .brand .logo{width:22px;height:22px;border-radius:5px}

/* X2 송장출력 3단계 */
.steps3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:8px}
.step{display:flex;flex-direction:column;gap:6px;margin:0;border-top:3px solid #3c6496}
.step .sh{font-weight:700;font-size:14px;color:#203a5c}.step .sn{display:inline-block;width:22px;height:22px;border-radius:50%;background:#203a5c;color:#fff;text-align:center;line-height:22px;font-size:12px;margin-right:4px}
.step .snum b{font-size:22px;color:#c2410c}.step ul.sfail{margin:0;padding-left:16px;font-size:12px;min-height:36px}
.step button.big,.step .btn.big{padding:6px 14px;font-size:13px}.step form{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
/* X6 판매처 색(전 화면 공통) · 쌓은 막대 */
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:#334155;margin-bottom:6px}.legend .lg{display:inline-flex;align-items:center;gap:5px}
.legend i,i.chdot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.sbars .stk{width:70%;max-width:26px;display:flex;flex-direction:column;gap:2px;border-radius:4px 4px 0 0;overflow:hidden}
.sbars .stk .seg{min-height:1px}.sbars .bar{cursor:default}

/* X8 전체품목 정리내역 */
.ovwrap{overflow-x:auto;border:1px solid #cfd8e3;border-top:0}.ovwrap table.ovt{border:0}
table.ovt td.nm{max-width:220px;overflow:hidden;text-overflow:ellipsis}table.ovt td.op{max-width:110px;overflow:hidden;text-overflow:ellipsis}
table.ovt td.im{padding:1px 2px}table.ovt td.im img{width:34px;height:34px;object-fit:cover;border-radius:4px;display:block}
.lb{display:inline-block;padding:0 6px;border-radius:9px;font-size:10.5px;background:#e2e8f0;color:#334155}
.lb-리오더{background:#fee2e2;color:#b91c1c}.lb-품절{background:#1e293b;color:#fff}.lb-미판매점검{background:#fef3c7;color:#92400e}.lb-재고과다{background:#ffedd5;color:#9a3412}.lb-정상{background:#dcfce7;color:#166534}
td.pp{max-width:62px;overflow:hidden;text-overflow:ellipsis}td.pp div{overflow:hidden;text-overflow:ellipsis}td.pn2{max-width:240px;overflow:hidden;text-overflow:ellipsis}td.pn2 div{overflow:hidden;text-overflow:ellipsis}

/* ===================== X9 디자인 정돈 (위치·구성 그대로) =====================
   색·간격·글자 크기·정렬 체계를 한 벌로: 표 머리글 / 숫자 오른쪽 / 상태 배지 색 / 카드 모서리·그림자 / 버튼 3종(주·보조·위험) */
:root{--ink:#1f2937;--ink2:#475569;--muted:#64748b;--line:#e2e8f0;--line2:#cbd5e1;--bg:#f1f4f8;--head:#f3f6fa;--hover:#f8fafc;
 --pri:#2457a6;--pri-h:#1c4687;--danger:#c62828;--danger-h:#a31f1f;--radius:6px;--shadow:0 1px 2px rgba(15,23,42,.06),0 1px 4px rgba(15,23,42,.04)}
body{background:var(--bg);color:var(--ink);font-family:"Pretendard","Malgun Gothic","Apple SD Gothic Neo",sans-serif;font-size:12px;line-height:1.45}
a{color:var(--pri)}a:hover{color:var(--pri-h)}
.muted{color:var(--muted)}
/* 카드류: 모서리·테두리·그림자 하나로 */
.card,.sbar,.tbar,.bulkbar,.lhead,.flash,.warn{border-radius:var(--radius)}
.card,.sbar,.tbar,.bulkbar{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}
.lhead{border:1px solid var(--line);border-bottom:0;border-radius:var(--radius) var(--radius) 0 0;background:#fafbfd}
.lhead+table,.lhead+.ovwrap,.lhead+form table{border:1px solid var(--line);box-shadow:var(--shadow)}
h1{color:#1e3a5f}h2,h3{color:#1e3a5f}
/* 표: 머리글·숫자·줄 */
table th{background:var(--head);color:var(--ink2);font-weight:600;font-size:11px;text-align:center;border-bottom:1px solid var(--line2);white-space:nowrap}
table th.n{text-align:right}
table td{border-bottom:1px solid #edf1f5}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
table.lst tr:hover td,table.wide tr:hover td{background:var(--hover)}
/* 버튼 3종: 주(기본) / 보조(.sec) / 위험(.danger) */
button,.btn,.sbgo,.kkbar .kkgo{background:var(--pri);color:#fff;border:1px solid var(--pri);border-radius:4px;font-weight:500}
button:hover,.btn:hover,.sbgo:hover{background:var(--pri-h);border-color:var(--pri-h);color:#fff;text-decoration:none}
button.sec,.btn.sec,.xlbtn,.pb{background:#fff;color:var(--ink);border:1px solid var(--line2)}
button.sec:hover,.btn.sec:hover,.xlbtn:hover,.pb:hover{background:#f1f5f9;color:var(--ink);border-color:#94a3b8}
.pb.on{background:var(--pri);color:#fff;border-color:var(--pri)}
button.danger,.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.danger:hover,.btn.danger:hover{background:var(--danger-h);border-color:var(--danger-h)}
button:disabled{background:#cbd5e1;border-color:#cbd5e1;color:#fff}
button.favstar,button.favstar:hover{background:none;border:0;color:#94a3b8}button.favstar.on{color:#f59e0b}
.xlbtn{color:#166534;border-color:#86efac}
/* 입력칸 */
input,select,textarea{border:1px solid var(--line2);border-radius:4px;background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:2px solid #bfd3f2;outline-offset:0;border-color:var(--pri)}
/* 상태 배지: 대기=호박 · 진행=파랑 계열 · 완료=초록 · 취소=빨강 · 반품=주황 · 보류/끝=회색 */
.badge{font-size:11px;font-weight:600;padding:1px 7px;border-radius:10px;border:1px solid transparent;line-height:1.5}
.s-NEW{background:#fef3c7;color:#92400e}
.s-MATCHED{background:#dbeafe;color:#1e40af}.s-CJ_REQUESTED{background:#e0e7ff;color:#3730a3}.s-INVOICED{background:#ede9fe;color:#5b21b6}
.s-SHIPPED{background:#dcfce7;color:#166534}
.s-CANCEL_REQ{background:#fee2e2;color:#b91c1c;border-color:#fca5a5}.s-CANCELED{background:#fee2e2;color:#b91c1c}
.s-RETURN_REQ,.s-RETURNING,.s-RETURN_HOLD{background:#ffedd5;color:#9a3412}.s-RETURN_REQ{border-color:#fdba74}.s-RETURNED{background:#ffedd5;color:#9a3412}
.s-HOLD{background:#f1f5f9;color:#475569}
.badge.short{background:var(--danger);color:#fff}.badge.hold{background:#fee2e2;color:#b91c1c}
.fs.on{border-color:var(--pri);box-shadow:0 0 0 1px var(--pri) inset}
/* 상단·메뉴 */
.top{background:#1e3a5f}nav.side .mh{letter-spacing:.2px}
/* ---- T 월 마감재고·재고분석 (9780998) ---- */
.mcsum{display:flex;flex-wrap:wrap;gap:4px 18px;background:#fff;border:1px solid var(--line);padding:6px 10px;margin:0 0 6px;font-size:12px}.mcsum b{font-size:13px}
.mcmeta{margin-left:auto;align-self:center}
.mcwrap,.sawrap{overflow-x:auto;border:1px solid var(--line);border-top:0;background:#fff}.mcwrap table,.sawrap table{border:0}
table.mct td.nm,table.sat td.nm{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
table.mct th,table.sat th{white-space:nowrap}table.mct td.nw{white-space:nowrap}table.mct td.nm{max-width:200px}.tbar form.fr button{white-space:nowrap}
.wrn{color:#b45309}
.sarow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 4px}.sarow form{margin-left:auto;display:flex;gap:4px;align-items:center}
.safile{max-width:200px;font-size:11px}
.safm{margin:0}.sanum{width:54px;text-align:right;padding:1px 4px;height:22px}.sanum::placeholder{color:#a3aab5}
.rkv{margin-left:auto;display:flex;gap:4px}
table.rk td.cmp{min-width:112px;white-space:nowrap}table.rk td.cmp details summary{cursor:pointer;color:var(--pri);font-size:11px}
.setb{display:inline-block;padding:0 5px;border-radius:3px;font-size:11px;font-weight:700;margin-right:3px;background:#e0ecff;color:#1d4ed8}.setb.mixed{background:#fde7d9;color:#c2410c}
table.ctab{margin:3px 0;border:1px solid var(--line);font-size:11px}table.ctab th,table.ctab td{padding:1px 5px}
tr.nodata td{color:#64748b}td.wait{text-align:center;font-size:11px;background:#f8fafc}
table.rkk td.nm{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ---- U 마켓 마진율 (9782372) ---- */
table.rk tr.lv-loss td{background:#fde8e8}table.rk tr.lv-low td{background:#fef6d8}table.rk tr.st-red td{background:#fde8e8}table.rk tr.st-orange td{background:#ffedd5}
table.rk td.cz{white-space:nowrap;font-weight:600}
.rkset{padding:6px 10px}.rkset form{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:6px 0}.rkset .sbnum{width:70px}
table.rkch td.chc{min-width:170px;font-size:11px;line-height:1.45;vertical-align:top}table.rkch td.chc .cn{font-weight:700;color:#334155}table.rkch td.chc.best{background:#e7f6ec;box-shadow:inset 0 0 0 2px #1baf7a}
.bestb{background:#1baf7a;color:#fff;padding:0 4px;border-radius:3px;font-size:10px}table.rkch td.nm{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.simbg{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:300;align-items:flex-start;justify-content:center;padding-top:60px}
.simbox{background:#fff;border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.25);width:min(640px,96vw);padding:12px 14px;max-height:86vh;overflow:auto}
.simh{display:flex;gap:8px;align-items:center;margin-bottom:8px}.simin{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}.simin label{display:flex;flex-direction:column;font-size:11px;color:#475569}.simin input{text-align:right}
.simt{width:100%;margin-bottom:8px}.simf{display:flex;gap:6px;margin-bottom:6px}.simlist{margin-top:8px;font-size:11px;line-height:1.6;border-top:1px solid var(--line);padding-top:6px}
@media (max-width:768px){.simin{grid-template-columns:repeat(2,1fr)}.simbg{padding-top:10px}}
td.gr{text-align:center;font-weight:700}td.gA{color:#15803d}td.gB{color:#2a78d6}td.gC{color:#475569}td.gD{color:#b45309}td.gE{color:#c2410c}td.gF{color:#b91c1c}
/* ===================== 모바일 대응 (9796309) — 768px 이하만, PC(1366·1920)는 그대로 ===================== */
.top .hamb{display:none}.sideback{display:none}
.sbdate,.sbqg,.sbbtns{display:contents}
label.fld{display:flex;flex-direction:column;font-size:12px;color:#475569}
@media (max-width:768px){
 html{-webkit-text-size-adjust:100%}
 body{font-size:14px}
 /* 상단: ☰ + 로고 + 계정 한 줄 */
 .top{height:48px;padding:0 8px;gap:8px;position:sticky;top:0;z-index:40;flex-wrap:nowrap}
 .top .hamb{display:inline-flex;align-items:center;justify-content:center;flex:none;width:40px;height:40px;min-height:40px;padding:0;font-size:22px;line-height:1;background:transparent;border:1px solid rgba(255,255,255,.35);border-radius:6px;color:#fff}
 .top .hamb:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.5)}
 .top .brand{font-size:16px;letter-spacing:0;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}.top .brand .logo{width:24px;height:24px}
 .top .sub{display:none}
 .top .who{font-size:14px;white-space:nowrap;margin-left:auto;flex:none;opacity:.95;padding-right:2px}.top .who .role{display:none}.top .who a{display:inline-block;padding:10px 0}
 /* 왼쪽 메뉴: 숨김 → ☰ 로 덮어서 펼침 */
 .layout{display:block;min-height:calc(100vh - 48px)}
 nav.side{position:fixed;top:0;left:0;bottom:0;width:min(84vw,300px);z-index:60;transform:translateX(-105%);transition:transform .2s ease;box-shadow:4px 0 18px rgba(15,23,42,.25);overflow-y:auto;-webkit-overflow-scrolling:touch}
 body.side-open{overflow:hidden}body.side-open nav.side{transform:none}
 body.side-open .sideback{display:block;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:55}
 nav.side a.home{padding:12px 16px;font-size:16px}
 .mg .mh{padding:11px 14px;font-size:15px}.mg .mi a{padding:11px 14px 11px 24px;font-size:15px}.mg .mi a.on{padding-left:21px}
 .favnone{font-size:14px}.mtools{font-size:14px;padding:14px}
 /* 열린 화면 탭 줄 숨김 */
 .tabs{display:none}
 main{padding:8px}
 /* 글자 14px 이상 (큰 글자는 아래에서 다시 지정) */
 main :not(#z){font-size:max(14px,1em)}
 main h1:not(#z){font-size:18px!important}main h2:not(#z){font-size:16px!important}
 .kkbar .kkt:not(#z){font-size:16px}.dash .band .it b:not(#z){font-size:19px}.dash .band .t:not(#z){font-size:16px}.kpi .v:not(#z){font-size:19px}
 .step .snum b:not(#z){font-size:22px}#scanbox:not(#z){font-size:22px}
 /* 버튼·입력칸 최소 높이 40px */
 main button:not(.favstar),main .btn,main input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),main select,main textarea,.sbgo,.pb{min-height:40px}
 main .btn,main a.xlbtn{display:inline-flex;align-items:center;justify-content:center}
 main button,main .btn{padding:6px 12px}
 main input:not([type=checkbox]):not([type=radio]),main select,main textarea{padding:6px 8px;max-width:100%}
 main input[type=file]{min-height:40px;padding:6px 0}main details select,main form.row select{min-height:40px}
 main input[type=checkbox],main input[type=radio]{width:20px;height:20px;vertical-align:middle}
 button.favstar{min-width:32px;min-height:40px;font-size:22px!important}
 /* 제목 줄·안내·작업 줄: 줄바꿈 */
 .tbar{flex-wrap:wrap;align-items:center;gap:4px 10px;padding:8px 10px}.tbar>a{margin-left:0!important}
 .row,.actbar,.alertbar,.btnbar,.legend,.kkhead{flex-wrap:wrap}
 .actbar{gap:8px}
 /* 띠·탭: 한 줄 가로 스크롤 */
 .flow,.dtab{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
 .flow .fs,.flow .fa,.flow .muted,.dtab a{flex:none;white-space:nowrap}
 .fs{display:inline-flex;align-items:center;min-height:40px;padding:4px 12px}.dtab a{display:inline-flex;align-items:center;min-height:40px}
 /* 검색 영역: 세로로 쌓기 (일자 2칸 한 줄 + 빠른 버튼 가로 스크롤) */
 .sbar.sb1{padding:8px}
 .sbrow{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:8px}
 .sbrow>*{min-width:0}
 .sbdate{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}.sbdate .sbl{flex-basis:100%}
 .sbrow .sbdate input[type=date].dt{flex:1 1 0;width:auto!important;min-width:0}
 .sbrow .pbtns{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}.sbrow .pbtns .pb{flex:none;padding:6px 12px;margin:0}
 .sbsep{display:none}
 .sbrow label{display:flex;align-items:center;gap:8px;white-space:nowrap}.sbrow label select,.sbrow label input{flex:1 1 0;min-width:0;max-width:none!important}
 .sbrow label.rng{display:flex}.sbrow label.rng .sbnum{width:auto!important}
 .sbrow select{max-width:none}
 .sbqg{display:flex;gap:6px}.sbqg select{flex:0 0 38%;min-width:0}.sbrow .sbqg .sbq{flex:1 1 0;width:auto!important;min-width:0}
 .sbbtns{display:flex;gap:6px}.sbbtns .sbgo{flex:1 1 0}.sbbtns .sbreset{flex:0 0 30%}
 .sbar.wide .sbrow .sbq,.sbrow .sbq{width:auto}
 /* 목록 머리 줄 */
 .lhead{flex-wrap:wrap;gap:6px;padding:6px 8px}.lright{flex-wrap:wrap;gap:6px}.lsort{flex-wrap:wrap}.xl,.xlb{flex-wrap:wrap}
 .bulkbar{gap:8px}.bulkbar .bgrp{flex-wrap:wrap;white-space:normal}
 /* 표: 표 영역 안에서만 가로 스크롤 (페이지 전체는 넘치지 않게) */
 .tscroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;border:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);background:#fff}
 .tscroll>table{border:0!important;box-shadow:none!important}
 .tscroll table td,.tscroll table th{padding:6px 8px}
 table.inbox{table-layout:auto}table.inbox td{white-space:nowrap}table.inbox td.ans{white-space:normal;min-width:340px}table.inbox td div.muted{max-width:260px;overflow:hidden;text-overflow:ellipsis}
 table.lst div.nm,td.pn2,table.skul td.nm{max-width:220px}
 /* 대시보드·카드: 1열로 쌓기 */
 .cards,.cards.c4,.cards.c3,.hgrid,.kkgrid,.dgrid,.grid2,.steps3,.pd,.dash3{grid-template-columns:minmax(0,1fr)!important}
 .cards .c2{grid-column:auto}
 .dash .alertbar{gap:6px 16px;padding:8px 10px}
 .dash .band{gap:4px 16px;padding:10px 12px}.dash .band .t{flex-basis:100%}.dash .band .it{flex:1 1 40%;min-height:32px;display:flex;align-items:center;gap:2px}
 .kkbar{flex-wrap:wrap;padding:10px;gap:8px}.kkbar .kkt{flex-basis:100%}.kkbar .kkin{flex:1 1 0;width:auto;min-width:0;height:44px}.kkbar .kkgo{height:44px;flex:none}.kkbar .btn{height:44px}.kkbar .muted{flex-basis:100%}
 .bx .fr{margin-left:auto}.bx h3{flex-wrap:wrap}
 table.tt td.kkc{width:76px}table.tt td.n:last-child{width:64px}table.tt td:first-child{width:30px}
 .kpis .kpi{flex:1 1 40%;min-width:0}
 /* 스캔 화면 */
 #scanbox{padding:10px}#scanres{padding:14px 16px}#scanres .big{font-size:34px}
 .card.inpbig #code{width:100%!important;font-size:18px!important}.card.inpbig #msg{display:block;margin:6px 0 0!important}
 .modal{padding-top:10px}.mbox{width:96vw;max-height:90vh}
}
/* ===================== S 편의 기능 (9777542) ===================== */
/* S5 상단 통합 검색 */
.gfind{display:flex;align-items:center;gap:0;margin-left:18px}.gfind input{width:300px;height:24px;padding:2px 8px;font-size:12px;border:1px solid #3d5a80;border-right:0;border-radius:4px 0 0 4px;background:#f8fafc}
.gfind button{height:24px;padding:0 10px;font-size:12px;border-radius:0 4px 4px 0;background:#2f5d95;border-color:#2f5d95}.gfind-m{display:none}
/* S13 첫 화면 버튼 */
button.homebtn,button.homebtn:hover{background:none;border:0;color:#94a3b8;font-size:17px;padding:0 6px 0 0;cursor:pointer;line-height:1;vertical-align:-1px}button.homebtn.on{color:#2457a6}button.homebtn:hover{color:#2457a6}
/* S7 오늘 할 일 */
.todo{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;background:#fff;border:1px solid var(--line);border-left:4px solid #2457a6;border-radius:var(--radius);box-shadow:var(--shadow);padding:6px 10px;margin-bottom:6px;font-size:12.5px}
.todo>b{color:#1e3a5f;margin-right:6px}.todo a.td{padding:2px 10px;border-radius:12px;background:#fff7ed;border:1px solid #fdba74;color:#9a3412}.todo a.td b{margin-left:3px;color:#c2410c}
.todo a.td.zero{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8}.todo a.td.zero b{color:#94a3b8;font-weight:400}.todo a.td:hover{text-decoration:none;border-color:#2457a6}
/* S12 답변 문구 버튼 / S11 다음 건 */
.phr{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.phedit{background:#f8fafc;border:1px dashed var(--line2);padding:6px;margin-bottom:6px;display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start}
.phedit[hidden]{display:none}.phedit textarea{flex:1 1 260px}.phedit .muted{flex-basis:100%}.phedit .muted a{margin-right:6px;color:#b91c1c}
label.gonext{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#334155}
/* S16 샘플 삭제 */
details.smpdel{display:inline-block}details.smpdel summary{cursor:pointer;display:inline}details.smpdel form{display:inline-flex;gap:4px;margin-left:6px;align-items:center}
@media (max-width:768px){
 .gfind{display:none}.gfind-m{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;margin-left:auto;font-size:18px;text-decoration:none}
 .gfind-m+.who,.top .gfind-m~.who{margin-left:0}
 button.homebtn{min-width:32px;min-height:40px;font-size:22px!important}
 .todo{flex-wrap:nowrap;overflow-x:auto;padding:8px}.todo a.td,.todo>b,.todo .fa{flex:none;white-space:nowrap}.todo a.td{min-height:40px;display:inline-flex;align-items:center}
 .phr button{min-height:40px}
}/* S11·S14 실사 연속 스캔 */
.stscan{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.stscan #stscan{width:320px;font-size:15px}tr.scanned td{background:#dcfce7!important}
@media (max-width:768px){.stscan #stscan{width:100%}}@media (max-width:768px){details.smpdel{display:block;width:100%}details.smpdel form{display:flex;flex-wrap:wrap;margin:6px 0 0}details.smpdel form input{flex:1 1 140px}}
.card .phr button,.card .phedit button{padding:3px 10px;font-size:12px;min-height:0}
@media (max-width:768px){.card .phr button,.card .phedit button{min-height:40px;font-size:14px}}
@media (max-width:768px){.todo{flex-wrap:wrap;overflow-x:visible;gap:6px}.todo>b{flex-basis:100%}.todo .fa{display:none}.todo a.td{flex:1 1 40%;justify-content:space-between}}
/* S3 자동 매핑 제안 · S10 되돌리기 */
.sug{margin-top:3px;font-size:11.5px;padding:2px 4px;border-radius:4px;background:#f8fafc;border:1px dashed #cbd5e1;white-space:nowrap}.sug b{color:#0f766e}
.sug.sg-high{background:#f0fdf4;border-color:#86efac}.sug.sg-mid{background:#fffbeb;border-color:#fcd34d}
.badge.sg-high{background:#dcfce7;color:#166534}.badge.sg-mid{background:#fef3c7;color:#92400e}.badge.sg-low{background:#f1f5f9;color:#64748b}
.sugbar{background:#f0fdf4;border-color:#bbf7d0}
.undobar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius);padding:5px 10px;margin-bottom:6px;font-size:12.5px}/* S8 내 검색조건 · S9 열 설정·엑셀 양식 */
.mysrch{display:inline-flex;gap:3px;align-items:center}.mysrch select{max-width:150px}.mysrch button{padding:2px 7px}
.colhide{display:none!important}.xfsel{font-size:11px;max-width:120px;padding:1px 3px}
.colbox{width:min(460px,94vw)}.collist{list-style:none;margin:0;padding:0;overflow:auto;max-height:60vh}.collist li{display:flex;justify-content:space-between;align-items:center;padding:3px 4px;border-bottom:1px solid #eef1f5}
.collist li span{display:inline-flex;gap:2px}
@media (max-width:768px){.mysrch{display:flex}.mysrch select{flex:1 1 0;max-width:none}.xfsel{min-height:40px}.collist li{padding:6px 4px}}/* S6 주문 상세 패널 */
.opanel{position:fixed;top:34px;right:0;bottom:0;width:min(560px,46vw);background:#f8fafc;border-left:1px solid var(--line2);box-shadow:-6px 0 18px rgba(15,23,42,.15);z-index:45;display:flex;flex-direction:column}
.opanel[hidden]{display:none}.ophead{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#fff;border-bottom:1px solid var(--line)}.ophead b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#1e3a5f}
.opbody{overflow:auto;padding:8px;flex:1}.opbody .grid2{grid-template-columns:minmax(0,1fr)}.opbody .tbar{display:none}.opbody table th{text-align:left}
table.opclick tr:has(.rowchk){cursor:pointer}table.lst tr.opsel td{background:#e0ecff!important}
@media (max-width:768px){.opanel{top:0;width:100vw;z-index:70}.ophead{padding:6px 8px}.ophead .btn,.ophead button{min-height:40px}}/* S4 여러 파일 끌어다 놓기 */
.dropz{border:2px dashed #93b4e0;background:#f5f9ff;text-align:center;padding:22px 10px;cursor:pointer}.dropz.on{background:#e0ecff;border-color:#2457a6}.dropmsg b{font-size:14px;color:#1e3a5f}/* 목록 머리 줄: 버튼이 세로로 찌그러지지 않게 (S9 버튼 추가 후) */
.lhead{flex-wrap:wrap;gap:4px 8px}.lhead>span:first-child{white-space:nowrap}.lright{flex-wrap:wrap;justify-content:flex-end;row-gap:4px}.lhead button,.lhead .btn,.lhead label,.xlb b{white-space:nowrap}.lright .xl{flex-wrap:wrap}

/* ===================== 디자인 v2 — 요즘 SaaS 관리화면 (재지시 9824211, 2026-11-13) =====================
   메뉴·화면 위치·기능은 그대로, 겉모습만: Pretendard 13px · 바탕 #F5F7FA · 흰 카드(1px #E5E7EB, 10px, 옅은 그림자, 안 여백 16px, 사이 12px)
   상단바 #0F172A 52px(로고 왼쪽·검색 가운데·계정 오른쪽) · 흰 사이드바 + 회색 그룹명 + Lucide 아이콘 · 알약 탭 · 표 머리 #F8FAFC/600, 줄 36px
   버튼 주 #2563EB·보조 흰색 테두리·위험 빨강, 모서리 6px, 높이 32px. PC 배치 규칙은 769px 이상에만(모바일 규칙 유지). */
@font-face{font-family:"Pretendard";src:url("/static/fonts/PretendardVariable.woff2") format("woff2-variations"),url("/static/fonts/PretendardVariable.woff2") format("woff2");font-weight:45 920;font-style:normal;font-display:swap}
:root{--ink:#111827;--ink2:#374151;--muted:#6b7280;--line:#e5e7eb;--line2:#d1d5db;--bg:#f5f7fa;--head:#f8fafc;--hover:#f5f8ff;
 --pri:#2563eb;--pri-h:#1d4ed8;--pri-l:#eff6ff;--danger:#dc2626;--danger-h:#b91c1c;--radius:10px;--shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06)}
body.v2{background:var(--bg);color:var(--ink);font-family:"Pretendard","Pretendard Variable",-apple-system,"Malgun Gothic","Apple SD Gothic Neo",sans-serif;font-size:13px;line-height:1.5;letter-spacing:-.1px;-webkit-font-smoothing:antialiased}
.v2 input,.v2 select,.v2 textarea,.v2 button{font-family:inherit}
.v2 td,.v2 .n,.v2 b,.v2 .kv,.v2 .num{font-variant-numeric:tabular-nums}
.v2 a{color:var(--pri)}.v2 a:hover{color:var(--pri-h);text-decoration:none}
.v2 .muted{color:var(--muted)}
svg.ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
/* ---- 상단바 ---- */
.v2 .top{background:#0f172a;height:52px;padding:0 16px;gap:14px;border-bottom:1px solid #1e293b}
.v2 .top .brand{color:#fff;font-size:15px;font-weight:700;letter-spacing:-.2px}.v2 .top .brand:hover{color:#fff}
.v2 .top .brand .logo{width:26px;height:26px;border-radius:7px}
.v2 .top .sub{color:#64748b;font-size:12px}
.v2 .top .who{display:inline-flex;align-items:center;gap:8px;color:#e2e8f0;opacity:1;font-size:13px}
.v2 .top .who .av{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#1e293b;color:#cbd5e1;border:1px solid #334155}
.v2 .top .who .role{color:#94a3b8;font-size:12px;margin-left:4px}
.v2 .top .who a.lo{display:inline-flex;align-items:center;gap:5px;color:#cbd5e1;padding:5px 9px;border:1px solid #334155;border-radius:6px;font-size:12px}
.v2 .top .who a.lo:hover{background:#1e293b;color:#fff}
.v2 .gfind{position:relative;margin:0 auto;flex:0 1 460px}
.v2 .gfind .gfi{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:#94a3b8;width:15px;height:15px;pointer-events:none}
.v2 .gfind input{width:100%;height:34px;padding:0 64px 0 34px;font-size:13px;color:#e2e8f0;background:#1e293b;border:1px solid #334155;border-radius:8px}
.v2 .gfind input::placeholder{color:#94a3b8}.v2 .gfind input:focus{outline:2px solid rgba(37,99,235,.55);border-color:#3b82f6;background:#0b1220}
.v2 .gfind .gk{position:absolute;right:52px;top:50%;transform:translateY(-50%);font:11px/1 inherit;color:#94a3b8;border:1px solid #475569;border-radius:4px;padding:2px 5px;font-family:inherit}
.v2 .gfind button{position:absolute;right:4px;top:4px;height:26px;padding:0 10px;font-size:12px;border-radius:6px;background:#2563eb;border-color:#2563eb;min-height:0}
.v2 .gfind-m{color:#e2e8f0}
/* ---- 왼쪽 메뉴 ---- */
.v2 nav.side{background:#fff;border-right:1px solid var(--line);padding:10px 8px 24px}
.v2 nav.side a.home{display:flex;align-items:center;gap:9px;padding:8px 10px;margin:0 0 6px;border:0;border-radius:8px;background:transparent;color:var(--ink2);font-weight:600;font-size:13px;position:relative}
.v2 nav.side a.home:hover{background:#f3f4f6}
.v2 nav.side a.home.on,.v2 .mg .mi a.on{background:var(--pri-l);color:var(--pri);font-weight:600}
.v2 nav.side a.home.on::before,.v2 .mg .mi a.on::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--pri)}
.v2 .mg{margin-top:4px}
.v2 .mg .mh{display:flex;align-items:center;gap:8px;background:transparent;color:#6b7280;border:0;padding:9px 10px 5px;font-size:12px;font-weight:600;letter-spacing:0;border-radius:6px}
.v2 .mg .mh:hover{background:transparent;color:var(--ink2)}
.v2 .mg .mh .gl{flex:1}.v2 .mg .mh .ic{width:15px;height:15px;color:#9ca3af}
.v2 .mg .mh .ar{width:14px;height:14px;transition:transform .15s;color:#9ca3af}.v2 .mg.closed .mh .ar{transform:rotate(-90deg)}
.v2 .mg.fav .mh{color:#6b7280}.v2 .mg.fav .mh .ic:first-child{color:#f59e0b}
.v2 .mg .mi a{position:relative;display:block;padding:6px 10px 6px 33px;margin:1px 0;border:0;border-radius:7px;color:var(--ink2);font-size:13px}
.v2 .mg .mi a:hover{background:#f3f4f6;color:var(--ink)}
.v2 .mg .mi a.on{padding-left:33px}
.v2 .favnone{color:#9ca3af;padding:4px 10px 4px 33px;font-size:12px}
.v2 .mtools{padding:14px 10px 0;color:#9ca3af}.v2 .mtools a{color:#6b7280}
/* ---- 열린 화면 탭: 알약 ---- */
.v2 .tabs{background:transparent;border:0;padding:12px 16px 0;gap:6px;min-height:0;align-items:center}
.v2 .tab{display:inline-flex;align-items:center;background:#eceff3;border:1px solid transparent;border-radius:999px;padding:4px 8px 4px 13px;color:#4b5563;font-size:12px;font-weight:500}
.v2 .tab:hover{background:#e3e7ed;color:var(--ink)}
.v2 .tab.on{background:#fff;color:var(--ink);font-weight:600;border-color:var(--line);box-shadow:0 1px 2px rgba(16,24,40,.08)}
.v2 .tab .x{margin-left:6px;color:#9ca3af;font-size:13px;line-height:1}.v2 .tab.on .x{color:#9ca3af}.v2 .tab .x:hover{color:var(--danger)}
.v2 .tab.tball{background:transparent;color:#6b7280;border:0}
/* 화면 안 탭(.dtab)·단계 칩(.fs)·페이지 번호도 알약 */
.v2 .dtab{display:inline-flex;gap:2px;padding:3px;background:#eceff3;border:0;border-radius:999px;margin-bottom:12px}
.v2 .dtab a{background:transparent;border:0;border-radius:999px;padding:5px 14px;margin:0;color:#4b5563;font-weight:500}
.v2 .dtab a:hover{color:var(--ink)}.v2 .dtab a.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(16,24,40,.1)}
.v2 .fs{border:1px solid var(--line);border-radius:999px;background:#fff;padding:4px 11px;font-size:12px;color:var(--ink2)}
.v2 .fs.on{border-color:var(--pri);box-shadow:0 0 0 1px var(--pri) inset;outline:0;color:var(--pri);font-weight:600}
.v2 .flow{gap:6px;margin-bottom:12px}.v2 .fa{color:#d1d5db}
/* ---- 본문 ---- */
.v2 main{padding:14px 16px 24px}
.v2 h1{font-size:18px;font-weight:700;color:var(--ink);border:0;padding:0;margin:0 0 12px;letter-spacing:-.3px}
.v2 h2{font-size:15px;color:var(--ink);font-weight:700}.v2 h3{color:var(--ink);font-weight:600}
.v2 .tbar{display:flex;align-items:center;gap:12px;background:transparent;border:0;box-shadow:none;padding:2px 2px 0;margin-bottom:12px}
.v2 .tbar h1{margin:0;font-size:19px}.v2 .tbar>.muted{font-size:12.5px}
.v2 .card,.v2 .sbar,.v2 .bulkbar,.v2 .alertbar,.v2 .kkbar,.v2 .kkres,.v2 .bx,.v2 .actbar{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.v2 .card{padding:16px;margin-bottom:12px}
.v2 .sbar{margin-bottom:12px;overflow:hidden}
.v2 .lhead{background:#fff;border:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;padding:10px 14px;font-size:13px}
.v2 .lhead+table,.v2 .lhead+.ovwrap,.v2 .lhead+form table,.v2 .lhead+.tscroll{border:1px solid var(--line);border-top:0;box-shadow:var(--shadow);border-radius:0 0 var(--radius) var(--radius)}
.v2 .flash,.v2 .warn{border-radius:8px;padding:9px 12px;margin-bottom:12px}
/* ---- 표 ---- */
.v2 table{border-collapse:separate;border-spacing:0}
.v2 table th{background:var(--head);color:#374151;font-weight:600;font-size:12px;border-bottom:1px solid var(--line);padding:8px 10px;letter-spacing:-.1px}
.v2 table td{border-bottom:1px solid #eef0f3;padding:7px 10px;line-height:21px}
.v2 table.lst th{border-right:0;text-align:left}.v2 table.lst th.n,.v2 table.lst th.ck,.v2 table.lst th.c{text-align:center}
.v2 table.lst td{border-right:0;font-size:12.5px}
.v2 table.lst,.v2 table.wide{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff}
.v2 .lhead+table.lst{border-radius:0 0 var(--radius) var(--radius)}
.v2 table tr:hover>td{background:var(--hover)}
.v2 table tr:last-child>td{border-bottom:0}
.v2 table.sbt th{background:#f9fafb;color:#4b5563;font-weight:600;font-size:12.5px;border-bottom:1px solid #f0f2f5;padding:8px 12px}
.v2 table.sbt td{border-bottom:1px solid #f0f2f5;padding:7px 10px}
.v2 table.sbt tr:hover>td{background:transparent}
/* 촘촘한 전용 표(대시보드 TOP10·품번 일별·로켓그로스 등)는 1366 한 화면 유지 — 글자만 새 체계 */
.v2 table.tt td{padding:3px 4px;line-height:18px;font-size:12px;border-bottom:1px solid #f3f4f6}
.v2 table.kkt th,.v2 table.kkt td,.v2 table.grid30 th,.v2 table.grid30 td,.v2 table.rk td,.v2 table.rk th{padding:4px 6px;line-height:17px}
.v2 table.wide td,.v2 table.wide th{padding:5px 6px}
/* ---- 상태 배지: 파스텔 바탕 + 진한 글자 ---- */
.v2 .badge{font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px;border:0;line-height:1.5;display:inline-block}
.v2 .s-NEW{background:#fef3c7;color:#92400e}.v2 .s-MATCHED{background:#dbeafe;color:#1e40af}.v2 .s-CJ_REQUESTED{background:#e0e7ff;color:#3730a3}
.v2 .s-INVOICED{background:#ede9fe;color:#5b21b6}.v2 .s-SHIPPED{background:#dcfce7;color:#166534}
.v2 .s-CANCEL_REQ,.v2 .s-CANCELED{background:#fee2e2;color:#991b1b}.v2 .s-RETURN_REQ,.v2 .s-RETURNING,.v2 .s-RETURN_HOLD,.v2 .s-RETURNED{background:#ffedd5;color:#9a3412}
.v2 .s-HOLD{background:#f3f4f6;color:#374151}
.v2 .fs.s-NEW,.v2 .fs.s-MATCHED,.v2 .fs.s-CJ_REQUESTED,.v2 .fs.s-INVOICED,.v2 .fs.s-SHIPPED,.v2 .fs.s-CANCEL_REQ,.v2 .fs.s-CANCELED,.v2 .fs.s-RETURN_REQ,.v2 .fs.s-RETURNED,.v2 .fs.s-HOLD{border-color:transparent}
/* ---- 버튼: 주·보조·위험, 모서리 6px, 높이 32px ---- */
.v2 button,.v2 .btn,.v2 .sbgo,.v2 .kkbar .kkgo{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:32px;padding:0 14px;font-size:13px;font-weight:600;border-radius:6px;background:var(--pri);border:1px solid var(--pri);color:#fff;box-shadow:0 1px 2px rgba(16,24,40,.06);line-height:1.2;vertical-align:middle}
.v2 button:hover,.v2 .btn:hover,.v2 .sbgo:hover{background:var(--pri-h);border-color:var(--pri-h);color:#fff}
.v2 button.sec,.v2 .btn.sec,.v2 .xlbtn,.v2 .pb{background:#fff;color:var(--ink2);border:1px solid var(--line2)}
.v2 button.sec:hover,.v2 .btn.sec:hover,.v2 .xlbtn:hover,.v2 .pb:hover{background:#f9fafb;color:var(--ink);border-color:#9ca3af}
.v2 .pb.on{background:var(--pri);color:#fff;border-color:var(--pri)}
.v2 button.danger,.v2 .btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.v2 button.danger:hover,.v2 .btn.danger:hover{background:var(--danger-h);border-color:var(--danger-h)}
.v2 button:disabled{background:#e5e7eb;border-color:#e5e7eb;color:#9ca3af;box-shadow:none}
.v2 button.sm,.v2 .btn.sm{min-height:26px;padding:0 10px;font-size:12px;font-weight:500}
.v2 table button.sm,.v2 table .btn.sm{min-height:24px;padding:0 9px}
.v2 .xlbtn{color:#15803d;border-color:#bbf7d0}
.v2 button.favstar,.v2 button.favstar:hover,.v2 button.homebtn,.v2 button.homebtn:hover{background:none;border:0;box-shadow:none;min-height:0;padding:0 6px 0 0;color:#9ca3af}
.v2 button.favstar.on{color:#f59e0b}.v2 button.homebtn.on{color:var(--pri)}
.v2 .top .hamb{min-height:0;box-shadow:none}
/* ---- 입력칸 ---- */
.v2 input:not([type=checkbox]):not([type=radio]):not([type=file]),.v2 select{height:32px;padding:0 10px;border:1px solid var(--line2);border-radius:6px;font-size:13px;background:#fff;color:var(--ink)}
.v2 textarea{border:1px solid var(--line2);border-radius:6px;padding:7px 10px;font-size:13px}
.v2 input:focus,.v2 select:focus,.v2 textarea:focus{outline:3px solid rgba(37,99,235,.15);outline-offset:0;border-color:var(--pri)}
.v2 table input:not([type=checkbox]):not([type=radio]):not([type=file]),.v2 table select{height:28px;padding:0 7px;font-size:12.5px}
.v2 input[type=checkbox],.v2 input[type=radio]{accent-color:var(--pri);width:15px;height:15px;vertical-align:-3px}
.v2 .top .gfind input{height:34px}
/* ---- 대시보드 ---- */
.v2 .dash .sech{font-size:13px;font-weight:700;color:var(--ink);margin:4px 2px 8px;display:flex;align-items:baseline;gap:8px}.v2 .dash .sech .muted{font-weight:400;font-size:12px}
.v2 .dash .alertbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 18px;padding:10px 16px;margin-bottom:12px}
.v2 .dash .alertbar .ah{display:inline-flex;align-items:center;gap:6px;color:var(--ink)}.v2 .dash .alertbar .ah .ic{color:#f59e0b}
.v2 .dash .alertbar a{color:var(--ink2)}.v2 .dash .alertbar a b{color:var(--danger)}
.v2 .dash .todo.tiles{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;background:transparent;border:0;box-shadow:none;padding:0;margin-bottom:12px}
.v2 .dash .todo.tiles a.td{display:flex;flex-direction:column;gap:2px;position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px;color:var(--ink2)}
.v2 .dash .todo.tiles a.td .tn{position:absolute;right:12px;top:10px;font-size:11px;color:#9ca3af;font-weight:600}
.v2 .dash .todo.tiles a.td .tl{font-size:12.5px;font-weight:500;color:#4b5563}
.v2 .dash .todo.tiles a.td b{font-size:24px;font-weight:700;color:#c2410c;margin:0;line-height:1.2}
.v2 .dash .todo.tiles a.td:hover{border-color:#93c5fd;box-shadow:0 2px 8px rgba(37,99,235,.12)}
.v2 .dash .todo.tiles a.td.zero b{color:#9ca3af;font-weight:600}
.v2 .dash .kpis.band{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;background:transparent;color:inherit;padding:0;border-radius:0;margin-bottom:12px}
.v2 .dash .kt{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;color:var(--ink2)}
.v2 .dash .kt:hover{border-color:#93c5fd;box-shadow:0 2px 8px rgba(37,99,235,.12)}
.v2 .dash .kt .ki{grid-row:1/3;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px}
.v2 .dash .kt .ki .ic{width:20px;height:20px}
.v2 .dash .kt .kl{font-size:12.5px;color:#6b7280;font-weight:500}
.v2 .dash .band .kt b.kv{font-size:26px;font-weight:700;color:var(--ink);margin:0;line-height:1.15;letter-spacing:-.5px}
.v2 .kt.amber .ki{background:#fef3c7;color:#b45309}.v2 .kt.blue .ki{background:#dbeafe;color:#1d4ed8}.v2 .kt.rose .ki{background:#ffe4e6;color:#be123c}
.v2 .kt.green .ki{background:#dcfce7;color:#15803d}.v2 .kt.violet .ki{background:#ede9fe;color:#6d28d9}
.v2 .dash .kkbar{padding:12px 16px;margin-bottom:12px;gap:10px}.v2 .dash .kkbar .kkt{font-size:14px;color:var(--ink)}
.v2 .dash .kkres{padding:14px 16px;margin-bottom:12px}
.v2 .cards{gap:12px;margin-bottom:12px}
.v2 .bx{padding:14px 16px}
.v2 .bx h3{font-size:13px;margin:0 0 8px;color:var(--ink);display:flex;align-items:center;gap:6px;flex-wrap:nowrap;white-space:nowrap}
.v2 .bx h3 .ttl{white-space:nowrap}.v2 .bx h3 .muted{font-weight:400;font-size:11.5px;overflow:hidden;text-overflow:ellipsis}
.v2 .bx .hsub{font-size:11.5px;margin:-4px 0 6px}
.v2 .bx .ln{display:flex;justify-content:space-between;gap:8px;padding:3px 0;border-bottom:1px dashed #f0f2f5}.v2 .bx .ln:last-child{border-bottom:0}
.v2 .bx .ln b{color:var(--ink)}
.v2 .bars .bb{background:#3b82f6;border-radius:4px 4px 0 0}
/* 주문서확인처리 등 띠(구 파란 통 막대) */
.v2 .band:not(.kpis){background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.v2 .band:not(.kpis) a{color:var(--ink2)}
.v2 .actbar{padding:10px 14px;margin-bottom:12px}
@media (min-width:769px){
 .v2 .layout{min-height:calc(100vh - 52px)}
 .v2 nav.side{width:212px;position:sticky;top:0;height:calc(100vh - 52px);align-self:flex-start}
}
@media (max-width:768px){
 .v2 .top{height:52px}
 .v2 .gfind{display:none}.v2 .gfind-m{display:inline-flex;margin-left:auto;padding:8px}
 .v2 .top .who{margin-left:0}.v2 .top .who .wn,.v2 .top .who a.lo span{display:none}.v2 .top .who .av{display:none}
 .v2 nav.side{padding:10px 8px 24px}
 .v2 .mg .mh:not(#z){padding:12px 10px 6px;font-size:13px}.v2 .mg .mi a:not(#z){padding:11px 12px 11px 36px;font-size:15px}
 .v2 .dash .kpis.band{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .v2 .dash .todo.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .v2 .dash .kt{padding:10px 12px}.v2 .dash .band .kt b.kv:not(#z){font-size:22px}
 .v2 .dash .band .it:not(#z){min-height:0}
 .v2 .dtab{display:flex;flex-wrap:wrap;border-radius:12px}
 .v2 main{padding:10px}
}

/* v2 보정: 상단 검색칸(일반 입력칸 규칙보다 우선) · 사이드바 얇은 스크롤 · 1366 넘침 0 · 매출 요약 줄바꿈 */
.v2 .top .gfind input:not([type=checkbox]):not([type=radio]):not([type=file]){height:34px;padding:0 70px 0 34px;color:#e2e8f0;background:#1e293b;border:1px solid #334155;border-radius:8px}
.v2 .top .gfind input:not([type=checkbox]):not([type=radio]):not([type=file]):focus{background:#0b1220;border-color:#3b82f6}
.v2 nav.side{scrollbar-width:thin;scrollbar-color:#e5e7eb transparent}
.v2 nav.side::-webkit-scrollbar{width:6px!important;background:transparent!important}.v2 nav.side::-webkit-scrollbar-thumb{background:#e5e7eb!important;border-radius:3px}
.v2 table.lst th{padding:8px 7px}.v2 table.lst td{padding:7px 7px}
.v2 .dash .cards:not(.c4){grid-template-columns:minmax(0,1.85fr) minmax(0,1.5fr) repeat(3,minmax(0,1fr))}.v2 .dash .cards:not(.c4) .c2{grid-column:auto}
.v2 .bx .ln{white-space:nowrap;font-size:12.5px}.v2 .bx .ln b{flex:none}
@media (min-width:769px){.v2 nav.side{width:200px}}
/* 넓은 목록(.wide)은 1366 한 화면 유지: 글자 12px·여백 좁게 */
.v2 table.lst.wide td,.v2 table.wide td{padding:6px 5px;font-size:12px;line-height:19px}.v2 table.lst.wide th,.v2 table.wide th{padding:7px 5px;font-size:11.5px}
.v2 table.lst.wide td,.v2 table.wide td{padding:6px 4px}.v2 table.lst.wide th,.v2 table.wide th{padding:7px 4px}
@media (min-width:769px){.v2 main{padding:14px 12px 24px}.v2 .tabs{padding:12px 12px 0}}
.v2 table th{padding:8px 7px}.v2 table td{padding:7px 7px}.v2 table.wide input:not([type=checkbox]):not([type=radio]):not([type=file]),.v2 table.wide select{padding:0 5px;font-size:12px}
.v2 table button:not(.favstar),.v2 table .btn{min-height:26px;padding:0 8px;font-size:12px}
.v2 table button.sm:not(.favstar),.v2 table .btn.sm{min-height:24px;padding:0 6px}
/* 화면 제목 한 줄(9833489): 제목은 꺾지 않고, 설명이 길면 아랫줄로 */
.v2 .tbar{flex-wrap:wrap;row-gap:4px}.v2 .tbar h1,.v2 main h1{white-space:nowrap;flex:none}.v2 .tbar>.muted,.v2 .tbar>span:not(.badge){flex:1 1 280px;min-width:0}
@media (max-width:768px){.v2 .tbar h1,.v2 main h1{white-space:normal;flex:1 1 auto}}

/* ===== 옆 패널(드로어) — 지시 9854496 공통 원칙: 주문번호·SKU·품번 클릭 = 목록 옆 접히는 상세 패널 ===== */
.drawer{position:fixed;top:52px;right:0;bottom:0;width:min(600px,46vw);background:#fff;border-left:1px solid var(--line);box-shadow:-8px 0 24px rgba(15,23,42,.10);transform:translateX(102%);transition:transform .18s ease;z-index:45;display:flex;flex-direction:column}
.drawer.open{transform:none}
.drawer .dhead{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:#f8fafc}
.drawer .dhead b{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer .dhead a{font-size:12px}
.drawer .dbody{flex:1;overflow:auto;padding:14px 16px 30px}
.drawer .pnl h3{font-size:13px;margin:14px 0 6px}.drawer .pnl table{width:100%}.drawer .pnl .card{box-shadow:none}
.drawer .pnl .acts{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
tr.prow-on>td{background:#e8f0fe!important}
a[data-panel]{cursor:pointer}
@media (min-width:1500px){body.drawer-open .mainwrap{margin-right:min(600px,46vw)}}
@media (max-width:768px){.drawer{top:0;width:100vw;z-index:70}.drawer .dhead{padding:8px 10px}}
/* 지시 9854496-2 대시보드: 오늘 할 일+주문현황 한 줄(9타일) · TOP10 숫자 안 잘리게 · 판매처별 현황 폭 */
.v2 .dash .kpis.band.merged{grid-template-columns:repeat(9,minmax(0,1fr));gap:8px}
.v2 .dash .merged .kt{grid-template-columns:1fr;grid-template-rows:auto auto auto;row-gap:2px;padding:10px 12px}
.v2 .dash .merged .kt .ki{grid-row:auto;width:28px;height:28px;border-radius:8px}.v2 .dash .merged .kt .ki .ic{width:15px;height:15px}
.v2 .dash .merged .kt .kl{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v2 .dash .band.merged .kt b.kv{font-size:22px}.v2 .dash .merged .kt.zero b.kv{color:#9ca3af}
.v2 table.tt td.n:last-child{width:auto;white-space:nowrap;padding-left:6px}
.v2 table.tt td.nm{width:auto}.v2 table.tt td:first-child{width:18px}.v2 table.tt td.kkc{width:56px}
.v2 .dash .cards.c3{grid-template-columns:minmax(0,1fr) 250px}.v2 .dash .cards.c3 .c2{grid-column:auto}
.v2 .dash .cards.c3 .bx{overflow-x:auto}.v2 .dash .cards.c3 table.lst th,.v2 .dash .cards.c3 table.lst td{white-space:nowrap;padding:6px 7px}
@media (max-width:768px){.v2 .dash .kpis.band.merged{grid-template-columns:repeat(3,minmax(0,1fr))}.v2 .dash .cards.c3{grid-template-columns:1fr}}
/* 로고 교체(지시 9900917): KLAND 원형 마크 — 어두운 상단바 위 흰 원 */
.top .brand .logo,.v2 .top .brand .logo{width:30px;height:30px;border-radius:50%;background:#fff;padding:1px;box-shadow:0 0 0 1px rgba(255,255,255,.35);object-fit:contain;flex:none}
.logo-login{width:44px;height:44px;border-radius:50%;background:#fff;vertical-align:-14px;margin-right:8px;box-shadow:0 1px 3px rgba(0,0,0,.15)}

/* 지시 9892977-28: 엑셀 버튼·일괄 버튼 크기 통일 */
.v2 .xlb{gap:4px;padding:2px 4px}.v2 .xlb .xlbtn,.v2 .xlb select,.v2 .xlb button{min-height:26px;padding:0 10px;font-size:12px;display:inline-flex;align-items:center;border-radius:5px}
.v2 .bulkbar button.sm,.v2 .bulkbar select{min-height:28px;padding:0 12px;font-size:12.5px}.v2 .bulkbar{margin-bottom:6px}

/* 지시 9892977-15: 오늘할일 7칸 (바코드 스캔·재고 조정 = 버튼) */
.v2 .dash .kpis.band.merged.t7{grid-template-columns:repeat(7,minmax(0,1fr))}
.v2 .dash .kt.act{border:1.5px solid #4f46e5;background:#eef2ff}.v2 .dash .kt.act .kgo{font-size:11.5px;font-weight:700;color:#4338ca;margin-top:2px}
@media (max-width:768px){.v2 .dash .kpis.band.merged.t7{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* 지시 9892977-1: 창고 → 회계관리 이동 버튼(회계 → 창고 「창고관리로 이동」과 같은 모양) */
.top .tacct{color:#cbd5e1;font-size:13px;border:1px solid rgba(255,255,255,.3);border-radius:6px;padding:4px 10px;white-space:nowrap;margin-left:auto}
.top .tacct:hover{color:#fff;text-decoration:none;border-color:#fff}.top .tacct+.who{margin-left:10px}
@media (max-width:768px){.top .tacct{font-size:12px;padding:3px 7px}}

/* 지시 9892977-10: 상단 판매처 작은 아이콘(로그인 페이지 새 창, 관리자는 아이디·비번 복사) */
.top .tchs{display:inline-flex;gap:4px;align-items:center;margin-left:14px}
.top .tch{position:relative;display:inline-flex}.top .tch>a{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 4px;border-radius:50%;color:#fff;font-size:11px;font-weight:800;text-decoration:none;box-shadow:0 0 0 2px rgba(255,255,255,.25)}
.top .tch>a:hover{box-shadow:0 0 0 2px #fff}
.top .tchm{display:none;position:absolute;top:26px;left:-6px;z-index:60;background:#fff;color:#111827;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.18);padding:8px;min-width:150px;flex-direction:column;gap:5px;font-size:12px}
.top .tch:hover .tchm{display:flex}.top .tchm button{min-height:26px;font-size:12px}.top .tchm a{color:#2563eb}
@media (max-width:1100px){.top .tchs{display:none}}

/* 지시 9892977-27: 검색줄 1줄 날짜 / 2줄 조건 / 일괄 처리 별도 줄 */
.sbar .sbr1{padding-bottom:6px;margin-bottom:6px;border-bottom:1px dashed #e5e7eb}
.v2 .bulkbar.obulk{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:7px 12px;margin:0 0 6px}.obulk .bkt{font-size:12.5px;color:#111827}.obulk .mapbar2{display:inline-flex;gap:4px;align-items:center}
/* 지시 9892977-34: 표 열 정렬 통일(머리글·값 같은 정렬) — base.html alignCols 가 열마다 n/c/al 클래스 */
table th.n,table td.n{text-align:right;font-variant-numeric:tabular-nums}table th.c,table td.c{text-align:center}table th.al,table td.al{text-align:left}
table th:last-child,table td:last-child{padding-right:12px}
.v2 table.lst th.n,.v2 main table th.n,.v2 #dbody table th.n{text-align:right}.v2 table.lst th.al,.v2 main table th.al,.v2 #dbody table th.al{text-align:left}.v2 table.lst th.c,.v2 main table th.c,.v2 #dbody table th.c{text-align:center}

/* 지시 9910767-2: 상단 판매처 아이콘 묶음 사이 간격 */
.top .tch.tgap{margin-left:12px;padding-left:12px;border-left:1px solid #e5e7eb}
/* 지시 9911331: 교환 → 재출고 진행 단계 */
.exst{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:8px 0;padding:7px 10px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:8px;font-size:12.5px}
.exst .exl{font-weight:600;margin-right:6px;color:#111827}
.exst .es{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:999px;background:#fff;border:1px solid #e5e7eb;color:#9ca3af}
.exst .es b{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:#e5e7eb;color:#fff;font-size:10.5px}
.exst .es i{font-style:normal;color:#6b7280;font-size:11.5px}
.exst .es.on{color:#065f46;border-color:#a7f3d0;background:#ecfdf5}.exst .es.on b{background:#10b981}
.exst .ea{color:#cbd5e1}.exst .btn{margin-left:auto}
.exbox{border:1px solid #e5e7eb;border-radius:8px;padding:8px 10px;margin:6px 0}
.exbox .exs{padding:6px 0;border-bottom:1px dashed #e5e7eb}.exbox .exs:last-of-type{border-bottom:0}
.exbox h3{font-size:13px;margin:0 0 5px}
.exbox .exf{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.exbox .exsel{min-width:260px;max-width:100%}.exbox .exin{width:170px}.exbox .exfile{max-width:200px}
.exbox .rr{flex:0 0 auto;padding:4px 8px}
.exdone{color:#065f46;background:#ecfdf5;border-radius:6px;padding:5px 8px;font-size:12.5px}
.warn1{color:#b45309;font-size:12px}.err1{color:#b91c1c}
.exmini{display:flex;align-items:center;gap:2px;margin-top:3px}.exmini i{width:10px;height:4px;border-radius:2px;background:#e5e7eb}.exmini i.on{background:#10b981}.exmini span{font-size:11px;color:#065f46;margin-left:4px;white-space:nowrap}
.exo{display:inline-block;margin-left:3px;padding:0 5px;border-radius:4px;background:#ede9fe;color:#5b21b6;font-size:11px;line-height:17px}
.s-EXCHANGE_RECV{background:#e0e7ff;color:#3730a3}
/* QA D05·D06(지시 9928434) + 1366 상단 줄바꿈: 로고 글자 잘림·스캔 안내 잘림 */
.top .brand{white-space:nowrap;flex:none}
@media (min-width:769px) and (max-width:1440px){.top .sub{display:none}.top .who .role{display:none}.top .who,.top a{white-space:nowrap}}
@media (max-width:768px){
 .top{gap:6px}
 .top .brand{font-size:14px;flex:0 0 auto;overflow:visible}
 .top .brand .logo,.v2 .top .brand .logo{width:26px;height:26px}
 .top .tacct{font-size:0;padding:0 8px}.top .tacct::before{content:"회계";font-size:12px}
 .top .tsearch,.top .tchs{display:none}
 #scanbox{font-size:16px!important;padding:10px!important}
 #scanbox::placeholder{font-size:14px}
 .tbar .muted,.scanhint{white-space:normal}
 #mix h3{display:flex;flex-wrap:wrap;align-items:center}
 #mix h3 .fr.flow{float:none;display:flex;flex-wrap:wrap;margin:6px 0 0 0!important;width:100%;overflow:visible}
 #mix td:first-child a,#mix td a{white-space:nowrap}
 #mix table.lst{min-width:0!important;width:100%!important}
 #mix h3 .muted{display:block;white-space:normal}
}
/* QA R2-15 화면 하단 코드 버전 */
.verfoot{color:#9ca3af;font-size:11px;text-align:right;margin:28px 0 2px}
