/* 동쪽구름 ERP — components.css (원본 동쪽구름_ERP.html에서 분할, 순서보존) */
/* toast */
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#0f1b34;color:#fff;padding:11px 18px;border-radius:10px;font-size:13px;z-index:99;box-shadow:0 8px 24px #0004}

/* ===== 새 견적 버튼 ===== */
.newbtn{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:700;cursor:pointer}
.newbtn:hover{background:var(--blue-d)}
/* ===== 견적 입력 에디터 ===== */
.ed-overlay{position:fixed;inset:0;background:#0f1b3455;z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:28px 16px;overflow:auto}
.ed-panel{background:#fff;border-radius:14px;width:760px;max-width:100%;box-shadow:0 20px 60px #0004}
.ed-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.ed-head h2{font-size:17px}
.ed-head .x{margin-left:auto;border:none;background:none;font-size:22px;cursor:pointer;color:var(--mut)}
.ed-modes{display:flex;gap:6px;padding:12px 18px 0}
.ed-mode{border:1px solid var(--line);background:#fff;border-radius:8px 8px 0 0;padding:9px 14px;font-size:13px;cursor:pointer;color:var(--mut);border-bottom:none}
.ed-mode.on{background:#1d4ed80d;color:var(--blue);font-weight:700;border-color:var(--blue)}
.ed-body{padding:16px 18px;border-top:1px solid var(--line);margin-top:-1px}
.fgrid{display:grid;grid-template-columns:110px 1fr;gap:9px 12px;align-items:center;margin-bottom:12px}
.fgrid label{font-size:12.5px;color:var(--mut)}
.fgrid input,.fgrid select{height:34px;border:1px solid var(--line);border-radius:7px;padding:0 10px;font-size:13px;width:100%}
.fgrid input:focus,.fgrid select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #1d4ed822}
.ac-wrap{position:relative}
.ac-list{position:absolute;top:36px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px #0002;z-index:70;max-height:210px;overflow:auto}
.ac-list .it{padding:8px 10px;cursor:pointer;font-size:12.5px;border-bottom:1px solid #f1f4f8}
.ac-list .it:hover,.ac-list .it.hi{background:#1d4ed80d}
.ac-list .it .sp{color:var(--mut2);font-size:11px;margin-left:6px}
.lines-t{width:100%;border-collapse:collapse;margin-top:4px}
.lines-t th{font-size:11px;color:var(--mut);text-align:left;padding:5px 6px;border-bottom:1px solid var(--line)}
.lines-t td{padding:4px 6px;border-bottom:1px solid #f4f6fa;vertical-align:middle}
.lines-t input{height:30px;border:1px solid var(--line);border-radius:6px;padding:0 7px;font-size:12.5px;width:100%}
.lines-t .num input{text-align:right}
.lines-t .del{border:none;background:none;color:var(--danger);cursor:pointer;font-size:15px}
.addline{margin-top:8px;border:1px dashed var(--blue);background:#1d4ed80a;color:var(--blue);border-radius:7px;padding:7px 12px;font-size:12.5px;cursor:pointer;font-weight:600;width:100%}
.ed-total{display:flex;justify-content:flex-end;gap:20px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:13px}
.ed-total b{color:var(--blue);font-size:16px}
.ed-foot{display:flex;gap:8px;justify-content:flex-end;padding:14px 18px;border-top:1px solid var(--line)}
.ed-foot button{border-radius:8px;padding:9px 18px;font-size:13px;cursor:pointer;font-weight:600}
.ed-foot .save{background:var(--blue);color:#fff;border:none}
.ed-foot .cancel{background:#fff;border:1px solid var(--line);color:var(--mut)}
/* 채팅형 */
.chatbox{border:1px solid var(--line);border-radius:10px;height:230px;overflow:auto;padding:12px;background:var(--bg)}
.cmsg{max-width:78%;padding:8px 12px;border-radius:12px;font-size:12.5px;margin-bottom:8px;line-height:1.5}
.cmsg.ai{background:#fff;border:1px solid var(--line)}
.cmsg.me{background:var(--blue);color:#fff;margin-left:auto}
.cmsg.sys{background:#fdf3dc;color:#9a6a00;font-size:11.5px;text-align:center;max-width:100%}
.chatctrl{display:flex;gap:8px;margin-top:10px;align-items:center}
.chatctrl input[type=text]{flex:1;height:36px;border:1px solid var(--line);border-radius:8px;padding:0 12px;font-size:13px}
.filebtn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 12px;font-size:12.5px;cursor:pointer;color:var(--mut)}
.chatsend{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:8px 16px;font-size:13px;cursor:pointer;font-weight:600}
.files{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.filechip{background:#e8eefc;color:var(--blue);border-radius:14px;padding:3px 10px;font-size:11.5px}
/* 위저드 */
.wz-steps{display:flex;gap:6px;margin-bottom:14px}
.wz-steps .s{flex:1;text-align:center;font-size:12px;color:var(--mut2);padding:8px;border-radius:8px;background:var(--bg)}
.wz-steps .s.on{background:var(--blue);color:#fff;font-weight:600}
.wz-steps .s.done{background:#e8eefc;color:var(--blue)}
.wz-nav{display:flex;justify-content:space-between;margin-top:14px}
.hint{font-size:11.5px;color:var(--mut2);margin-top:4px}

.tbtn{height:36px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:0 12px;font-size:12.5px;cursor:pointer;color:var(--ink)}
.tbtn:hover{background:var(--bg)}
.period{display:flex;gap:8px;align-items:center}

.lines-t select{height:30px;border:1px solid var(--line);border-radius:6px;font-size:11.5px;padding:0 4px;background:#fff;width:100%}
.lines-t td{vertical-align:middle}

.cf-overlay{position:fixed;inset:0;background:#0f1b3466;z-index:80;display:flex;align-items:center;justify-content:center;padding:16px}
.cf-box{background:#fff;border-radius:14px;padding:22px 24px;width:340px;max-width:100%;text-align:center;box-shadow:0 20px 60px #0004}
.cf-ic{width:46px;height:46px;border-radius:50%;background:#fbe9e9;color:#b42222;font-size:24px;font-weight:800;display:flex;align-items:center;justify-content:center;margin:0 auto 12px}
.cf-msg{font-size:14px;line-height:1.55;color:#1e293b;margin-bottom:18px}
.cf-btns{display:flex;gap:8px}
.cf-btns button{flex:1;border-radius:8px;padding:10px;font-size:13px;font-weight:600;cursor:pointer;border:none}
.cf-cancel{background:#fff;border:1px solid var(--line)!important;color:var(--mut)}
.cf-ok{background:#b42222;color:#fff}

/* 기초정보 폼 섹션 */
.sec{border:1px solid var(--line);border-radius:12px;margin-bottom:14px;overflow:hidden}
.sec-h{display:flex;align-items:center;gap:8px;background:#f7f9fd;padding:10px 14px;font-weight:700;font-size:13px;color:var(--ink);border-bottom:1px solid var(--line)}
.sec-h .lockbadge{margin-left:auto;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:12px;background:var(--wait-bg);color:#5b6472;cursor:pointer;border:1px solid var(--line)}
.sec-h .lockbadge.locked{background:#fdf3dc;color:#9a6a00}
.sec-b{padding:12px 14px}
.frow{display:grid;grid-template-columns:96px 1fr;gap:8px 12px;align-items:center;margin-bottom:8px}
.frow:last-child{margin-bottom:0}
.frow label{font-size:12.5px;color:var(--mut)}
.frow input,.frow select,.frow textarea{height:34px;border:1px solid var(--line);border-radius:7px;padding:0 10px;font-size:13px;width:100%;background:#fff}
.frow textarea{height:auto;padding:8px 10px;resize:vertical}
.frow input:disabled{background:#f4f6fa;color:#64748b}
.frow input:focus,.frow select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #1d4ed822}
.addr-row{display:flex;gap:6px}
.addr-row input{flex:1}
.addr-btn{white-space:nowrap;border:1px solid var(--blue);background:#fff;color:var(--blue);border-radius:7px;padding:0 12px;font-size:12.5px;cursor:pointer;font-weight:600}
.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hint2{font-size:11px;color:var(--mut2);margin-top:3px}
.role-badge{font-size:11px;padding:2px 8px;border-radius:12px;font-weight:600}
.r-cust{background:#e8eefc;color:var(--blue)}
.r-vend{background:#e6f5ee;color:var(--ok)}
.r-both{background:#f1e8fc;color:#6b3fb5}
.navlabel{font-size:10.5px;color:#5f7099;padding:10px 10px 4px;letter-spacing:1px}

.filterrow th{position:sticky;top:33px;background:#fff;z-index:4;padding:3px 5px;border-bottom:1px solid var(--line)}
.colf{width:100%;height:26px;border:1px solid var(--line);border-radius:5px;padding:0 4px;font-size:11px;background:#fff}
.colf:focus{outline:none;border-color:var(--blue)}
.rowmenu{border:1px solid var(--line);background:#fff;border-radius:6px;padding:1px 9px;font-size:16px;cursor:pointer;color:var(--mut);line-height:1.1}
.rowmenu:hover{background:var(--bg);border-color:var(--blue);color:var(--blue)}
.rowmenupop{position:fixed;z-index:70;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 28px #0003;padding:5px;min-width:170px}
.rowmenupop button{display:block;width:100%;text-align:left;border:none;background:none;padding:8px 12px;font-size:12.5px;cursor:pointer;border-radius:6px;color:var(--ink)}
.rowmenupop button:hover{background:var(--bg)}
.rowmenupop button.del{color:var(--danger)}
.rowmenupop button.del:hover{background:var(--danger-bg)}
.ract{border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 9px;font-size:11.5px;cursor:pointer;color:var(--mut);margin-right:3px}
.ract:hover{background:var(--bg);border-color:var(--blue);color:var(--blue)}
.dp{font-size:10px;color:#94a3b8;margin-left:4px}
.dp.old{color:#b42222;font-weight:600}
.bstat{height:34px;border:1px solid var(--line);border-radius:7px;padding:0 8px;font-size:12.5px;background:#fff;margin-right:6px;cursor:pointer}
.qa-pay{border-color:#e0a800;color:#a06a00}
.qa-pay:hover{background:#fff8e6;border-color:#e0a800;color:#7a5000}
.qa-tax{border-color:#0f7b52;color:#0f7b52}
.qa-tax:hover{background:#e8f5ee;border-color:#0f7b52}
.qa-inst{border-color:#12467b;color:#12467b}
.qa-inst:hover{background:#e8eefc;border-color:#12467b}
.kpibar{display:flex;gap:10px;padding:2px 0 10px}
.kpi{flex:1;background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 13px}
.kpi-l{font-size:11px;color:var(--mut)}
.kpi-v{font-size:17px;font-weight:700;margin-top:2px}
.tabmode{display:inline-flex;gap:3px;background:#eef1f6;border-radius:8px;padding:3px;margin-bottom:8px}
.tabmode button{border:none;background:none;padding:5px 13px;font-size:12px;border-radius:6px;cursor:pointer;color:var(--mut)}
.tabmode button.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px #0001}
.paybar{height:4px;background:#eef1f6;border-radius:3px;margin-top:3px;overflow:hidden;max-width:90px}
.paybar-f{height:100%;background:#e0a800}
#srows tr.overdue td:first-child{box-shadow:inset 3px 0 0 #b42222}
.qlink{color:#3b6db4;cursor:pointer;text-decoration:none}
.qlink:hover{text-decoration:underline}
