:root{
  --bg:#ece9d8; --panel:#f4f3ee; --line:#a0a0a0; --line2:#c8c8c8; --head:#d4d0c8;
  --sel:#0a64d8; --sub:#eef59a; --navy:#1f3b73; --red:#d00; --blue:#0040c0;
  --k-day:#2f7d32; --k-night:#3b4cc0; --k-yc:#c25e00; --k-visit:#8a2be2;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);font:12px "맑은 고딕","Malgun Gothic",Gulim,sans-serif;color:#000}
button{font:inherit}
input,select,textarea{font:inherit;border:1px solid #7f9db9;background:#fff;padding:2px 4px;height:22px}
textarea{height:auto}
input[type=checkbox],input[type=radio]{height:auto}
#app{display:flex;flex-direction:column;height:100vh}

/* 상단 제목/메뉴 */
.titlebar{background:linear-gradient(#fff,#e3e3e3);border-bottom:1px solid var(--line);padding:3px 8px;display:flex;gap:18px;align-items:center}
.titlebar b{color:#333}
.titlebar .ver{color:#666}
.menubar{display:flex;gap:2px;padding:2px 6px;background:#fff;border-bottom:1px solid var(--line2)}
.menubar a{padding:3px 12px;cursor:pointer;border:1px solid transparent;border-radius:2px;text-decoration:none;color:#000}
.menubar a:hover{border-color:#9ab;background:#e6f0fb}
.menubar a.on{background:#cfe3fb;border-color:#6b9bd6;font-weight:bold}

/* 툴바 (하이컴텍 아이콘 줄) */
.toolbar{display:flex;gap:1px;padding:3px 6px;background:linear-gradient(#fafafa,#dcdcdc);border-bottom:1px solid var(--line)}
.tb{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:52px;height:42px;padding:2px 6px;border:1px solid transparent;background:none;cursor:pointer;border-radius:2px}
.tb:hover{border-color:#8aa;background:#fff8d8}
.tb .ic{font-size:17px;line-height:18px}
.tb span{font-size:11px;white-space:nowrap}
.tb.primary .ic{filter:saturate(1.6)}
.tb:disabled{opacity:.4;cursor:default}
.tb.bigimport{background:#fff3c4;border-color:#d9a400;min-width:72px}
.tb.bigimport span:last-child{font-weight:bold}
.dropzone{margin:40px auto;max-width:520px;padding:36px 20px;border:2px dashed #7f9db9;border-radius:6px;background:#f7fbff;text-align:center;color:#335;font-size:14px}
.dropzone .btn{margin-top:12px;height:32px;font-size:14px;padding:0 24px}
.busy{position:fixed;inset:0;background:rgba(255,255,255,.6);display:flex;align-items:center;justify-content:center;z-index:60;font-size:16px;font-weight:bold;color:#1f3b73}
.busy div{background:#fff;border:1px solid #6b9bd6;padding:18px 30px;box-shadow:2px 2px 10px rgba(0,0,0,.2)}
.tbsep{width:1px;background:#aaa;margin:3px 4px}

.view{flex:1;display:none;flex-direction:column;min-height:0}
.view.on{display:flex}
.wtitle{background:linear-gradient(#5b8ad6,#2a5bb5);color:#fff;padding:3px 8px;font-weight:bold;display:flex;justify-content:space-between}

/* 조회조건 영역 */
.filters{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;padding:6px 10px;background:var(--panel);border-bottom:1px solid var(--line2)}
.filters label{display:flex;gap:4px;align-items:center}
.filters .lbl{color:var(--blue);font-weight:bold}
.arrow{width:22px;height:22px;padding:0;border:1px solid #888;background:#eee;cursor:pointer}
.chipbar{display:flex;gap:10px;align-items:center;padding:4px 10px;background:#fffbe0;border-bottom:1px solid var(--line2)}

/* 그리드 */
.gridwrap{flex:1;overflow:auto;background:#fff;border-top:1px solid var(--line2)}
table.grid{border-collapse:collapse;width:100%;background:#fff}
.grid th{position:sticky;top:0;z-index:2;background:var(--head);border:1px solid #fff;border-right-color:#888;border-bottom-color:#888;padding:3px 4px;font-weight:normal;white-space:nowrap}
.grid td{border-right:1px solid #e3e3e3;border-bottom:1px solid #eee;padding:1px 4px;white-space:nowrap;height:18px}
.grid td.l{text-align:left}.grid td.r{text-align:right}.grid td.c{text-align:center}
.grid td.note{max-width:520px;overflow:hidden;text-overflow:ellipsis}
.grid tr.sel td{background:var(--sel);color:#fff}
.grid tr.sel .chip{border-color:#fff;color:#fff}
.grid tr.sel .flag{color:#ffd0d0}
.grid tr.sel .hint{color:#dfe8ff}
.radios.drv label{min-width:110px}
.grid tr.cur td{background:#fff3b0;border-top:1px dashed #000;border-bottom:1px dashed #000}
.grid tr.cur.sel td{background:#0a50b0;border-top:1px dashed #fff;border-bottom:1px dashed #fff}
.grid tr.cur td:first-child{box-shadow:inset 4px 0 0 #e07000}
.grid tr.sub td{background:var(--sub);color:#00f;font-weight:bold}
.grid tr.sub td.red{color:#c00}
.grid tr:hover:not(.sub):not(.sel) td{background:#eef5ff}
.grid tr.overdue td{color:#c00}
.grid tfoot td{position:sticky;bottom:0;background:#d4d0c8;font-weight:bold;border-top:1px solid #888}
.statusbar{display:flex;gap:20px;padding:3px 10px;background:#d4d0c8;border-top:1px solid #888}
.statusbar b{color:#c00}

.chip{display:inline-block;padding:0 6px;border-radius:8px;border:1px solid;font-size:11px;line-height:15px}
.k-주간{color:var(--k-day);border-color:var(--k-day)}
.k-야간{color:var(--k-night);border-color:var(--k-night)}
.k-용차{color:var(--k-yc);border-color:var(--k-yc)}
.k-방문{color:var(--k-visit);border-color:var(--k-visit)}
.grid tr.chg-add td{background:#e3f6dc}
.grid tr.chg-del td{background:#fde4e1;color:#a33}
.grid tr.chg-del td .nt,.grid tr.chg-del td:nth-child(4),.grid tr.chg-del td:nth-child(6),.grid tr.chg-del td:nth-child(7){text-decoration:line-through}
.tag-new,.tag-del{display:inline-block;font-size:11px;font-weight:bold;padding:0 5px;margin-right:4px;border-radius:3px;line-height:15px;color:#fff}
.tag-new{background:#2f8f2f}.tag-del{background:#d03a2a}
.statusbar .tag-new,.statusbar .tag-del{font-size:12px;padding:1px 6px}
.kpick{cursor:pointer}
.kpick:hover{background:#fff3c4;color:#000 !important}
.kmenu{position:fixed;z-index:70;background:#fff;border:1px solid #6b9bd6;box-shadow:2px 2px 8px rgba(0,0,0,.25);padding:6px;display:flex;flex-wrap:wrap;gap:6px;width:170px}
.kmenu .hint{width:100%}
.kmenu button{cursor:pointer;background:#fff;font-size:13px;padding:2px 10px;line-height:20px}
.kmenu button:hover{background:#fff3c4}
.st-수주{color:#555}.st-포장{color:#b06000;font-weight:bold}.st-출고{color:#2a7a2a}
.flag{color:#c00;font-size:11px;margin-left:2px}

/* 대화상자 */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;z-index:50}
.modal{background:var(--panel);border:1px solid #333;box-shadow:4px 4px 12px rgba(0,0,0,.35);min-width:420px;max-width:92vw;max-height:92vh;display:flex;flex-direction:column}
.modal h3{margin:0;background:linear-gradient(#5b8ad6,#2a5bb5);color:#fff;font-size:13px;padding:5px 10px}
.modal .mb{padding:12px 14px;overflow:auto}
.modal .mf{display:flex;justify-content:flex-end;gap:6px;padding:8px 12px;border-top:1px solid var(--line2)}
.btn{padding:3px 14px;border:1px solid #707070;background:linear-gradient(#fff,#e0e0e0);border-radius:2px;cursor:pointer;height:24px}
.btn:hover{background:linear-gradient(#fff,#cfe3fb)}
.btn.pri{border-color:#2a5bb5;font-weight:bold}
.btn.sm{height:20px;padding:0 6px;font-size:11px}
.btn.red{color:#c00}
.frm{display:grid;grid-template-columns:96px 1fr;gap:6px 8px;align-items:center}
.frm>.full{grid-column:1/-1}
.frm .lb{text-align:right;color:#333}
.radios{display:flex;gap:10px;flex-wrap:wrap}
.radios label{display:flex;gap:3px;align-items:center;padding:3px 8px;border:1px solid #bbb;border-radius:3px;background:#fff;cursor:pointer}
.radios label.on{border-color:#2a5bb5;background:#dbe8fb;font-weight:bold}
.cpick{display:flex;flex-wrap:wrap;gap:4px;max-width:560px}
.cpick button{padding:2px 7px;border:1px solid #999;background:#fff;border-radius:3px;cursor:pointer;font-size:11px}
.cpick button.fit{border-color:#2a7a2a;background:#eaf7e6;font-weight:bold}
.cpick button:hover{background:#fff3c4}
.hint{color:#666;font-size:11px}
.warn{background:#ffe9e6;border:1px solid #e88;color:#a00;padding:6px 10px;margin:6px 0;border-radius:3px}
.okbox{background:#eaf7e6;border:1px solid #8c8;color:#225a22;padding:6px 10px;margin:6px 0;border-radius:3px}

/* 배차 보드 */
.board{flex:1;overflow:auto;padding:8px;display:flex;flex-direction:column;gap:8px}
.dcard{background:#fff;border:1px solid var(--line);box-shadow:1px 1px 0 #ccc}
.dcard.yc{background:#fffef0}
.dhead{display:flex;align-items:center;gap:12px;padding:4px 8px;background:#e8eef8;border-bottom:1px solid var(--line2)}
.dcard.yc .dhead{background:#fff4c2}
.dhead .nm{font-weight:bold;font-size:13px;min-width:120px}
.dhead .est{flex:1;color:#333}
.dhead .est.over{color:#c00;font-weight:bold}
.dcard table{width:100%;border-collapse:collapse}
.dcard th{background:#f2f2f2;font-weight:normal;border-bottom:1px solid #ccc;padding:2px 4px;text-align:left}
.dcard td{border-bottom:1px dotted #ccc;padding:1px 3px}
.dcard td input,.dcard td select{width:100%;border-color:#ddd;height:21px}
.dcard td input:focus{border-color:#2a5bb5}
.cmpbox{padding:4px 8px;border-top:1px dashed #ccc;background:#fafafa}
.cmpbox table td,.cmpbox table th{border:1px solid #ddd;padding:2px 6px}
.better-용차{color:var(--k-yc);font-weight:bold}.better-기사님{color:var(--k-day);font-weight:bold}

/* 용차 화면 */
.split{flex:1;display:flex;min-height:0}
.split .left{width:420px;border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.split .right{flex:1;overflow:auto;padding:10px 14px;display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.panel{background:#fff;border:1px solid var(--line2);padding:10px;min-width:360px}
.panel h4{margin:0 0 8px;color:var(--navy)}
.kakao{width:300px;min-height:380px;white-space:pre-wrap;font:13px "맑은 고딕";background:#fff;border:1px solid #bbb;padding:10px;resize:vertical}
.items td input{width:100%}

/* 인쇄 영역 */
#print{display:none}
@media print{
  @page{size:A4 portrait;margin:8mm}
  body{background:#fff}
  #app,.modal-bg{display:none !important}
  #print{display:block}
}
.p-page{width:194mm;font-family:"맑은 고딕";page-break-after:always}
.p-page:last-child{page-break-after:auto}
.p-title{text-align:center;font-size:22pt;font-weight:bold;margin:6mm 0 9mm}
.p-sched{width:100%;border-collapse:collapse;border:2px solid #000;table-layout:fixed}
.p-sched th{background:#d0d0d0;border:1px solid #000;border-bottom:2px solid #000;font-size:13pt;height:12mm}
.p-sched td{border-left:1px dotted #555;border-bottom:1px dotted #555;text-align:center;font-size:10.5pt;padding:1mm;word-break:keep-all}
.p-sched td.who{font-weight:bold;font-size:10pt;border-right:1px dotted #555;text-align:left;padding-left:2mm}
.p-sched td.l{text-align:left;padding-left:2mm}
.p-sched tr.gend td{border-bottom:2px solid #000}
.p-sched tr.yel td{background:#ffff6b}
.p-inv{width:100%;border-collapse:collapse;font-size:11pt}
.p-inv td,.p-inv th{border:1px solid #444;padding:2.2mm 2mm;text-align:center}
.p-inv .hd{background:#dce6f1;font-weight:bold}
.p-inv .big{font-size:26pt;letter-spacing:12px;font-weight:bold;background:#dce6f1;padding:4mm}
.p-night h2{margin:0 0 3mm}
.p-night table{width:100%;border-collapse:collapse;font-size:11pt}
.p-night td,.p-night th{border:1px solid #444;padding:2mm}
.p-night th{background:#e8e8e8}
.p-night td.r{text-align:right}
.p-night .nowrap{white-space:nowrap}
.p-night tr.tot td{font-weight:bold;background:#f4f4f4}
.p-memo{border:1.5px solid #000;min-height:28mm;padding:2mm 3mm;margin:2mm 0 4mm;white-space:pre-wrap;font-size:12pt}
.p-memo b{display:block;margin-bottom:1mm}
.p-memo-big{min-height:80mm}
/* 거래처별 수주현황: 가로(A4 가로) + 흑백 */
.p-detail{width:281mm;color:#000;filter:grayscale(1)}
.p-detail th,.p-detail tr.tot td{background:#fff !important;border-bottom:2px solid #000}
.p-detail h2{font-size:18pt;margin:0}
.p-detail table{font-size:9.5pt;margin-top:3mm}
.p-detail td,.p-detail th{padding:1.2mm 1.5mm}
.p-detail td.note{word-break:break-all}
.p-sign{text-align:right;margin-top:8mm;font-size:12pt}
