*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{color:#16233c;background:#eef1f6;font-family:Malgun Gothic,Apple SD Gothic Neo,Noto Sans KR,Segoe UI,sans-serif;font-size:13px}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}.topbar{color:#fff;z-index:40;background:#16233c;align-items:center;gap:18px;height:48px;padding:0 20px;display:flex;position:sticky;top:0}.topbar .brand{letter-spacing:-.2px;white-space:nowrap;color:#fff;font-size:15px;font-weight:700}.topbar nav{flex:1;gap:2px;display:flex;overflow-x:auto}.topbar nav a{color:#c9d4e6;white-space:nowrap;border-radius:14px;align-items:center;gap:5px;padding:6px 11px;font-size:12.5px;text-decoration:none;display:inline-flex}.topbar nav a:hover{color:#fff;background:#ffffff14}.topbar nav a.active{color:#fff;background:#4f8cff;font-weight:700}.topbar .nav-count{color:#fff;background:#d33;border-radius:9px;padding:0 6px;font-size:10.5px;line-height:16px}.topbar .right{align-items:center;gap:10px;display:flex}.topbar .user{color:#c9d4e6;font-size:12px}.bell{color:#c9d4e6;background:0 0;align-items:center;padding:5px 8px;display:inline-flex;position:relative}.bell:hover{color:#fff}.bell svg{width:18px;height:18px}.bell .badge{position:absolute;top:-2px;right:-4px}.page{min-width:0;margin:0;padding:16px 20px 40px}.card{min-width:0}.page.wide{max-width:none}.page-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.page-head h1{letter-spacing:-.3px;font-size:17px}.page-head .sp{flex:1}.hint{color:#667;font-size:12px;line-height:1.6}code{background:#e2e6ee;border-radius:3px;padding:1px 5px;font-size:11.5px}pre.code{color:#dbe6ff;white-space:pre-wrap;word-break:break-all;background:#0f1a2e;border-radius:6px;padding:10px 12px;font-size:11.5px;overflow-x:auto}.hidden{display:none!important}.flex-sp{flex:1}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.col{flex-direction:column;gap:6px;display:flex}.muted{color:#8e99ac}.small{font-size:11.5px}.mono{font-family:Consolas,D2Coding,monospace}.nowrap{white-space:nowrap}textarea.chat{resize:vertical;border:1px solid #ccd;border-radius:8px;width:100%;height:55vh;margin-top:8px;padding:12px;font-family:Consolas,D2Coding,monospace;font-size:12px}.actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;display:flex}button{cursor:pointer;border:none;border-radius:6px;padding:8px 18px;font-family:inherit;font-size:13px}button:disabled{cursor:not-allowed;opacity:.6}button.primary{color:#fff;background:#2563eb;font-weight:700}button.primary:hover:not(:disabled){background:#1d4fd7}button.primary:disabled{opacity:1;background:#9aa8bd}button.ghost{color:#26405f;background:#fff;border:1px solid #c3cede}button.ghost:hover:not(:disabled){background:#f4f7fc}button.danger{color:#a52020;background:#fff;border:1px solid #e59b9b}button.danger:hover:not(:disabled){background:#fdf3f3}button.good{color:#fff;background:#15803d;font-weight:700}button.mini{padding:4px 10px;font-size:12px}button.danger-mini{color:#c33;background:0 0;border-radius:4px;padding:2px 6px;font-size:14px}button.danger-mini:hover{background:#fdecec}button.link{color:#2563eb;font-size:inherit;background:0 0;padding:0}button.link.small{font-size:11.5px}.icon-btn{color:#56637a;background:0 0;padding:4px 8px;font-size:15px}.icon-btn:hover{background:#eef1f6}.card{background:#fff;border:1px solid #dbe2ec;border-radius:10px;margin-bottom:12px;padding:12px 14px 14px;box-shadow:0 1px 2px #14233c0a}.card-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.card-head h2{color:#16233c;font-size:13.5px}.card-note{color:#6b788f;flex:1;font-size:11.5px}.sub-head{color:#3c4a63;align-items:center;gap:10px;margin:14px 0 6px;font-size:12px;font-weight:700;display:flex}.fields{flex-wrap:wrap;gap:8px 18px;display:flex}.field{flex-direction:column;gap:3px;display:flex}.field label,.field>span.lbl{color:#5a6880;font-size:11px;font-weight:700}.field small{color:#8e99ac;font-size:10.5px}input,select,textarea{color:#16233c;background:#fff;border:1px solid #ccd5e2;border-radius:5px;padding:6px 8px;font-family:inherit;font-size:12.5px}input:focus,select:focus,textarea:focus{border-color:#4f8cff;outline:2px solid #a9c6ff}input:disabled,select:disabled{color:#8e99ac;background:#f2f4f7}fieldset:disabled button{display:none}fieldset:disabled input.auto-in.is-auto{color:#5b6b86;background:#f2f4f7;border-color:#e3e8ef}input.need,select.need{background:#fff7f7;border-color:#f0b4b4}textarea.body{width:100%;min-height:220px;font-family:inherit;line-height:1.5}label.check{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.review-head{background:#fff;border:1px solid #dbe2ec;border-radius:10px;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:12px;padding:10px 14px;display:flex;box-shadow:0 1px 2px #14233c0a}.doc-id{flex-wrap:wrap;flex:1;align-items:baseline;gap:10px;min-width:260px;display:flex}.doc-no{letter-spacing:-.3px;font-size:17px;font-weight:700}.doc-meta{color:#64718a;font-size:12px}.stats{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stat{background:#f4f7fc;border:1px solid #e2e8f2;border-radius:7px;flex-direction:column;align-items:flex-end;gap:1px;min-width:74px;padding:5px 11px;display:flex}.stat span{color:#6b788f;letter-spacing:.3px;font-size:10.5px;font-weight:700}.stat b{font-size:13px}.stat.bad{background:#fdecec;border-color:#f3bcbc}.stat.bad b{color:#b42222}.drawer-btn{color:#26405f;background:#fff;border:1px solid #c3cede;align-items:center;gap:7px;padding:9px 14px;font-weight:700;display:flex}.drawer-btn:hover{background:#f4f7fc}.drawer-btn.has-block{color:#a52020;background:#fdf3f3;border-color:#e59b9b}.badge{color:#fff;background:#6b788f;border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;display:inline-flex}.badge.is-block,.badge.red{background:#d33}.table-scroll{overflow-x:auto}.grid-table{border-collapse:separate;border-spacing:0;width:100%;min-width:1080px}.grid-table.narrow{min-width:420px}.grid-table th{color:#45536e;text-align:left;white-space:nowrap;background:#f4f7fc;border-top:1px solid #dbe2ec;border-bottom:1px solid #dbe2ec;padding:6px 7px;font-size:11px;font-weight:700}.grid-table th:first-child{border-left:1px solid #dbe2ec;border-radius:6px 0 0}.grid-table th:last-child{border-right:1px solid #dbe2ec;border-radius:0 6px 0 0}.grid-table td{vertical-align:middle;border-bottom:1px solid #eaeef5;padding:3px 5px}.grid-table tbody tr:hover td{background:#fafcff}.grid-table input,.grid-table select{background:0 0;border:1px solid #0000;width:100%;padding:5px 6px}.grid-table input:hover,.grid-table select:hover{border-color:#dde4ee}.grid-table input:focus,.grid-table select:focus{background:#fff;border-color:#4f8cff}.grid-table input.r,.grid-table td.r{text-align:right}.grid-table input.c,.grid-table td.c{text-align:center}.grid-table td.out{font-variant-numeric:tabular-nums;color:#26405f;padding-right:8px;font-weight:700}.grid-table tfoot td{background:#f4f7fc;border-top:1px solid #dbe2ec;border-bottom:none;padding:7px;font-weight:700}.grid-table input.need{background:#fff7f7;border-color:#f0cfcf}.w-no{width:46px}.w-model{width:148px}.w-status{width:158px}.w-num{width:92px}.w-unit{width:96px}.w-box{width:56px}.w-del{width:34px}.grid-table th.w-num{text-align:right}.num-cell{color:#8e99ac;white-space:nowrap;font-size:11px}.row-flag{cursor:pointer;margin-left:2px;font-size:12px}.desc-cell{min-width:260px}.desc{color:#16233c;font-size:12.5px;line-height:1.35}.desc-sub{flex-wrap:wrap;gap:4px;margin-top:2px;display:flex}.chip{color:#56637a;white-space:nowrap;background:#eef2f8;border-radius:4px;padding:1px 6px;font-size:10px;display:inline-block}.chip.hs{color:#2a4b8d;background:#e8f0ff;font-weight:700}.chip.ci{color:#2c6b3a;background:#edf7ee}.chip.lot{color:#7a5b00;background:#fff6e5}.chip.muted{color:#8e99ac;background:#f2f4f7}.auto-cell{white-space:nowrap;position:relative}.auto-cell input{padding-right:18px}input.auto-in.is-auto{color:#2563eb;background:#f5f9ff;border-color:#dbe7fb}input.auto-in.is-auto:focus{color:#16233c}input.auto-in.need{background:#fff7f7;border-color:#f0cfcf}input.auto-in.need::placeholder{color:#c25b5b;font-size:11px}.revert{color:#8e99ac;background:0 0;border:none;padding:0 2px;font-size:12px;line-height:1;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.revert:hover{color:#2563eb}.sub-row td{background:#fbfcfe;border-bottom:1px solid #eaeef5;padding:0 6px 5px}.sub-row:hover td{background:#fbfcfe!important}.sub-fields{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.sub-fields:empty{display:none}.sub-fields label{color:#5a6880;align-items:center;gap:4px;font-size:11px;display:inline-flex}.sub-fields input,.sub-fields select{background:#fff;border:1px solid #dde4ee;width:auto;padding:3px 6px;font-size:11.5px}.sub-basis{color:#6b788f;margin-top:3px;font-size:11px}.sub-basis:empty{display:none}.empty{color:#8e99ac;padding:12px 4px;font-size:12px}.sticky-actions{z-index:30;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffffff0;border:1px solid #dbe2ec;border-radius:10px;margin:12px 0 0;padding:9px 14px;position:sticky;bottom:0}.scrim{z-index:55;background:#0c14264d;position:fixed;inset:0}.drawer{z-index:60;visibility:hidden;background:#fff;flex-direction:column;width:430px;max-width:92vw;height:100vh;transition:transform .22s,visibility .22s;display:flex;position:fixed;top:0;right:0;transform:translate(100%);box-shadow:-10px 0 28px #101c3633}.drawer.open{visibility:visible;transform:translate(0)}.drawer-head{background:#f7f9fc;border-bottom:1px solid #e4e9f1;justify-content:space-between;align-items:center;padding:13px 14px;display:flex}.drawer-head h2{align-items:baseline;gap:8px;font-size:14px;display:flex}.drawer-sub{color:#6b788f;font-size:11.5px;font-weight:400}.drawer-body{flex:1;padding:12px 14px 24px;overflow-y:auto}.drawer-body h3{color:#3c4a63;margin:16px 0 6px;font-size:12px}.warn-item{border-radius:6px;margin-bottom:6px;padding:8px 10px;font-size:12px;line-height:1.55}.warn-item b{letter-spacing:.2px;margin-bottom:2px;font-size:11px;display:block}.warn-item.block{color:#8c1c1c;background:#fdecec;border:1px solid #f3bcbc}.warn-item.warn{color:#705200;background:#fff8e6;border:1px solid #f0dc9c}.warn-item.ok{color:#14532d;background:#e9f9ee;border:1px solid #b2e5c3}.warn-item.info{color:#1f3d7a;background:#eef4ff;border:1px solid #c9dbfb}.basis-item{color:#46536b;border-left:2px solid #dbe2ec;margin-bottom:6px;padding:3px 0 3px 8px;font-size:11.5px;line-height:1.5}.basis-item b{color:#16233c}.doc-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.doc-head b{font-size:16px}.doc-head .actions{margin-top:0}.preview-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.preview-grid h3{color:#3c4a63;margin-bottom:5px;font-size:12px}.preview-grid iframe{background:#fff;border:1px solid #ccd;border-radius:8px;width:100%;height:calc(100vh - 230px);min-height:600px}@media (width<=1100px){.preview-grid{grid-template-columns:1fr}}.spin{color:#2563eb;font-weight:700}.err{color:#c02626;font-weight:700}.good{color:#15803d;font-weight:700}.status-line{color:#56637a;font-size:12px}.tag{color:#2a4b8d;white-space:nowrap;background:#e8f0ff;border-radius:10px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.tag.muted{color:#6b788f;background:#eef1f5}.tag.warn{color:#7a5600;background:#fff3d6}.tag.bad{color:#a01d1d;background:#fde2e2}.tag.good{color:#166534;background:#dff5e6}.tag.info{color:#1d4fd7;background:#e3efff}.tag.dark{color:#fff;background:#16233c}.list-table{border-collapse:collapse;background:#fff;width:100%}.list-table th{text-align:left;color:#5a6880;white-space:nowrap;background:#f4f7fc;border-bottom:1px solid #dbe2ec;padding:7px 8px;font-size:11px}.list-table td{vertical-align:top;border-bottom:1px solid #eef1f6;padding:7px 8px}.list-table tr.click{cursor:pointer}.list-table tr.click:hover td{background:#f7faff}.list-table td.r,.list-table th.r{text-align:right}.tabs{border-bottom:1px solid #dbe2ec;flex-wrap:wrap;gap:2px;margin-bottom:12px;display:flex}.tabs button{color:#56637a;background:0 0;border-bottom:2px solid #0000;border-radius:0;padding:8px 14px;font-size:12.5px;font-weight:700}.tabs button.active{color:#16233c;border-bottom-color:#2563eb}.tabs button .badge{margin-left:5px}.grid2{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:12px;display:grid}@media (width<=1100px){.grid2{grid-template-columns:minmax(0,1fr)}}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px;display:grid}.kpi{background:#fff;border:1px solid #dbe2ec;border-radius:10px;padding:10px 12px}.kpi span{color:#6b788f;font-size:11px;font-weight:700}.kpi b{margin-top:2px;font-size:22px;display:block}.kpi.alert b{color:#b42222}a.kpi{color:inherit;text-decoration:none}a.kpi:hover{border-color:#4f8cff}.tracks{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;display:grid}.track{background:#fbfcfe;border:1px solid #e2e8f2;border-radius:8px;padding:9px 11px}.track h4{color:#5a6880;margin-bottom:4px;font-size:11px}.track .state{font-size:13.5px;font-weight:700}.track .state.done{color:#15803d}.track .state.wait{color:#2563eb}.track .state.warn{color:#b45309}.track .acts{flex-wrap:wrap;gap:5px;margin-top:7px;display:flex}.banner{border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;padding:9px 12px;font-size:12.5px;display:flex}.banner.warn{color:#6b4f00;background:#fff8e6;border:1px solid #f0dc9c}.banner.bad{color:#8c1c1c;background:#fdecec;border:1px solid #f3bcbc}.banner.info{color:#1f3d7a;background:#eef4ff;border:1px solid #c9dbfb}.timeline{list-style:none}.timeline li{border-bottom:1px dashed #e7ebf2;grid-template-columns:86px 1fr;gap:10px;padding:6px 0;font-size:12px;display:grid}.timeline .t{color:#8e99ac;white-space:nowrap;font-size:11px}.timeline .who{color:#8e99ac;margin-left:6px;font-size:11px}.timeline .ty{color:#56637a;background:#eef2f8;border-radius:4px;margin-right:5px;padding:0 5px;font-size:10px}.msg{background:#fff;border:1px solid #e7ebf2;border-radius:8px;margin-bottom:6px;padding:7px 9px;font-size:12px}.msg .meta{color:#8e99ac;gap:8px;margin-bottom:3px;font-size:11px;display:flex}.msg pre{white-space:pre-wrap;font-family:inherit}.msg.unsent{opacity:.55;text-decoration:line-through}.msg img{border:1px solid #e2e8f2;border-radius:6px;max-width:260px;max-height:260px}.modal{z-index:70;background:#0a142873;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-body{background:#fff;border-radius:10px;width:520px;max-width:100%;max-height:90vh;padding:20px;overflow-y:auto}.modal-body h2{margin-bottom:10px;font-size:15px}.form-col{flex-direction:column;gap:6px;margin:10px 0;display:flex}.form-col label{font-size:12px;font-weight:700}.notif-panel{color:#16233c;z-index:80;background:#fff;border-radius:10px;width:380px;max-width:94vw;max-height:70vh;position:absolute;top:46px;right:12px;overflow-y:auto;box-shadow:0 10px 30px #101c3640}.notif-panel .head{border-bottom:1px solid #e4e9f1;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.notif-item{cursor:pointer;border-bottom:1px solid #f0f2f6;padding:9px 12px;font-size:12px}.notif-item:hover{background:#f7faff}.notif-item.unread{background:#f3f8ff}.notif-item .tt{margin-bottom:2px;font-weight:700}.notif-item.sev-warn .tt{color:#8a5a00}.notif-item.sev-error .tt{color:#b42222}.login-wrap{background:#16233c;justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:#fff;border-radius:12px;width:360px;max-width:calc(100vw - 32px);padding:28px}.login-card h1{margin-bottom:4px;font-size:18px}.login-card input{width:100%;padding:9px 10px;font-size:13.5px}.login-card button{width:100%;margin-top:8px;padding:10px}.mail-preview{background:#fbfcfe;border:1px solid #e2e8f2;border-radius:8px;padding:10px 12px}.mail-preview .hdr{grid-template-columns:70px 1fr;gap:4px 8px;margin-bottom:8px;font-size:12px;display:grid}.mail-preview .hdr span{color:#6b788f;font-weight:700}.mail-preview pre{white-space:pre-wrap;font-family:inherit;font-size:12.5px;line-height:1.55}@media (width<=720px){.page{padding:12px 16px 40px}.topbar .brand{font-size:13px}.preview-grid iframe{min-height:480px}.topbar{gap:10px;padding:0 10px}.topbar .user{display:none}}fieldset{border:none;min-width:0;margin:0;padding:0}
