*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Malgun Gothic,맑은 고딕,sans-serif;background:#f0f2f5;color:#333}.header{background:linear-gradient(135deg,#1a237e,#283593);color:#fff;padding:20px 32px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 8px #00000026}.header h1{font-size:22px;font-weight:700}.header .date{font-size:13px;opacity:.85}.header-actions{display:flex;gap:10px}.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;padding:20px 32px}.card{background:#fff;border-radius:12px;padding:16px 18px;box-shadow:0 1px 4px #00000014;position:relative;overflow:hidden}.card:before{content:"";position:absolute;top:0;left:0;width:4px;height:100%}.card.blue:before{background:#1565c0}.card.green:before{background:#2e7d32}.card.orange:before{background:#e65100}.card.red:before{background:#c62828}.card.purple:before{background:#6a1b9a}.card.teal:before{background:#00695c}.card .label{font-size:11px;color:#888;margin-bottom:4px;font-weight:500}.card .value{font-size:24px;font-weight:700}.card.blue .value{color:#1565c0}.card.green .value{color:#2e7d32}.card.orange .value{color:#e65100}.card.red .value{color:#c62828}.card.purple .value{color:#6a1b9a}.card.teal .value{color:#00695c}.vs{font-size:13px;font-weight:400;color:#888}.tabs{padding:0 32px;display:flex;gap:0;border-bottom:2px solid #e0e0e0;margin-top:4px}.tab{padding:12px 20px;cursor:pointer;font-size:13px;font-weight:600;color:#666;border-bottom:3px solid transparent;transition:all .2s;-webkit-user-select:none;user-select:none}.tab:hover{color:#1a237e}.tab.active{color:#1a237e;border-bottom-color:#1a237e}.tab .cnt{background:#e8eaf6;color:#1a237e;padding:1px 7px;border-radius:10px;font-size:11px;margin-left:4px}.controls{padding:14px 32px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}.controls input,.controls select{padding:8px 12px;border:1px solid #d0d0d0;border-radius:8px;font-size:13px;background:#fff;outline:none}.controls input:focus,.controls select:focus{border-color:#1a237e}.search-input{width:240px}.btn{padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary{background:#1a237e;color:#fff}.btn-primary:hover{background:#283593}.btn-outline{background:#fff;color:#1a237e;border:1px solid #1a237e}.btn-outline:hover{background:#e8eaf6}.btn-danger{background:#fff;color:#c62828;border:1px solid #c62828}.btn-danger:hover{background:#ffebee}.btn-teal{background:#00695c;color:#fff}.btn-teal:hover{background:#00796b}.btn-sm{padding:4px 10px;font-size:11px}.btn-header{color:#fff;border-color:#fff6;background:transparent;border:1px solid rgba(255,255,255,.4)}.btn-header-solid{background:#fff;color:#1a237e;font-weight:700}.table-wrap{padding:0 32px 32px;overflow-x:auto}table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px #00000014;min-width:1200px}thead{background:#e8eaf6}th{padding:11px 12px;text-align:left;font-size:11px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.3px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th:hover{background:#c5cae9}th .si{margin-left:3px;font-size:10px;opacity:.4}th.sorted .si{opacity:1}td{padding:10px 12px;font-size:13px;border-bottom:1px solid #f0f0f0;white-space:nowrap}tr:hover td{background:#f5f7ff}tr.overdue td{background:#fff3f0}.text-right{text-align:right}.text-center{text-align:center}.font-mono{font-family:monospace;font-size:12px}.font-bold{font-weight:600}.text-ellipsis{max-width:200px;overflow:hidden;text-overflow:ellipsis}.badge{display:inline-block;padding:4px 10px;border-radius:20px;font-size:11px;font-weight:600}.badge-waiting{background:#fff3e0;color:#e65100}.badge-inprogress{background:#e3f2fd;color:#1565c0}.badge-shipped{background:#e0f2f1;color:#00695c}.badge-completed{background:#f3e5f5;color:#6a1b9a}.badge-delayed{background:#ffebee;color:#c62828}.badge-yes{background:#e8f5e9;color:#2e7d32}.badge-no{background:#f5f5f5;color:#999}.grade-badge{background:#e8eaf6;padding:2px 8px;border-radius:4px;font-weight:600;font-size:12px}.status-flow{display:flex;align-items:center;gap:2px;margin-bottom:4px}.status-flow .step{width:28px;height:4px;border-radius:2px;background:#e0e0e0}.status-flow .step.done{background:#2e7d32}.status-flow .step.current{background:#1565c0}.ship-date-label{font-size:10px;color:#00695c;margin-top:2px}.memo-btn{background:none;border:1px solid #ccc;border-radius:6px;padding:3px 8px;cursor:pointer;font-size:12px;position:relative;transition:all .2s}.memo-btn:hover{border-color:#1a237e;background:#e8eaf6}.memo-btn .dot{position:absolute;top:-3px;right:-3px;width:8px;height:8px;background:#c62828;border-radius:50%;display:none}.memo-btn.has-memo .dot{display:block}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006;z-index:1000;display:flex;justify-content:center;align-items:center}.modal{background:#fff;border-radius:16px;padding:28px;width:580px;max-width:95vw;max-height:88vh;overflow-y:auto;box-shadow:0 8px 32px #0003}.modal h2{font-size:18px;margin-bottom:20px;color:#1a237e}.modal .fg{margin-bottom:12px}.modal label{display:block;font-size:12px;font-weight:600;color:#555;margin-bottom:4px}.modal input,.modal select,.modal textarea{width:100%;padding:9px 12px;border:1px solid #d0d0d0;border-radius:8px;font-size:13px;font-family:inherit;outline:none}.modal input:focus,.modal select:focus,.modal textarea:focus{border-color:#1a237e}.modal textarea{resize:vertical;min-height:60px}.modal .btn-group{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.history-modal{width:680px}.item-info{background:#f5f7ff;border-radius:10px;padding:14px 16px;margin-bottom:18px;font-size:13px;display:grid;grid-template-columns:1fr 1fr;gap:6px}.item-info .ik{color:#888;font-size:11px}.item-info .iv{font-weight:600}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:8px;top:0;bottom:0;width:2px;background:#e0e0e0}.tl-entry{position:relative;margin-bottom:16px}.tl-entry:before{content:"";position:absolute;left:-20px;top:4px;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid #1a237e;z-index:1}.tl-entry.cat-outsource:before{border-color:#e65100}.tl-entry.cat-receive:before{border-color:#2e7d32}.tl-entry.cat-inspect:before{border-color:#6a1b9a}.tl-entry.cat-ship:before{border-color:#00695c}.tl-entry.cat-etc:before{border-color:#757575}.tl-date{font-size:11px;color:#888;margin-bottom:2px}.tl-cat{display:inline-block;font-size:10px;font-weight:700;padding:1px 8px;border-radius:10px;margin-bottom:4px}.cat-outsource .tl-cat{background:#fff3e0;color:#e65100}.cat-receive .tl-cat{background:#e8f5e9;color:#2e7d32}.cat-inspect .tl-cat{background:#f3e5f5;color:#6a1b9a}.cat-ship .tl-cat{background:#e0f2f1;color:#00695c}.cat-etc .tl-cat{background:#f5f5f5;color:#757575}.tl-content{font-size:13px;line-height:1.5;background:#fafafa;padding:8px 12px;border-radius:8px;border:1px solid #eee;white-space:pre-wrap}.tl-writer{font-size:11px;color:#aaa;margin-top:3px;text-align:right}.tl-actions{position:absolute;top:0;right:0}.tl-actions button{background:none;border:none;cursor:pointer;font-size:12px;color:#aaa;padding:2px 4px;border-radius:4px}.tl-actions button:hover{background:#eee;color:#333}.add-history{background:#f5f7ff;border-radius:10px;padding:16px;margin-top:16px;border:1px dashed #c5cae9}.add-history h3{font-size:13px;color:#1a237e;margin-bottom:10px}.add-history .row{display:flex;gap:10px;margin-bottom:8px}.add-history .row>div{flex:1}.add-history input,.add-history select,.add-history textarea{width:100%;padding:8px 10px;border:1px solid #d0d0d0;border-radius:6px;font-size:12px;font-family:inherit;outline:none}.add-history textarea{resize:vertical;min-height:50px}.add-history label{font-size:11px;color:#666;margin-bottom:3px;display:block}.empty-state{text-align:center;padding:30px;color:#aaa;font-size:13px}.loading{text-align:center;padding:60px;color:#888;font-size:16px}.error-msg{text-align:center;padding:40px;color:#c62828}.footer{text-align:center;padding:16px;font-size:11px;color:#aaa}.realtime-dot{width:8px;height:8px;background:#4caf50;border-radius:50%;display:inline-block;margin-right:6px;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@media (max-width: 768px){.header,.summary,.controls,.table-wrap,.tabs{padding-left:16px;padding-right:16px}}
