
:root{--bg:#f4f6f8;--card:#fff;--ink:#17202a;--muted:#64748b;--line:#d9e0e7;--nav:#17324d;--accent:#2f6f95;--soft:#eef5f9;--warn:#fff4d6;--good:#e9f7ef;--bad:#fdecec}
*{box-sizing:border-box} body{margin:0;font-family:Arial,'Malgun Gothic',sans-serif;background:var(--bg);color:var(--ink)}
header{background:var(--nav);color:#fff;padding:16px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;position:sticky;top:0;z-index:20} header h1{font-size:21px;margin:0} header small{opacity:.82}.header-right{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:3px}.header-owner{font-size:14px;font-weight:700;letter-spacing:.02em;color:#fff}
.header-brand{display:flex;align-items:center;gap:12px}.header-ci{width:31px;height:31px;object-fit:contain;flex:0 0 31px;display:block}.header-brand-text{min-width:0}
.app-shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:calc(100vh - 73px)}
.sidebar{background:#fff;border-right:1px solid var(--line);padding:18px 12px;position:sticky;top:73px;height:calc(100vh - 73px);overflow:auto}.side-title{font-size:11px;color:var(--muted);font-weight:700;letter-spacing:.08em;padding:2px 10px 10px}.nav-btn{width:100%;display:flex;align-items:center;gap:10px;text-align:left;background:transparent;color:#334155;border-radius:8px;padding:11px 12px;margin:3px 0;font-weight:700}.nav-btn:hover{background:#f1f5f9}.nav-btn.active{background:#e7f1f7;color:#174c6b;box-shadow:inset 3px 0 0 var(--accent)}.nav-icon{width:20px;text-align:center;font-size:14px}.side-foot{border-top:1px solid var(--line);margin-top:18px;padding:14px 10px 0;font-size:11px;color:var(--muted);line-height:1.6}
main{padding:18px;max-width:none;margin:0;min-width:0}.page{display:none}.page.active{display:block}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:0 0 14px}.page-head h2{margin:0;font-size:22px}.page-head p{margin:4px 0 0;color:var(--muted);font-size:13px}.sheet-tag{font-size:12px;color:#45657a;background:#eef5f9;border:1px solid #d8e6ee;border-radius:999px;padding:6px 10px}.placeholder{min-height:420px;display:flex;align-items:center;justify-content:center;text-align:center}.placeholder h3{font-size:20px;margin:0 0 8px}.placeholder p{color:var(--muted);line-height:1.7;margin:0}
.grid{display:grid;grid-template-columns:1fr 360px;gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.controls{display:grid;grid-template-columns:1.25fr 2fr repeat(4,.55fr);gap:10px;align-items:end}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}.field input,.field select{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}.weight input{text-align:center}
.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}button{border:0;border-radius:8px;padding:9px 14px;cursor:pointer;background:var(--accent);color:white;font-weight:700}button.secondary{background:#e9eef2;color:#243443}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.kpi{background:var(--soft);border-radius:9px;padding:10px}.kpi b{font-size:20px;display:block}.kpi span{font-size:12px;color:var(--muted)}
.table-wrap{overflow:auto;max-height:650px;border:1px solid var(--line);border-radius:10px}table{border-collapse:collapse;width:100%;font-size:13px;white-space:nowrap}th{position:sticky;top:0;background:#eaf1f5;z-index:2;padding:9px;border-bottom:1px solid #cdd8e0;text-align:center}td{padding:8px 9px;border-bottom:1px solid #edf0f2;text-align:center}td.name{text-align:left;font-weight:700;color:#1d4f73;cursor:pointer}td.reason{text-align:left;min-width:230px}.badge{display:inline-block;padding:3px 7px;border-radius:999px;font-size:11px;font-weight:700}
/* V0.60.7.34 공통 상태 색상 체계 */
.status-writing{background:#fff4d6!important;color:#8a6515!important}
.status-win{background:#e9f7ef!important;color:#28764a!important}
.status-loss{background:#fdecec!important;color:#a33!important}
.kpi-win-result{background:#e9f7ef!important;border-color:#cfe7d7!important;color:#28764a!important}
.kpi-win-result span,.kpi-win-result b{color:#28764a!important}
.kpi-loss-result{background:#fdecec!important;border-color:#f2cccc!important;color:#a33!important}
.kpi-loss-result span,.kpi-loss-result b{color:#a33!important}
.status-waiting{background:#e5f2ff!important;color:#175a86!important}
.status-free{background:#edf4f8!important;color:#476579!important}
.status-assigned-sem{background:#e9f7ef!important;color:#28764a!important}
.status-unassigned-sem{background:#f4f6f8!important;color:#5f6f7c!important}
.p1{background:#e5f2ff;color:#175a86}.p2{background:#edf4f8;color:#476579}.good{background:var(--good);color:#28764a}.warn{background:var(--warn);color:#8a6515}.bad{background:var(--bad);color:#a33}.muted{color:var(--muted)}
.detail h2{margin-top:0;font-size:19px}.detail .meta{display:grid;grid-template-columns:1fr 1fr;gap:8px}.detail .meta div{background:#f7f9fb;padding:8px;border-radius:8px}.detail ul{padding-left:18px}.decision{margin-top:16px}.pick{padding:9px;background:#f7f9fb;border:1px solid var(--line);border-radius:8px;margin:7px 0}.pick b{display:block}.pick-status{margin:8px 0 0;padding:8px 9px;border-radius:8px;background:#f7f9fb;border:1px solid var(--line);font-size:12px;line-height:1.45}.pick-status.ok{background:#e9f7ef;border-color:#cfe7d7;color:#28764a}.pick-status.warn{background:#fff4d6;border-color:#ead69d;color:#8a6515}.draft-chip{display:inline-block;margin-left:5px;padding:2px 6px;border-radius:999px;background:#e5f2ff;color:#175a86;font-size:10px;font-weight:700;vertical-align:middle}.note{font-size:12px;color:var(--muted);line-height:1.5;margin-top:8px}.footer{font-size:12px;color:var(--muted);margin-top:14px}

/* V0.18 메뉴체계 개편 */
.nav-divider{height:1px;background:var(--line);margin:12px 8px}.page-note{background:#f8fafc;border:1px solid var(--line);padding:10px 12px;border-radius:8px;color:var(--muted);font-size:12px;line-height:1.6;margin-bottom:12px}
.module-toolbar{display:grid;grid-template-columns:1.5fr repeat(3,.8fr) auto;gap:8px;align-items:end;margin-bottom:12px}.module-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-bottom:12px}.module-kpi{background:var(--soft);border:1px solid #dde8ef;border-radius:9px;padding:10px}.module-kpi b{display:block;font-size:19px}.module-kpi span{font-size:11px;color:var(--muted)}
.module-table-wrap{overflow:auto;max-height:650px;border:1px solid var(--line);border-radius:9px}.module-table{min-width:1050px}.module-table td.name-link{text-align:left;font-weight:700;color:#1d4f73}.module-table td.text-left{text-align:left;white-space:normal;line-height:1.35}.placeholder-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.placeholder-box{border:1px solid var(--line);background:#f8fafc;border-radius:9px;padding:13px}.placeholder-box h4{margin:0 0 7px;font-size:14px}.placeholder-box p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}.admin-tabs{display:flex;gap:7px;margin-bottom:12px}.admin-tab{background:#eef2f6;color:#334155}.admin-tab.active{background:var(--accent);color:#fff}.business-tabs{display:flex;gap:7px;margin:0 0 12px;flex-wrap:wrap}.business-tabs button{background:#eef2f6;color:#334155}.business-tabs button.active{background:var(--accent);color:#fff}.business-tabs button[data-mode="new"]{margin-left:auto}.new-project-panel{display:none;border:1px solid var(--line);background:#fbfcfd;border-radius:9px;padding:14px;margin:12px 0}.new-project-panel.show{display:block}.new-project-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px}.new-project-grid .span2{grid-column:span 2}.new-project-grid .span4{grid-column:span 4}.new-project-grid textarea{width:100%;min-height:78px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;font-family:inherit;resize:vertical}.new-project-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.business-mode-note{font-size:12px;color:var(--muted);margin:0 0 10px}.web-new-chip{display:inline-block;padding:2px 6px;border-radius:999px;background:#eef5f9;color:#2f6f95;font-size:10px;font-weight:700;margin-left:5px}@media(max-width:1100px){.new-project-grid{grid-template-columns:1fr 1fr}.new-project-grid .span4{grid-column:span 2}}
@media(max-width:1000px){.module-toolbar{grid-template-columns:1fr 1fr}.module-kpis{grid-template-columns:1fr 1fr}.placeholder-grid{grid-template-columns:1fr}}
@media(max-width:1000px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;top:0;height:auto;border-right:0;border-bottom:1px solid var(--line);display:flex;gap:4px;overflow:auto;padding:8px}.side-title,.side-foot{display:none}.nav-btn{width:auto;white-space:nowrap;margin:0}.grid{grid-template-columns:1fr}.controls{grid-template-columns:1fr 1fr}.kpis{grid-template-columns:1fr 1fr}.detail{order:-1}}

/* V0.13 진행중사업 */
.ongoing-toolbar{display:grid;grid-template-columns:2.1fr repeat(4,minmax(120px,.8fr)) auto;gap:9px;align-items:end}.ongoing-toolbar .field input,.ongoing-toolbar .field select{height:38px}.ongoing-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end}.ongoing-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:14px 0}.ongoing-kpi{background:#f7f9fb;border:1px solid var(--line);padding:11px 12px;border-radius:9px;cursor:pointer;min-height:64px}.ongoing-kpi:hover{background:#eef5f9}
.ongoing-kpi.kpi-win-result:hover{background:#def2e6!important}
.ongoing-kpi.kpi-loss-result:hover{background:#f9dddd!important}.ongoing-kpi b{font-size:20px;display:block}.ongoing-kpi span{font-size:11px;color:var(--muted)}.ongoing-layout{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:14px}.ongoing-table-wrap{overflow:auto;max-height:690px;border:1px solid var(--line);border-radius:10px;background:#fff}
.ongoing-table{width:100%;min-width:1340px;table-layout:fixed}
.ongoing-table th,.ongoing-table td{box-sizing:border-box}
.ongoing-table th:nth-child(3),.ongoing-table td:nth-child(3){width:175px}
.ongoing-table th:nth-child(4),.ongoing-table td:nth-child(4){width:320px}
.ongoing-table td.agency-cell{
  text-align:left;
  white-space:normal;
  word-break:keep-all;
  overflow-wrap:anywhere;
  line-height:1.35;
  vertical-align:middle;
}
.ongoing-table td.project-name{
  text-align:left;
  white-space:normal;
  word-break:keep-all;
  overflow-wrap:anywhere;
  line-height:1.35;
  cursor:pointer;
  color:#1d4f73;
  font-weight:700;
  vertical-align:middle;
}
.ongoing-table tr:hover td{background:#f8fbfd}.imp-A{background:#fdecec;color:#a33}.imp-B{background:#fff4d6;color:#8a6515}.imp-C{background:#edf4f8;color:#476579}.stage-pre{background:#eef5ff;color:#2b5f91}.stage-main{background:#e9f7ef;color:#28764a}.status-unassigned{background:#fdecec;color:#a33}.status-assigned{background:#e9f7ef;color:#28764a}.dday-urgent{font-weight:800;color:#b42318}.dday-warn{font-weight:800;color:#8a6515}.dday-ok{color:#28764a}.ongoing-detail{position:sticky;top:0;align-self:start;max-height:760px;overflow:auto}.ongoing-detail h2{font-size:18px;margin:0 0 4px}.ongoing-detail .project-id{font-size:11px;color:var(--muted);margin-bottom:12px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0}.detail-item{background:#f7f9fb;border:1px solid #edf0f2;padding:8px;border-radius:7px;min-height:54px}.detail-item span{display:block;color:var(--muted);font-size:11px;margin-bottom:3px}.detail-item b{font-size:13px;word-break:break-word}.detail-block{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}.detail-block h3{font-size:13px;margin:0 0 6px}.detail-block p{font-size:12px;line-height:1.55;white-space:pre-wrap;margin:0;color:#334155}.timeline-mini{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin-top:8px}.timeline-step{border:1px solid var(--line);background:#fff;padding:7px 4px;text-align:center;border-radius:6px;font-size:10px}.timeline-step b{display:block;font-size:11px;margin-top:3px}.timeline-step.done{background:#eef7f1;border-color:#cfe7d7}.timeline-step.current{background:#eef5f9;border-color:#b7d0df}.ongoing-summary{font-size:12px;color:var(--muted);margin-left:auto}.empty-row{padding:30px!important;color:var(--muted);text-align:center!important}@media(max-width:1250px){.ongoing-toolbar{grid-template-columns:1.5fr repeat(2,1fr)}.ongoing-kpis{grid-template-columns:repeat(3,1fr)}.ongoing-layout{grid-template-columns:1fr}.ongoing-detail{position:static;max-height:none}}

/* V0.14 제안배정 현황 UI */
.assignment-summary{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}.assignment-kpi{background:#f7f9fb;border:1px solid var(--line);border-radius:9px;padding:12px}.assignment-kpi b{display:block;font-size:20px}.assignment-kpi span{font-size:11px;color:var(--muted)}.assignment-kpi{cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}.assignment-kpi:hover{background:#eef4f8}.assignment-kpi.active{background:#e8f2f8;border-color:#8fb7cf;box-shadow:0 0 0 1px #c5dce9 inset}
.assignment-toolbar{display:grid;grid-template-columns:2fr repeat(4,minmax(120px,.8fr)) auto;gap:9px;align-items:end;margin-bottom:12px}.assignment-toolbar .field input,.assignment-toolbar .field select{height:38px}.assignment-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px}.assignment-table-wrap{overflow:auto;max-height:690px;border:1px solid var(--line);border-radius:10px;background:#fff}.assignment-table{min-width:1380px}.assignment-table td.left{text-align:left;white-space:normal}.assignment-table td.project{min-width:300px;max-width:420px;font-weight:700;color:#1d4f73}.assignment-detail{position:sticky;top:0;align-self:start}.assignment-detail h3{margin:0 0 10px;font-size:17px}.assignment-section{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}.assignment-section:first-of-type{border-top:0;padding-top:0;margin-top:0}.assignment-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px}.assignment-meta div{background:#f7f9fb;border-radius:8px;padding:9px}.assignment-meta span{display:block;font-size:11px;color:var(--muted);margin-bottom:3px}.assignment-meta b{font-size:13px}.assignment-note{font-size:12px;line-height:1.55;color:var(--muted)}.assign-chip{display:inline-block;padding:3px 7px;border-radius:999px;font-size:11px;font-weight:700;background:#eef5f9;color:#476579}.assign-danger{background:#fdecec;color:#a33}.assign-warn{background:#fff4d6;color:#8a6515}.assign-good{background:#e9f7ef;color:#28764a}.assignment-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.draft-row{background:#f3fbf6}.draft-row td{border-bottom-color:#d7eadc}.draft-focus{outline:3px solid #4f9d69;outline-offset:-3px;transition:outline .2s}.draft-chip{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:999px;font-size:10px;font-weight:700;background:#e9f7ef;color:#28764a;vertical-align:middle}
@media(max-width:1200px){.assignment-summary{grid-template-columns:repeat(3,1fr)}.assignment-toolbar{grid-template-columns:1fr 1fr 1fr}.assignment-layout{grid-template-columns:1fr}.assignment-detail{position:relative}}

/* V0.16 개인별현황 */
.personal-toolbar{display:grid;grid-template-columns:2fr repeat(3,minmax(130px,.8fr)) auto;gap:9px;align-items:end;margin-bottom:12px}.personal-toolbar .field input,.personal-toolbar .field select{height:38px}.personal-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px}.personal-kpi{background:#f7f9fb;border:1px solid var(--line);border-radius:9px;padding:12px}.personal-kpi.clickable{cursor:pointer}.personal-kpi.clickable:hover{background:#eef5f9}.personal-kpi.active{background:#e4f1f8;border-color:#93b8cf;box-shadow:inset 0 0 0 1px #93b8cf}.personal-kpi b{display:block;font-size:20px}.personal-kpi span{font-size:11px;color:var(--muted)}.personal-layout{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:14px}.personal-table-wrap{overflow:auto;max-height:690px;border:1px solid var(--line);border-radius:10px;background:#fff}.personal-table{min-width:1050px}.personal-table td.person-name{text-align:left;font-weight:700;color:#1d4f73;cursor:pointer}.personal-table tr:hover td{background:#f8fbfd}.personal-detail{position:sticky;top:0;align-self:start;max-height:760px;overflow:auto}.personal-detail h3{margin:0 0 10px;font-size:17px}.personal-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px}.personal-meta div{background:#f7f9fb;border-radius:8px;padding:9px}.personal-meta span{display:block;font-size:11px;color:var(--muted);margin-bottom:3px}.personal-meta b{font-size:13px}.personal-section{border-top:1px solid var(--line);padding-top:11px;margin-top:11px}.personal-section h4{font-size:13px;margin:0 0 7px}.personal-list{list-style:none;margin:0;padding:0}.personal-list li{padding:7px 0;border-bottom:1px solid #edf0f2;font-size:12px;line-height:1.4}.personal-list li:last-child{border-bottom:0}.personal-list .personal-group-title{padding:7px 8px;margin-top:5px;background:#f7f9fb;border:0;border-radius:7px;font-weight:800;color:#334155}.personal-list .personal-group-title:first-child{margin-top:0}.personal-detail .result-badge{margin-right:4px}
.detail .rec-section{border-top:1px solid var(--line);padding-top:11px;margin-top:11px}
.detail .rec-section h3{font-size:13px;margin:0 0 7px}
.detail .rec-list{list-style:none;margin:0;padding:0}
.detail .rec-list li{padding:7px 0;border-bottom:1px solid #edf0f2;font-size:12px;line-height:1.4}
.detail .rec-list li:last-child{border-bottom:0}
.detail .rec-group-title{padding:7px 8px!important;margin-top:5px;background:#f7f9fb;border:0!important;border-radius:7px;font-weight:800;color:#334155}
.detail .rec-score-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:7px}
.detail .rec-score-grid div{background:#f7f9fb;border-radius:7px;padding:7px 3px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-height:53px;min-width:0;gap:5px}
.detail .rec-score-grid span{display:flex;align-items:center;justify-content:center;min-height:24px;font-size:10px;line-height:1.2;color:var(--muted);word-break:keep-all;text-wrap:balance}
.detail .rec-score-grid b{font-size:13px}
.detail .rec-note{font-size:11px;color:var(--muted);line-height:1.5}
.personal-note{font-size:12px;color:var(--muted);line-height:1.55}.rate-good{font-weight:700;color:#28764a}.rate-warn{font-weight:700;color:#8a6515}.load-heavy{background:#fdecec;color:#a33}.load-normal{background:#e9f7ef;color:#28764a}@media(max-width:1200px){.personal-kpis{grid-template-columns:repeat(3,1fr)}.personal-toolbar{grid-template-columns:1fr 1fr 1fr}.personal-layout{grid-template-columns:1fr}.personal-detail{position:relative}}

/* V0.16 제안운영현황 */
.operation-kpis{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin-bottom:14px}.operation-kpi{background:#fff;border:1px solid var(--line);border-radius:10px;padding:13px 14px}.operation-kpi b{display:block;font-size:23px}.operation-kpi span{font-size:12px;color:var(--muted)}.operation-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.operation-title{font-size:16px;margin:0 0 12px}.operation-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.operation-overview-grid{align-items:stretch}
.operation-performance-card,.operation-stage-card{min-width:0}
.operation-performance-stats{grid-template-columns:minmax(0,.9fr) minmax(0,.9fr) minmax(0,.9fr) minmax(0,.9fr) minmax(125px,1.35fr)}
.operation-stage-stats{grid-template-columns:repeat(5,minmax(0,1fr))}
.operation-performance-stats .op-win-amount-kpi b{white-space:nowrap;font-size:16px}.operation-stats div{background:#f7f9fb;border:1px solid #e7edf1;padding:10px;border-radius:8px}.operation-stats span{display:block;font-size:11px;color:var(--muted);margin-bottom:4px}.operation-stats b{font-size:18px}.operation-table-wrap{overflow:auto;max-height:320px;border:1px solid var(--line);border-radius:8px}.operation-table-wrap table{font-size:12px;table-layout:fixed;width:100%}.operation-table-wrap td:nth-child(3),.operation-table-wrap td:nth-child(4){text-align:left}.operation-table-wrap th,.operation-table-wrap td{overflow-wrap:anywhere;word-break:keep-all}.operation-table-wrap .op-project-col{width:210px;white-space:normal;line-height:1.35}.operation-table-wrap .op-agency-col{width:135px;white-space:normal;line-height:1.35}.operation-table-wrap .op-leader-col{width:90px}.operation-table-wrap .op-date-col{width:84px}.operation-table-wrap .op-money-col{width:105px}.operation-table-wrap .op-result-col{width:78px}.operation-table-wrap .op-status-col{width:72px}.operation-table-wrap .op-importance-col{width:76px}.operation-table-wrap .op-dday-col{width:62px}.operation-schedule{margin-bottom:14px}.operation-schedule-list{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.op-event{background:#f7f9fb;border:1px solid #e5ebef;border-radius:8px;padding:10px}
.op-event.op-evaluation{background:#eef9ef;border-color:#cfe7d2}
.op-event b{display:block;margin:3px 0;font-size:13px}
.op-event span{font-size:11px;color:var(--muted)}
.op-event-kind{display:inline-block;font-size:9px!important;padding:2px 5px;border-radius:4px;background:#ddeaf1;color:#315b74!important;margin-right:4px;font-weight:800}
.op-event.op-evaluation .op-event-kind{background:#d9efdd;color:#276137!important}@media(max-width:1200px){.operation-kpis{grid-template-columns:repeat(3,1fr)}.operation-grid{grid-template-columns:1fr}.operation-stats{grid-template-columns:repeat(3,1fr)}.operation-performance-stats{grid-template-columns:repeat(4,minmax(0,1fr)) minmax(125px,1.3fr)}.operation-stage-stats{grid-template-columns:repeat(5,minmax(0,1fr))}.operation-schedule-list{grid-template-columns:repeat(2,1fr)}}
/* V0.60.7.34 제안운영현황 한 화면 압축 */
#page-operation .page-head{margin-bottom:8px}
#page-operation .waiting-split{margin-bottom:7px;font-size:11px}
#page-operation .operation-grid{gap:9px;margin-bottom:9px}
#page-operation .card{padding:11px}
#page-operation .operation-title{font-size:14px;margin-bottom:7px}
#page-operation .operation-stats{gap:6px}
#page-operation .operation-overview-grid{margin-bottom:9px}
#page-operation .operation-performance-stats{grid-template-columns:minmax(0,.9fr) minmax(0,.9fr) minmax(0,.9fr) minmax(0,.9fr) minmax(130px,1.4fr)}
#page-operation .operation-stage-stats{grid-template-columns:repeat(5,minmax(0,1fr))}
#page-operation .operation-performance-stats .op-win-amount-kpi b{font-size:15px}
#page-operation .operation-stats div{padding:7px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
#page-operation .operation-stats span{font-size:10.5px;margin-bottom:2px;text-align:center}
#page-operation .operation-stats b{font-size:16px;text-align:center}
#page-operation .operation-stats .kpi-neutral-blue{background:#eaf3ff;border-color:#cddff7;color:#1f4f88}
#page-operation .operation-stats .kpi-neutral-blue span,#page-operation .operation-stats .kpi-neutral-blue b{color:#1f4f88}
#page-operation .operation-stats .kpi-neutral-yellow{background:#fff3cd;border-color:#f0d98a;color:#222}
#page-operation .operation-stats .kpi-neutral-yellow span,#page-operation .operation-stats .kpi-neutral-yellow b{color:#222}
#page-ongoing .ongoing-kpi.kpi-neutral-yellow,#page-history .history-kpi.kpi-neutral-yellow{background:#fff3cd;border-color:#f0d98a;color:#222}
#page-ongoing .ongoing-kpi.kpi-neutral-yellow span,#page-ongoing .ongoing-kpi.kpi-neutral-yellow b,#page-history .history-kpi.kpi-neutral-yellow span,#page-history .history-kpi.kpi-neutral-yellow b{color:#222}
#page-ongoing .ongoing-kpi.kpi-neutral-yellow:hover{background:#ffedb3;border-color:#e6c85f}
#page-operation .operation-performance-stats .op-win-amount-kpi b{white-space:nowrap;font-size:15px}
#page-operation .operation-table-wrap{max-height:430px}
#page-operation .operation-table-wrap th{padding:6px 7px}
#page-operation .operation-table-wrap td{padding:5px 7px}
#page-operation .operation-schedule{margin-bottom:8px}
#page-operation .operation-schedule-list{gap:7px}
#page-operation .op-event{padding:7px 8px}
#page-operation .op-event b{font-size:12px;margin:2px 0}
#page-operation .op-event span{font-size:10.5px}
#page-operation .footer{margin-top:7px}
@media(min-height:900px) and (min-width:1201px){
  #page-operation .operation-table-wrap{max-height:460px}
}


.data-source-box{margin-top:14px;padding:12px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);border-radius:10px}
.data-source-box .data-title{font-size:12px;font-weight:700;color:#fff;margin-bottom:7px}
.data-source-box .data-load-btn{width:100%;padding:8px 9px;background:#dbeaf4;color:#17324d;border-radius:7px;font-size:12px}
.data-source-box .data-source-status{font-size:10.5px;line-height:1.45;color:#cbd5e1;margin-top:8px;word-break:break-word}
.data-source-box .data-source-status.bad{color:#fecaca}
.data-source-box .data-source-status.good{color:#bbf7d0}
.direct-input-note{font-size:12px;color:var(--muted);line-height:1.5;margin-left:4px}

.agency-combo{position:relative;display:flex;align-items:stretch}
.agency-combo input{padding-right:42px}
.agency-drop-btn{
  position:absolute;right:0;top:0;height:100%;width:52px;
  border:1px solid var(--line);border-left:0;border-radius:0 8px 8px 0;
  background:#fff;color:#334155;font-size:12px;padding:0;cursor:pointer
}
.agency-dropdown{
  display:none;position:absolute;left:0;right:0;top:calc(100% + 4px);
  max-height:260px;overflow:auto;background:#fff;border:1px solid var(--line);
  border-radius:8px;box-shadow:0 8px 22px rgba(0,0,0,.12);z-index:1000
}
.agency-dropdown.open{display:block}
.agency-option{padding:8px 10px;cursor:pointer;font-size:13px;border-bottom:1px solid #f1f5f9}
.agency-option:last-child{border-bottom:0}
.agency-option:hover,.agency-option.active{background:#eef5f9}
.agency-empty{padding:10px;color:var(--muted);font-size:12px}

/* V0.60.7.34 인력현황 압축 + 헤더 드롭다운 필터 */
.manpower-wrap{max-height:700px;overflow:auto;overflow-x:auto}
.manpower-table{width:100%;min-width:1900px!important;table-layout:auto;font-size:13.5px;white-space:nowrap}
.manpower-table th,.manpower-table td{padding:7px 6px!important;text-align:center;line-height:1.3}
.manpower-table thead th{position:sticky;top:0;z-index:4;background:#eef4f8;font-size:13.5px;overflow:visible;text-overflow:clip;white-space:nowrap}
.mp-head-wrap{display:flex;align-items:center;justify-content:center;gap:4px;min-width:max-content}
.mp-head-label{overflow:visible;text-overflow:clip;white-space:nowrap}
.mp-head-filter-btn{
  flex:0 0 18px;width:18px;height:19px;padding:0;border:0;background:transparent;
  color:#5d7182;font-size:11px;line-height:19px;cursor:pointer;border-radius:2px
}
.mp-head-filter-btn:hover{background:#dce8ef;color:#183c58}
.manpower-table th.mp-filter-active{background:#dcecf6}
.manpower-table th.mp-filter-active .mp-head-filter-btn{color:#0c5c8c;font-weight:700}
.mp-header-filter-menu{
  position:fixed;z-index:5000;max-height:320px;overflow:auto;background:#fff;
  border:1px solid #c9d5df;border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.16);
  padding:4px
}
.mp-filter-option{
  display:block;width:100%;border:0;background:#fff;text-align:left;padding:6px 8px;
  font-size:13px;cursor:pointer;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.mp-filter-option:hover{background:#eef5f9}
.mp-filter-option.active{background:#dcecf6;font-weight:700;color:#174e70}
.manpower-table th:nth-child(1),.manpower-table td:nth-child(1){min-width:78px}
.manpower-table th:nth-child(2),.manpower-table td:nth-child(2){min-width:80px}
.manpower-table th:nth-child(3),.manpower-table td:nth-child(3){min-width:90px}
.manpower-table th:nth-child(4),.manpower-table td:nth-child(4){min-width:100px}
.manpower-table th:nth-child(5),.manpower-table td:nth-child(5){min-width:70px}
.manpower-table th:nth-child(6),.manpower-table td:nth-child(6){min-width:90px}
.manpower-table th:nth-child(7),.manpower-table td:nth-child(7){min-width:95px}
.manpower-table th:nth-child(8),.manpower-table td:nth-child(8){min-width:80px}
.manpower-table th:nth-child(9),.manpower-table td:nth-child(9){min-width:90px}
.manpower-table th:nth-child(10),.manpower-table td:nth-child(10){min-width:70px}
.manpower-table th:nth-child(11),.manpower-table td:nth-child(11){min-width:85px}
.manpower-table th:nth-child(n+12):nth-child(-n+24),
.manpower-table td:nth-child(n+12):nth-child(-n+24){min-width:68px}
.manpower-table th:nth-child(25),.manpower-table td:nth-child(25){min-width:150px}
.manpower-table td.name-link{text-align:left;padding-left:4px!important}
.manpower-table td.mp-note{white-space:normal;line-height:1.15;text-align:left}
.mp-result-summary{display:flex;justify-content:flex-end;align-items:center;margin:2px 0 8px;font-size:12px;color:#526b7d}
.mp-result-summary b{font-size:14px;color:#173b56;margin:0 3px}
.mp-result-summary.filtered b{color:#0c5c8c}


/* V0.60.7.34 필터 드롭다운 가독성 보정 */
.mp-header-filter-menu{
  background:#ffffff !important;
  color:#1f2937 !important;
}
.mp-filter-option{
  background:#ffffff !important;
  color:#1f2937 !important;
  font-weight:400;
}
.mp-filter-option:hover{
  background:#eef5f9 !important;
  color:#183c58 !important;
}
.mp-filter-option.active{
  background:#dcecf6 !important;
  color:#174e70 !important;
  font-weight:700;
}
.mp-filter-option:focus{
  outline:none;
  background:#eef5f9 !important;
  color:#183c58 !important;
}

/* V0.60.7.34 사이드바 날짜/아날로그 시계 */
.sidebar{
  display:flex;
  flex-direction:column;
}
.sidebar-clock-panel{
  margin-top:auto;
  padding:14px 10px 16px;
  border-top:1px solid #d6e0e8;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:7px;
  color:#27445c;
}
.sidebar-date-text{
  font-size:12px;
  font-weight:700;
  letter-spacing:.1px;
  text-align:center;
}
.sidebar-time-text{
  font-size:12px;
  font-weight:700;
  font-variant-numeric:tabular-nums;
  color:#173b56;
}
.analog-clock{
  position:relative;
  width:86px;
  height:86px;
  border:2px solid #315a77;
  border-radius:50%;
  background:#fff;
  box-shadow:inset 0 0 0 2px #eef4f7;
}
.clock-mark{
  position:absolute;
  font-size:9px;
  font-weight:700;
  color:#52697a;
  line-height:1;
}
.mark-12{top:5px;left:50%;transform:translateX(-50%)}
.mark-3{right:6px;top:50%;transform:translateY(-50%)}
.mark-6{bottom:5px;left:50%;transform:translateX(-50%)}
.mark-9{left:6px;top:50%;transform:translateY(-50%)}
.clock-hand{
  position:absolute;
  left:50%;
  bottom:50%;
  transform-origin:50% 100%;
  border-radius:3px;
}
.hour-hand{
  width:3px;
  height:24px;
  margin-left:-1.5px;
  background:#173b56;
}
.minute-hand{
  width:2px;
  height:31px;
  margin-left:-1px;
  background:#315a77;
}
.second-hand{
  width:1px;
  height:34px;
  margin-left:-.5px;
  background:#b13b3b;
}
.clock-center{
  position:absolute;
  width:7px;
  height:7px;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:#173b56;
  z-index:5;
}

/* V0.60.7.34 사이드바 시계 위치 조정 */
.sidebar-clock-panel{
  margin-top:12px !important;
  margin-bottom:12px;
  border-top:1px solid #d6e0e8;
  border-bottom:1px solid #d6e0e8;
}

/* V0.60.7.34 Web 독립운영 저장 UI */
.v030-source-box{margin-top:10px}
.web-db-status{font-size:11px;font-weight:700;color:#1d5b3b;margin:6px 0 2px}
.web-db-status.warn{color:#9a6710}
.web-db-status.bad{color:#a33a3a}
.web-db-time{font-size:10px;color:#64798b;margin-bottom:8px}
.storage-admin-card{margin-top:14px}
.storage-admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.storage-admin-head h3{margin:0 0 5px;font-size:17px}
.storage-admin-head p{margin:0;color:var(--muted);font-size:12px}
.storage-kpis{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:10px;margin:14px 0}
.storage-kpis>div{background:#eef5f9;border:1px solid #d7e3ea;border-radius:8px;padding:11px 12px}
.storage-kpis b{display:block;font-size:20px;color:#173b56}
.storage-kpis span{font-size:11px;color:#667c8c}
.storage-info-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:8px 14px;padding:12px;border:1px solid #dce5eb;border-radius:8px;background:#fafcfd}
.storage-info-grid span{display:block;font-size:10px;color:#748796;margin-bottom:2px}
.storage-info-grid b{font-size:12px;color:#243e52}
.storage-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.storage-actions button{min-width:120px}
.danger-lite{background:#fff!important;color:#a13c3c!important;border:1px solid #d8a0a0!important}
.danger-lite:hover{background:#fff4f4!important}
.storage-message{margin-top:10px;padding:8px 10px;background:#f4f8fa;border-radius:6px;font-size:11px;color:#526b7d}
.storage-message.good{background:#eaf7ef;color:#286442}
.storage-message.bad{background:#fff0f0;color:#9b3d3d}
@media(max-width:900px){
  .storage-kpis{grid-template-columns:repeat(2,1fr)}
  .storage-info-grid{grid-template-columns:1fr}
}

/* V0.60.7.34 사이드바 데이터 가져오기 영역 가독성 개선 */
.v030-source-box{
  background:#f7fbfd !important;
  border:1px solid #c9d9e4 !important;
}
.v030-source-box .data-title{
  color:#173b56 !important;
}
.v030-source-box .web-db-status{
  color:#1f5a3b !important;
}
.v030-source-box .web-db-time{
  color:#4f6678 !important;
}
.v030-source-box .data-source-status{
  color:#334e60 !important;
  background:#eaf2f7;
  border:1px solid #d1e0ea;
  border-radius:6px;
  padding:7px 8px;
  margin-top:8px;
}
.v030-source-box .data-source-status.good{
  color:#1f5f3c !important;
  background:#eaf7ef;
  border-color:#c9e6d3;
}
.v030-source-box .data-source-status.bad{
  color:#9a3535 !important;
  background:#fff0f0;
  border-color:#efcaca;
}
.v030-source-box .data-load-btn{
  background:#dbeaf4 !important;
  color:#17324d !important;
  font-weight:700;
}

/* V0.60.7.34 Web → Excel */
.web-export-btn{
  margin-top:6px;
  background:#eef5f9 !important;
  color:#173b56 !important;
  border:1px solid #c8d9e4 !important;
}
.web-export-btn:hover{
  background:#dcebf4 !important;
}

/* V0.60.7.34 기존사업 수정 */
.edit-mode-chip{
  display:inline-flex;align-items:center;padding:6px 9px;border-radius:5px;
  background:#fff3cf;border:1px solid #e3c76c;color:#795b00;font-size:11px;font-weight:700;
  margin-right:auto;
}
.project-edit-btn{
  width:100%;margin:10px 0 2px;padding:8px 10px;border:1px solid #94b6ca!important;
  background:#e9f3f8!important;color:#174e70!important;font-weight:700;
}
.project-edit-btn:hover{background:#dcebf4!important}
.ongoing-table tr.selected-project td{background:#f1f8fc}

/* V0.60.7.34 인력현황 제안작성 직접수정 */
.mp-proposal-edit{
  width:52px;
  height:26px;
  border:1px solid #b8c8d4;
  border-radius:4px;
  background:#fff;
  color:#173b56;
  font-size:12px;
  font-weight:700;
  text-align:center;
  padding:2px 4px;
}
.mp-proposal-edit:focus{
  outline:2px solid #cfe5f2;
  border-color:#6a9db8;
}

/* V0.60.7.34 인력현황 제안작성 O/X + 수정행 강조 */
.manpower-table tbody tr.mp-editing-row td{
  background:#fff4cc !important;
}
.manpower-table tbody tr.mp-editing-row td:first-child{
  box-shadow:inset 4px 0 0 #d9a300;
}
.manpower-table tbody tr.mp-editing-row .mp-proposal-edit{
  border-color:#c99600;
  box-shadow:0 0 0 2px rgba(217,163,0,.18);
}

/* V0.60.7.34 수정중 행 전체 강조 보강 */
.manpower-table tbody tr.mp-editing-row,
.manpower-table tbody tr.mp-editing-row > td,
.manpower-table tbody tr.mp-editing-row > td.name-link,
.manpower-table tbody tr.mp-editing-row > td.mp-note {
  background:#fff1b8 !important;
  color:#1f2937 !important;
}
.manpower-table tbody tr.mp-editing-row > td {
  border-top:1px solid #e2b93f !important;
  border-bottom:1px solid #e2b93f !important;
}
.manpower-table tbody tr.mp-editing-row > td:first-child {
  box-shadow:inset 5px 0 0 #d79b00 !important;
}
.manpower-table tbody tr.mp-editing-row .badge {
  filter:none !important;
}
.manpower-table tbody tr.mp-editing-row .mp-proposal-edit {
  background:#fffbe7 !important;
  border:2px solid #d79b00 !important;
  box-shadow:0 0 0 2px rgba(215,155,0,.16) !important;
}

/* V0.60.7.34 수정중 행 강조 정상화 */
#mpTbody tr.mp-editing-row > td{
  background:#ffe9a8 !important;
  color:#1f2937 !important;
}
#mpTbody tr.mp-editing-row > td:first-child{
  box-shadow:inset 6px 0 0 #cc8b00 !important;
}
#mpTbody tr.mp-editing-row .name-link{
  font-weight:800 !important;
  color:#123f63 !important;
}
#mpTbody tr.mp-editing-row .mp-proposal-edit{
  background:#fff9df !important;
  border:2px solid #cc8b00 !important;
}

.storage-diagnostic{margin-top:14px;border:1px solid #d6e1e8;background:#fbfdfe;border-radius:9px;padding:12px}
.storage-diagnostic h4{margin:0 0 8px;font-size:14px;color:#173b56}
.storage-diagnostic-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:8px}
.storage-diagnostic-card{border:1px solid #dce6ec;background:#fff;border-radius:7px;padding:10px;min-height:92px}
.storage-diagnostic-card b{display:block;font-size:12px;color:#173b56;margin-bottom:5px}
.storage-diagnostic-card span{display:block;font-size:11px;color:#526b7d;line-height:1.5}
.storage-diagnostic-card.good{background:#eef8f2;border-color:#cde7d5}
.storage-diagnostic-card.warn{background:#fff8e8;border-color:#ead8a6}
.storage-diagnostic-card.bad{background:#fff1f1;border-color:#eccaca}
.storage-diagnostic-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.save-receipt{margin-top:8px;padding:8px 10px;border:1px solid #cde2d4;background:#eef8f2;border-radius:6px;color:#245c3b;font-size:11px;font-weight:700}
@media(max-width:1000px){.storage-diagnostic-grid{grid-template-columns:1fr}}


/* V0.60.7.34 최근 변경이력 */
.change-log-card{margin-top:14px}
.change-log-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.change-log-head h3{margin:0 0 4px;font-size:16px;color:#173b56}
.change-log-head p{margin:0;font-size:11px;color:#64748b;line-height:1.5}
.change-log-actions{display:flex;gap:7px;flex-wrap:wrap}
.change-log-wrap{overflow:auto;max-height:360px;border:1px solid #d9e3ea;border-radius:8px;background:#fff}
.change-log-table{min-width:1050px;font-size:12px}
.change-log-table th{background:#edf4f8}
.change-log-table td{text-align:left;vertical-align:top;white-space:normal;line-height:1.4}
.change-log-table td:nth-child(1),.change-log-table td:nth-child(2),.change-log-table td:nth-child(6),.change-log-table td:nth-child(7){white-space:nowrap;text-align:center}
.change-log-empty{padding:24px!important;text-align:center!important;color:#64748b}
.log-type-add{background:#e9f7ef;color:#28764a}
.log-type-edit{background:#fff4d6;color:#8a6515}
.log-status-live{background:#e9f7ef;color:#28764a}
.log-status-missing{background:#fdecec;color:#a33}
.log-restore-btn{padding:6px 9px;font-size:11px;white-space:nowrap}


/* V0.60.7.34 저장 검증 상태 */
.save-verify-status{
  margin-top:8px;padding:8px 10px;border-radius:6px;border:1px solid #d6e1e8;
  background:#f7fafc;color:#526b7d;font-size:11px;font-weight:700
}
.save-verify-status.ok{background:#eaf7ef;border-color:#c9e6d3;color:#1f5f3c}
.save-verify-status.warn{background:#fff7e5;border-color:#ead6a3;color:#805f14}
.save-verify-status.bad{background:#fff0f0;border-color:#efcaca;color:#9a3535}


/* V0.60.7.34 신규사업 등록 구역화 */
.np-section{border:1px solid #dbe4ea;background:#f9fbfc;padding:12px 14px;margin:10px 0}
.np-section-title{font-size:13px;font-weight:800;color:#173f5f;margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid #dbe4ea}
.np-section-note{font-size:11px;color:#61788a;margin:-4px 0 8px}


/* V0.60.7.34 일정정보 부족 / 안전삭제 */
.delete-project-btn{width:100%;margin-top:8px;background:#fff5f5;border:1px solid #e7bcbc;color:#a33b3b;font-weight:800}
.delete-project-btn:hover{background:#ffeaea}
.deleted-card{border:1px solid #ead7d7;background:#fffafa;padding:12px;margin-top:12px}
.deleted-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}
.deleted-head h3{margin:0;font-size:15px}
.deleted-table{width:100%;border-collapse:collapse;font-size:11px}
.deleted-table th,.deleted-table td{border-bottom:1px solid #e6eaed;padding:7px 8px;text-align:left;vertical-align:middle}
.deleted-table th{background:#f5f7f9}
.deleted-empty{text-align:center!important;color:#6d7f8d;padding:16px!important}
.restore-deleted-btn{padding:5px 9px;font-size:11px}


/* V0.60.7.34 사업정보 수정 / 단계이력 관리 */
.stage-manage-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 10px}
.stage-manage-actions button{font-size:11px;padding:7px 10px}
.stage-history-table{width:100%;border-collapse:collapse;font-size:11px;margin-top:8px}
.stage-history-table th,.stage-history-table td{border-bottom:1px solid #e3e9ed;padding:7px 8px;text-align:left;vertical-align:top}
.stage-history-table th{background:#f4f7f9;color:#345;white-space:nowrap}
.stage-current-row{background:#f1f8fb}
.stage-note-text{white-space:pre-wrap;word-break:break-word}
.stage-modal-backdrop{display:none;position:fixed;inset:0;background:rgba(13,35,52,.35);z-index:10000;align-items:center;justify-content:center;padding:20px}
.stage-modal-backdrop.show{display:flex}
.stage-modal{width:min(620px,96vw);background:white;border:1px solid #b7c8d3;box-shadow:0 18px 50px rgba(0,0,0,.2);padding:18px}
.stage-modal h3{margin:0 0 4px;font-size:18px}
.stage-modal p{margin:0 0 14px;color:#667985;font-size:12px}
.stage-modal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.stage-modal-grid .span2{grid-column:1/-1}
.stage-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.stage-seq-chip{display:inline-block;min-width:22px;text-align:center;border-radius:999px;padding:2px 6px;background:#edf3f7;color:#46606f;font-weight:700}
.current-stage-chip{display:inline-block;margin-left:5px;padding:2px 6px;border-radius:999px;background:#dff2e8;color:#28734b;font-weight:700;font-size:10px}
@media(max-width:700px){.stage-modal-grid{grid-template-columns:1fr}.stage-modal-grid .span2{grid-column:auto}}


/* V0.60.7.34 운영 기준일 / 데이터 신뢰구분 */
.mgmt-chip{
  display:inline-flex;align-items:center;padding:2px 6px;margin-left:4px;border-radius:10px;
  font-size:10px;font-weight:800;white-space:nowrap;border:1px solid transparent;
}
.mgmt-chip.regular{background:#e8f5ec;color:#21633d;border-color:#c8e5d2}
.mgmt-chip.legacy{background:#fff4d9;color:#7d5b00;border-color:#ead49b}
.cutover-note{
  margin:8px 0 0;padding:8px 10px;border:1px solid #d7e3ea;border-radius:6px;
  background:#f7fafc;color:#516b7c;font-size:11px;line-height:1.5;
}
.waiting-split{
  margin-top:7px;font-size:11px;color:#5b7182;
}
.waiting-split b{color:#173b56}


/* V0.60.7.34 사업관리 표 컬럼폭 최적화 */
.ongoing-table{
  table-layout:fixed;
  width:100%;
}
.ongoing-table th:nth-child(1), .ongoing-table td:nth-child(1){width:86px;}   /* 단계 */
.ongoing-table th:nth-child(2), .ongoing-table td:nth-child(2){width:46px;}   /* 중요도 */
.ongoing-table th:nth-child(3), .ongoing-table td:nth-child(3){width:135px;}  /* 발주기관 */
.ongoing-table th:nth-child(4), .ongoing-table td:nth-child(4){width:220px;}  /* 사업명 */
.ongoing-table th:nth-child(5), .ongoing-table td:nth-child(5){width:92px;}   /* 사업비 */
.ongoing-table th:nth-child(6), .ongoing-table td:nth-child(6){width:76px;}   /* 영업대표 */
.ongoing-table th:nth-child(7), .ongoing-table td:nth-child(7){width:88px;}   /* 제안리더 */
.ongoing-table th:nth-child(8), .ongoing-table td:nth-child(8){width:58px;}   /* PM */
.ongoing-table th:nth-child(9), .ongoing-table td:nth-child(9){width:62px;}   /* 배정일 */
.ongoing-table th:nth-child(10), .ongoing-table td:nth-child(10){width:62px;} /* 제출일 */
.ongoing-table th:nth-child(11), .ongoing-table td:nth-child(11){width:62px;} /* 평가일 */
.ongoing-table th:nth-child(12), .ongoing-table td:nth-child(12){width:68px;} /* D-Day */
.ongoing-table th:nth-child(13), .ongoing-table td:nth-child(13){width:82px;} /* 배정상태 */
.ongoing-table th:nth-child(14), .ongoing-table td:nth-child(14){width:78px;} /* 제안결과 */

.ongoing-table td:nth-child(4){
  white-space:normal;
  line-height:1.25;
  word-break:keep-all;
}
.ongoing-table td:nth-child(6),
.ongoing-table td:nth-child(7),
.ongoing-table td:nth-child(8){
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ongoing-table td:nth-child(3){
  white-space:normal;
  line-height:1.2;
}


/* V0.60.7.34 단계 표시 2줄 압축 */
.stage-cell-stack{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:3px;
  min-height:38px;
}
.stage-cell-sub{
  display:flex;
  align-items:center;
  gap:4px;
  min-height:18px;
}
.stage-cell-stack .badge,
.stage-cell-stack .mgmt-chip,
.stage-cell-stack .web-new-chip{
  margin-left:0 !important;
  margin-right:0 !important;
  white-space:nowrap;
}
.stage-cell-stack .mgmt-chip,
.stage-cell-stack .web-new-chip{
  padding:2px 5px;
  font-size:9px;
}


/* V0.60.7.34 사업목록 행 전체 선택 UX */
.ongoing-table tbody tr[data-project-id]{
  cursor:pointer;
  transition:background-color .12s ease;
}
.ongoing-table tbody tr[data-project-id]:hover td{
  background:#eaf4f9 !important;
}
.ongoing-table tbody tr[data-project-id]:not(:hover) td{
  transition:background-color .12s ease;
}


/* V0.60.7.34 사업관리: 가로 스크롤 없이 전체 컬럼 표시 */
.ongoing-layout{
  grid-template-columns:minmax(0,1fr) 310px;
  gap:10px;
}
.ongoing-table-wrap{
  overflow-y:auto !important;
  overflow-x:hidden !important;
}
.ongoing-table{
  min-width:0 !important;
  width:100% !important;
  table-layout:fixed !important;
  font-size:11px;
}
.ongoing-table th,
.ongoing-table td{
  padding-left:4px !important;
  padding-right:4px !important;
  box-sizing:border-box;
}
.ongoing-table th{
  font-size:11px;
  white-space:nowrap;
}
.ongoing-table th:nth-child(1), .ongoing-table td:nth-child(1){width:72px !important;}   /* 단계 */
.ongoing-table th:nth-child(2), .ongoing-table td:nth-child(2){width:40px !important;}   /* 중요도 */
.ongoing-table th:nth-child(3), .ongoing-table td:nth-child(3){width:106px !important;}  /* 발주기관 */
.ongoing-table th:nth-child(4), .ongoing-table td:nth-child(4){width:180px !important;}  /* 사업명 */
.ongoing-table th:nth-child(5), .ongoing-table td:nth-child(5){width:82px !important;}   /* 사업비 */
.ongoing-table th:nth-child(6), .ongoing-table td:nth-child(6){width:60px !important;}   /* 영업대표 */
.ongoing-table th:nth-child(7), .ongoing-table td:nth-child(7){width:70px !important;}   /* 제안리더 */
.ongoing-table th:nth-child(8), .ongoing-table td:nth-child(8){width:44px !important;}   /* PM */
.ongoing-table th:nth-child(9), .ongoing-table td:nth-child(9){width:50px !important;}   /* 배정일 */
.ongoing-table th:nth-child(10), .ongoing-table td:nth-child(10){width:50px !important;} /* 제출일 */
.ongoing-table th:nth-child(11), .ongoing-table td:nth-child(11){width:50px !important;} /* 평가일 */
.ongoing-table th:nth-child(12), .ongoing-table td:nth-child(12){width:52px !important;} /* D-Day */
.ongoing-table th:nth-child(13), .ongoing-table td:nth-child(13){width:66px !important;} /* 배정상태 */
.ongoing-table th:nth-child(14), .ongoing-table td:nth-child(14){width:60px !important;} /* 제안결과 */

.ongoing-table td:nth-child(3),
.ongoing-table td:nth-child(4){
  white-space:normal !important;
  word-break:keep-all;
  line-height:1.22;
}
.ongoing-table td:nth-child(5),
.ongoing-table td:nth-child(6),
.ongoing-table td:nth-child(7),
.ongoing-table td:nth-child(8),
.ongoing-table td:nth-child(9),
.ongoing-table td:nth-child(10),
.ongoing-table td:nth-child(11),
.ongoing-table td:nth-child(12),
.ongoing-table td:nth-child(13),
.ongoing-table td:nth-child(14){
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ongoing-detail{
  max-height:760px;
}


/* V0.60.7.34 사업관리 컬럼폭 재배분 */
.ongoing-table th,
.ongoing-table td{
  padding-left:3px !important;
  padding-right:3px !important;
}

/* 단계·중요도는 더 압축 */
.ongoing-table th:nth-child(1), .ongoing-table td:nth-child(1){width:64px !important;}   /* 단계 */
.ongoing-table th:nth-child(2), .ongoing-table td:nth-child(2){width:34px !important;}   /* 중요도 */

/* 확보한 폭을 발주기관·사업명에 배분 */
.ongoing-table th:nth-child(3), .ongoing-table td:nth-child(3){width:128px !important;}  /* 발주기관 */
.ongoing-table th:nth-child(4), .ongoing-table td:nth-child(4){width:214px !important;}  /* 사업명 */

/* 중간 컬럼 약간 압축 */
.ongoing-table th:nth-child(5), .ongoing-table td:nth-child(5){width:76px !important;}   /* 사업비 */
.ongoing-table th:nth-child(6), .ongoing-table td:nth-child(6){width:56px !important;}   /* 영업대표 */
.ongoing-table th:nth-child(7), .ongoing-table td:nth-child(7){width:64px !important;}   /* 제안리더 */
.ongoing-table th:nth-child(8), .ongoing-table td:nth-child(8){width:40px !important;}   /* PM */

/* 배정일~제안결과 추가 압축 */
.ongoing-table th:nth-child(9), .ongoing-table td:nth-child(9){width:44px !important;}   /* 배정일 */
.ongoing-table th:nth-child(10), .ongoing-table td:nth-child(10){width:44px !important;} /* 제출일 */
.ongoing-table th:nth-child(11), .ongoing-table td:nth-child(11){width:44px !important;} /* 평가일 */
.ongoing-table th:nth-child(12), .ongoing-table td:nth-child(12){width:46px !important;} /* D-Day */
.ongoing-table th:nth-child(13), .ongoing-table td:nth-child(13){width:58px !important;} /* 배정상태 */
.ongoing-table th:nth-child(14), .ongoing-table td:nth-child(14){width:52px !important;} /* 제안결과 */

.ongoing-table td:nth-child(3),
.ongoing-table td:nth-child(4){
  white-space:normal !important;
  word-break:keep-all;
  line-height:1.2;
}


/* V0.60.7.34 진행중/결과대기: 제안결과 컬럼 제거 */
.ongoing-table.hide-result-col th:nth-child(14),
.ongoing-table.hide-result-col td:nth-child(14){
  display:none;
}
.ongoing-table.hide-result-col th:nth-child(3),
.ongoing-table.hide-result-col td:nth-child(3){
  width:136px !important;
}
.ongoing-table.hide-result-col th:nth-child(4),
.ongoing-table.hide-result-col td:nth-child(4){
  width:228px !important;
}


/* V0.60.7.34 가독성 개선: 전체 글자 한 단계 확대 */
body{
  font-size:14px;
}
.nav-btn{
  font-size:13px !important;
}
.side-title,
.data-title,
.side-foot{
  font-size:11px !important;
}
.page-head h2{
  font-size:23px !important;
}
.page-head p,
.note,
.muted,
.business-mode-note,
.ongoing-summary{
  font-size:12px !important;
}
.ongoing-table{
  font-size:12px !important;
}
.ongoing-table th{
  font-size:12px !important;
}
.ongoing-table td{
  font-size:12px !important;
}
.ongoing-table .badge,
.ongoing-table .mgmt-chip,
.ongoing-table .web-new-chip{
  font-size:10px !important;
}
.ongoing-detail{
  font-size:13px;
}
.ongoing-detail h2{
  font-size:20px !important;
}
.ongoing-detail h3{
  font-size:15px !important;
}
.detail-item span,
.assignment-meta span{
  font-size:11px !important;
}
.detail-item b,
.assignment-meta b{
  font-size:13px !important;
}
.field label{
  font-size:12px !important;
}
.field input,
.field select,
.field textarea{
  font-size:13px !important;
}
button{
  font-size:12px !important;
}
.ongoing-kpi b,
.operation-kpi b,
.assignment-kpi b,
.kpi b{
  font-size:21px !important;
}
.ongoing-kpi span,
.operation-kpi span,
.assignment-kpi span,
.kpi span{
  font-size:11px !important;
}


/* V0.60.7.34 저장안정화 */
.snapshot-recovery-card{margin-top:14px;border:1px solid #b9d4e3;border-radius:8px;padding:12px;background:#f8fcfe}
.snapshot-recovery-card h3{margin:0 0 4px;color:#173b56}
.snapshot-restore-btn{white-space:nowrap}
.data-protection-banner{margin-top:8px;padding:9px 11px;border-radius:7px;background:#eaf7ef;border:1px solid #c5e4d0;color:#215d3d;font-size:12px;font-weight:700}


/* V0.60.7.34 서버 운영원장 */
.external-ledger-panel{
  margin-top:12px;padding:12px;border:1px solid #cddde7;border-radius:8px;background:#f8fbfd;
}
.external-ledger-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.external-ledger-head h4{margin:0 0 4px;font-size:14px;color:#173b56}
.external-ledger-head p{margin:0;font-size:11px;color:#617789;line-height:1.45}
.external-ledger-status{
  margin-top:9px;padding:8px 10px;border-radius:6px;background:#fff4df;color:#765500;
  border:1px solid #ead6a7;font-size:11px;line-height:1.5;
}
.external-ledger-status.good{background:#eaf7ef;color:#245f3d;border-color:#c9e5d2}
.external-ledger-status.bad{background:#fff0f0;color:#933b3b;border-color:#ebc8c8}
.external-ledger-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}
.external-ledger-actions button{min-width:150px}
.sidebar-external-status{font-size:10px;line-height:1.35;margin-top:6px;padding-top:6px;border-top:1px solid #d4e0e8;color:#6d5c16}
.sidebar-external-status.good{color:#23603d}
.sidebar-external-status.bad{color:#9a3535}


/* V0.60.7.34 부팅 잠금 / 서버원장 확인 전 저장차단 */
.boot-lock-banner{margin:10px 0;padding:10px 12px;border:1px solid #e7c06a;border-radius:8px;background:#fff7df;color:#765400;font-size:12px;font-weight:700;line-height:1.5}
.boot-lock-banner.good{background:#eaf7ef;color:#245f3d;border-color:#c9e5d2}
.boot-lock-banner.bad{background:#fff0f0;color:#933b3b;border-color:#ebc8c8}


.history-tabs{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 14px}
.history-tabs button{background:#fff;color:#334155;border:1px solid var(--line);padding:8px 13px;border-radius:8px;font-size:12px;font-weight:700;cursor:pointer}
.history-tabs button:hover{background:#f5f9fc}
.history-tabs button.active{background:#1d4f73;color:#fff;border-color:#1d4f73}
.history-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0 0 14px}
.history-kpi{background:#f7f9fb;border:1px solid var(--line);border-radius:9px;padding:12px;min-height:72px}
.history-kpi b{display:block;font-size:21px;line-height:1.15;margin-bottom:5px}
.history-kpi span{font-size:11px;color:var(--muted)}
.history-kpi.clickable{cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}
.history-kpi.clickable:hover{background:#eef5f9;border-color:#b7d0df}
.history-kpi.clickable.active{background:#eaf3f8;border-color:#7ca8c1;box-shadow:inset 0 0 0 1px #7ca8c1}
.history-kpi.clickable:active{transform:translateY(1px)}
.history-toolbar{display:grid;grid-template-columns:1.7fr .8fr .8fr auto;gap:9px;align-items:end;margin-bottom:10px}
.history-table-wrap{overflow-y:auto;overflow-x:auto;max-height:690px;border:1px solid var(--line);border-radius:10px;background:#fff}
.history-table{width:100%;min-width:1100px;table-layout:fixed}
.history-table th{position:sticky;top:0;z-index:2;background:#f7f9fb;font-size:11px;padding:8px 5px;white-space:normal;line-height:1.25}
.history-table td{text-align:center;vertical-align:middle;font-size:11px;padding:7px 5px;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;line-height:1.3}
.history-table td.history-agency,.history-table td.history-name,.history-table td.history-authors,.history-table td.history-company{text-align:left;white-space:normal}
.history-table td.history-name{font-weight:700;color:#1d4f73}
.history-table th:nth-child(1),.history-table td:nth-child(1){width:5%}
.history-table th:nth-child(2),.history-table td:nth-child(2){width:10%}
.history-table th:nth-child(3),.history-table td:nth-child(3){width:18%}
.history-table th:nth-child(4),.history-table td:nth-child(4){width:5%}
.history-table th:nth-child(5),.history-table td:nth-child(5){width:6%}
.history-table th:nth-child(6),.history-table td:nth-child(6){width:8%}
.history-table th:nth-child(7),.history-table td:nth-child(7){width:6%}
.history-table th:nth-child(8),.history-table td:nth-child(8){width:5%}
.history-table th:nth-child(9),.history-table td:nth-child(9){width:9%}
.history-table th:nth-child(10),.history-table td:nth-child(10){width:6%}
.history-table th:nth-child(11),.history-table td:nth-child(11){width:6%}
.history-table th:nth-child(12),.history-table td:nth-child(12){width:6%}
.history-table th:nth-child(13),.history-table td:nth-child(13){width:10%}
.history-table [data-history-edit]{max-width:100%;white-space:normal;padding:6px 8px;font-size:11px}
.history-summary{font-size:12px;color:var(--muted);margin-left:auto}
@media(max-width:1100px){.history-kpis{grid-template-columns:repeat(3,1fr)}.history-toolbar{grid-template-columns:1fr 1fr}}


/* V0.60.7.34 작성자추천 레이아웃 재배치 */
#page-recommend .recommend-shell{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:16px;align-items:start}
#page-recommend .recommend-left{min-width:0}
#page-recommend .recommend-top{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:stretch;margin-bottom:16px}
#page-recommend .recommend-input-card,#page-recommend .recommend-decision-card{min-width:0}
#page-recommend .recommend-decision-card{margin:0}
#page-recommend .recommend-list-card{min-width:0}
#page-recommend .recommend-detail-side{position:sticky;top:12px;align-self:start;max-height:calc(100vh - 32px);overflow:auto}
#page-recommend .recommend-detail-side .detail{margin:0}
#page-recommend .recommend-top .controls{grid-template-columns:minmax(180px,1.3fr) minmax(180px,1.3fr) repeat(4,minmax(74px,.6fr))}
#page-recommend .recommend-top .controls .field[style*="grid-column:1/3"]{grid-column:1/3!important}
#page-recommend .recommend-top .actions{align-items:center}
#page-recommend .recommend-list-card .table-wrap{max-width:100%}
@media(max-width:1450px){
  #page-recommend .recommend-shell{grid-template-columns:minmax(0,1fr) 340px}
  #page-recommend .recommend-top{grid-template-columns:minmax(0,1fr) 290px}
  #page-recommend .recommend-top .controls{grid-template-columns:1fr 1fr 1fr 1fr}
}
@media(max-width:1150px){
  #page-recommend .recommend-shell{grid-template-columns:1fr}
  #page-recommend .recommend-detail-side{position:relative;top:auto;max-height:none}
}
@media(max-width:850px){
  #page-recommend .recommend-top{grid-template-columns:1fr}
  #page-recommend .recommend-top .controls{grid-template-columns:1fr 1fr}
}



/* V0.73.4.13.12.23 작성자추천 목록 간소화: 오른쪽 상세창의 중복 항목 제거 */
#page-recommend .recommend-summary-table{width:100%;min-width:0;table-layout:auto;font-size:12px}
#page-recommend .recommend-summary-table th,#page-recommend .recommend-summary-table td{padding:7px 5px}
#page-recommend .recommend-summary-table th{white-space:normal;word-break:keep-all;line-height:1.2}
#page-recommend .recommend-summary-table td{white-space:nowrap}
#page-recommend .recommend-summary-table td:nth-child(3){white-space:normal;overflow-wrap:anywhere;min-width:85px;max-width:145px;text-align:left;line-height:1.25}
#page-recommend .recommend-summary-table td:nth-child(4){white-space:normal;word-break:keep-all;min-width:66px}
#page-recommend .recommend-summary-table td:nth-child(6) .badge{white-space:normal;line-height:1.15}
#page-recommend .recommend-summary-table td.name{white-space:nowrap}

/* V0.60.7.34 데이터 정합성 경고 */
.status-check-sem{background:#fff1db!important;color:#a05a00!important;border-color:#f1d19a!important}


/* V0.60.7.34 사업관리 좌측운영 + 우측상세 레이아웃 */
#page-ongoing .business-shell{
  display:grid;
  grid-template-columns:minmax(0,1fr) 380px;
  gap:16px;
  align-items:start;
}
#page-ongoing .business-main{min-width:0}
#page-ongoing .business-detail-side{
  position:sticky;
  top:12px;
  align-self:start;
  max-height:calc(100vh - 32px);
  overflow:auto;
}
#page-ongoing .ongoing-toolbar{
  grid-template-columns:minmax(220px,1.7fr) repeat(4,minmax(110px,.8fr)) auto;
}
#page-ongoing .ongoing-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
#page-ongoing .ongoing-table-wrap{max-height:690px}
@media(max-width:1350px){
  #page-ongoing .business-shell{grid-template-columns:minmax(0,1fr) 330px}
  #page-ongoing .ongoing-toolbar{grid-template-columns:1.4fr repeat(2,1fr)}
  #page-ongoing .ongoing-kpis{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:1120px){
  #page-ongoing .business-shell{grid-template-columns:1fr}
  #page-ongoing .business-detail-side{position:static;max-height:none}
}


/* V0.60.7.34 사업관리 선택행 고정 강조 */
.ongoing-table tbody tr[data-project-id].selected-project-row td{
  background:#dfeff7 !important;
}
.ongoing-table tbody tr[data-project-id].selected-project-row:hover td{
  background:#d7eaf4 !important;
}


/* V0.60.7.34 사업상세 상단 액션버튼 1행 배치 */
.project-detail-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin:8px 0 4px;
}
.project-detail-actions .project-edit-btn,
.project-detail-actions .delete-project-btn{
  width:100% !important;
  margin:0 !important;
  min-height:34px;
  padding:7px 8px !important;
  font-size:11px !important;
}
.project-detail-actions .delete-project-btn{
  background:#fff5f5;
  border:1px solid #e7bcbc;
  color:#a33b3b;
  font-weight:800;
}
@media(max-width:620px){
  .project-detail-actions{grid-template-columns:1fr 1fr}
}


/* V0.60.7.34 사업관리 상세패널 폭 확대 및 내부 컴팩트화 */
#page-ongoing .business-shell{
  grid-template-columns:minmax(0,1fr) 440px !important;
  gap:14px !important;
}
#page-ongoing .business-detail-side{
  padding:12px !important;
}
#page-ongoing .business-detail-side h2{
  margin-bottom:2px !important;
  line-height:1.25;
}
#page-ongoing .business-detail-side .project-id{
  margin-bottom:6px !important;
  line-height:1.3;
}
#page-ongoing .business-detail-side .detail-grid{
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:5px !important;
  margin:7px 0 !important;
}
#page-ongoing .business-detail-side .detail-item{
  min-height:46px !important;
  padding:6px 7px !important;
}
#page-ongoing .business-detail-side .detail-item span{
  margin-bottom:2px !important;
  line-height:1.2;
}
#page-ongoing .business-detail-side .detail-item b{
  line-height:1.25 !important;
}
#page-ongoing .business-detail-side .detail-block{
  margin-top:7px !important;
  padding-top:7px !important;
}
#page-ongoing .business-detail-side .detail-block h3{
  margin-bottom:4px !important;
}
#page-ongoing .business-detail-side .detail-block p{
  line-height:1.4 !important;
}
#page-ongoing .business-detail-side .timeline-mini{
  gap:3px !important;
  margin-top:5px !important;
}
#page-ongoing .business-detail-side .timeline-step{
  padding:5px 2px !important;
  min-width:0;
}
#page-ongoing .business-detail-side .stage-manage-actions{
  gap:5px !important;
  margin:5px 0 7px !important;
}
#page-ongoing .business-detail-side .stage-manage-actions button{
  padding:5px 7px !important;
}
#page-ongoing .business-detail-side .stage-history-table{
  margin-top:5px !important;
}
#page-ongoing .business-detail-side .stage-history-table th,
#page-ongoing .business-detail-side .stage-history-table td{
  padding:5px 6px !important;
}
#page-ongoing .business-detail-side .project-detail-actions{
  gap:6px !important;
  margin:6px 0 3px !important;
}
#page-ongoing .business-detail-side .project-detail-actions button{
  min-height:32px !important;
  padding:6px 7px !important;
}
@media(max-width:1380px){
  #page-ongoing .business-shell{
    grid-template-columns:minmax(0,1fr) 400px !important;
  }
}
@media(max-width:1180px){
  #page-ongoing .business-shell{
    grid-template-columns:1fr !important;
  }
}


/* V0.60.7.34 제안배정현황 컬럼 정리 */
.assignment-table{
  table-layout:fixed;
  min-width:1320px !important;
}
.assignment-table th:nth-child(1), .assignment-table td:nth-child(1){width:86px}
.assignment-table th:nth-child(2), .assignment-table td:nth-child(2){width:58px}
.assignment-table th:nth-child(3), .assignment-table td:nth-child(3){width:76px}
.assignment-table th:nth-child(4), .assignment-table td:nth-child(4){width:150px}
.assignment-table th:nth-child(5), .assignment-table td:nth-child(5){width:300px}
.assignment-table th:nth-child(6), .assignment-table td:nth-child(6){width:100px}
.assignment-table th:nth-child(7), .assignment-table td:nth-child(7){width:90px}
.assignment-table th:nth-child(8), .assignment-table td:nth-child(8){width:90px}
.assignment-table th:nth-child(9), .assignment-table td:nth-child(9){width:70px}
.assignment-table th:nth-child(10), .assignment-table td:nth-child(10){width:82px}
.assignment-table th:nth-child(11), .assignment-table td:nth-child(11){width:92px}
.assignment-table th:nth-child(12), .assignment-table td:nth-child(12){width:66px}
.assignment-table th:nth-child(13), .assignment-table td:nth-child(13){width:72px}
.assignment-table th:nth-child(6),
.assignment-table td:nth-child(6),
.assignment-table th:nth-child(10),
.assignment-table td:nth-child(10),
.assignment-table th:nth-child(11),
.assignment-table td:nth-child(11),
.assignment-table th:nth-child(12),
.assignment-table td:nth-child(12),
.assignment-table th:nth-child(13),
.assignment-table td:nth-child(13){
  white-space:nowrap;
}


/* V0.60.7.34 제안배정현황: 사업관리 UX 통일 */
.assignment-table tbody tr[data-project-id]{
  cursor:pointer;
  transition:background-color .12s ease;
}
.assignment-table tbody tr[data-project-id]:hover td{
  background:#eaf4f9 !important;
}
.assignment-table tbody tr[data-project-id].selected-assignment-row td{
  background:#dfeff7 !important;
}
.assignment-table tbody tr[data-project-id].selected-assignment-row:hover td{
  background:#d7eaf4 !important;
}
.assignment-detail{
  position:sticky !important;
  top:12px !important;
  align-self:start !important;
  max-height:calc(100vh - 32px) !important;
  overflow:auto !important;
  padding:12px !important;
  font-size:13px;
}
.assignment-detail h2{
  font-size:20px !important;
  margin:0 0 2px !important;
  line-height:1.25;
}
.assignment-detail .project-id{
  font-size:11px;
  color:var(--muted);
  margin-bottom:6px;
  line-height:1.3;
}
.assignment-detail .detail-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:5px;
  margin:7px 0;
}
.assignment-detail .detail-item{
  min-height:46px;
  padding:6px 7px;
}
.assignment-detail .detail-block{
  margin-top:7px;
  padding-top:7px;
}
.assignment-detail .detail-block h3{
  margin:0 0 4px;
  font-size:15px;
}
.assignment-detail .detail-block p{
  line-height:1.4;
}
.assignment-detail .timeline-mini{
  gap:3px;
  margin-top:5px;
}
.assignment-detail .timeline-step{
  padding:5px 2px;
  min-width:0;
}
.assignment-detail .stage-manage-actions{
  gap:5px;
  margin:5px 0 7px;
}
.assignment-detail .stage-manage-actions button{
  padding:5px 7px;
}
.assignment-detail .stage-history-table{
  margin-top:5px;
}
.assignment-detail .stage-history-table th,
.assignment-detail .stage-history-table td{
  padding:5px 6px;
}
.assignment-detail .project-detail-actions{
  gap:6px;
  margin:6px 0 3px;
}
.assignment-detail .project-detail-actions button{
  min-height:32px;
  padding:6px 7px !important;
}
.assignment-layout{
  grid-template-columns:minmax(0,1fr) 440px !important;
  gap:14px !important;
}
@media(max-width:1380px){
  .assignment-layout{grid-template-columns:minmax(0,1fr) 400px !important}
}
@media(max-width:1180px){
  .assignment-layout{grid-template-columns:1fr !important}
  .assignment-detail{position:static !important;max-height:none !important}
}


/* V0.60.7.34 사업관리 컬럼별 필터/정렬 */
.ongoing-table thead{
  position:sticky;
  top:0;
  z-index:5;
}
.ongoing-table .ongoing-sort-row th{
  padding:4px 2px !important;
  background:#e9f1f6;
}
.ongoing-table .og-sort{
  width:100%;
  border:0;
  background:transparent;
  color:#173b56;
  padding:3px 1px !important;
  font-size:11px !important;
  font-weight:800;
  cursor:pointer;
  white-space:nowrap;
}
.ongoing-table .og-sort:hover,
.ongoing-table .og-sort.active{
  background:#d7e8f2;
  color:#0c527c;
}
.ongoing-table .og-sort span{
  font-size:9px;
  margin-left:2px;
}
.ongoing-table .ongoing-filter-row th{
  padding:3px 2px 4px !important;
  background:#f5f9fb;
}
.ongoing-table .ongoing-filter-row input,
.ongoing-table .ongoing-filter-row select{
  width:100%;
  min-width:0;
  height:24px;
  border:1px solid #cfdce5;
  border-radius:4px;
  background:#fff;
  padding:2px 4px;
  font-size:10px;
  color:#334155;
  box-sizing:border-box;
}
.ongoing-table .ongoing-filter-row input::placeholder{
  color:#93a4b0;
}
.ongoing-table.hide-result-col .ongoing-sort-row th:nth-child(14),
.ongoing-table.hide-result-col .ongoing-filter-row th:nth-child(14){
  display:none;
}


/* V0.60.7.56 사업관리 성과 KPI: 제안운영현황 공통 색상 */
#page-ongoing .ongoing-summary-kpi{
  background:#e9f7ef!important;
  color:#28764a!important;
  border-color:#cfe7d7!important;
  cursor:default!important;
}
#page-ongoing .ongoing-summary-kpi b,
#page-ongoing .ongoing-summary-kpi span{color:#28764a!important}
#page-ongoing .ongoing-summary-kpi:hover{background:#e9f7ef!important;border-color:#cfe7d7!important}

/* V0.60.7.34 사업관리 상단 컴팩트화 */
.ongoing-toolbar-compact{
  display:grid;
  grid-template-columns:minmax(300px,1.25fr) minmax(720px,3fr);
  gap:10px;
  align-items:end;
  margin-top:8px;
}
.ongoing-toolbar-compact .ongoing-search-field input{
  height:38px;
}
.ongoing-kpis-inline{
  display:grid !important;
  grid-template-columns:repeat(9,minmax(72px,1fr)) !important;
  gap:7px !important;
  margin:0 !important;
}
.ongoing-kpis-inline .ongoing-kpi{
  min-height:50px !important;
  padding:7px 9px !important;
}
.ongoing-kpis-inline .ongoing-kpi b{
  font-size:18px !important;
  line-height:1.05;
}
.ongoing-kpis-inline .ongoing-kpi span{
  font-size:10px !important;
}
.ongoing-toolbar-compact .ongoing-actions{
  align-self:end;
}
@media(max-width:1450px){
  .ongoing-toolbar-compact{
    grid-template-columns:minmax(260px,1fr) minmax(620px,2.5fr);
  }
}
@media(max-width:1180px){
  .ongoing-toolbar-compact{
    grid-template-columns:1fr;
  }
  .ongoing-kpis-inline{
    grid-template-columns:repeat(8,minmax(0,1fr)) !important;
  }
}


/* V0.60.7.34 캘린더 일정 */
.calendar-toolbar{display:grid;grid-template-columns:max-content max-content minmax(0,1fr);gap:12px;margin-bottom:12px;align-items:center;width:100%}
.calendar-tabs{display:flex;gap:6px;flex-wrap:nowrap}
.calendar-tabs button{background:#e9eef2;color:#243443;padding:8px 12px;white-space:nowrap}
.calendar-tabs button.active{background:var(--accent);color:#fff}
.calendar-month-nav{display:flex;align-items:center;justify-content:flex-start;gap:8px;white-space:nowrap}
.calendar-month-nav button{padding:7px 11px}
.calendar-month-title{min-width:130px;text-align:center;font-size:18px;font-weight:800;color:#25394a}
.calendar-result-kpis{display:none;grid-template-columns:minmax(88px,1fr) minmax(82px,1fr) minmax(82px,1fr) minmax(92px,1fr) minmax(118px,1.25fr);gap:6px;align-items:stretch;min-width:0;width:100%}
.calendar-result-kpis.show{display:grid}
.calendar-result-kpi{background:#f7f9fb;border:1px solid var(--line);border-radius:8px;padding:7px 8px;min-width:0;text-align:center}
.calendar-result-kpi b{display:block;font-size:16px;line-height:1.05;color:#243443;white-space:nowrap;overflow:visible;text-overflow:clip}
.calendar-result-kpi span{display:block;margin-top:3px;font-size:10px;color:var(--muted);white-space:nowrap;letter-spacing:-0.1px}
.calendar-result-kpi.kpi-win-result b,.calendar-result-kpi.kpi-win-result span{color:#28764a!important}
.calendar-result-kpi.kpi-loss-result b,.calendar-result-kpi.kpi-loss-result span{color:#a33!important}
.calendar-summary{font-size:12px;color:var(--muted);margin:0 0 10px}
.calendar-summary.result-hidden{display:none}
.calendar-shell{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:14px;align-items:start}
.calendar-card{padding:12px}
.calendar-grid{display:grid;grid-template-columns:minmax(58px,.55fr) repeat(5,minmax(0,1.18fr)) minmax(58px,.55fr);border-left:1px solid var(--line);border-top:1px solid var(--line);background:#fff}
.calendar-weekday{padding:8px 6px;text-align:center;font-size:12px;font-weight:800;background:#eef4f8;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.calendar-day{min-height:128px;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;overflow:hidden}
.calendar-day.saturday,.calendar-day.sunday{padding-left:4px;padding-right:4px}
.calendar-day.saturday .calendar-event,.calendar-day.sunday .calendar-event{padding-left:4px;padding-right:4px;font-size:9.7px}
.calendar-day:not(.saturday):not(.sunday) .calendar-event{font-size:10.8px}

.calendar-day.saturday{background:#eef8ff}
.calendar-day.sunday,.calendar-day.holiday{background:#fff0f3}
.calendar-day.saturday .calendar-date-num{color:#0b4f9c;font-weight:900}
.calendar-day.sunday .calendar-date-num,.calendar-day.holiday .calendar-date-num{color:#b4232d;font-weight:900}
.calendar-holiday-name{font-size:10px;font-weight:800;color:#b4232d;margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:72%}
.calendar-weekday.sat{background:#eef8ff;color:#0b4f9c}
.calendar-weekday.sun{background:#fff0f3;color:#b4232d}
.calendar-day.outside.saturday{background:#f3faff}
.calendar-day.outside.sunday,.calendar-day.outside.holiday{background:#fff5f7}

.calendar-day.outside{background:#f8fafb;color:#9aa7b2}
.calendar-day.today{box-shadow:inset 0 0 0 2px #7fa9bf}
.calendar-date-row{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:5px}
.calendar-date-num{font-size:12px;font-weight:800}
.calendar-day-count{font-size:10px;color:#45657a;background:#eef5f9;border-radius:999px;padding:2px 6px;white-space:nowrap}
.calendar-events{display:flex;flex-direction:column;gap:4px}
.calendar-event{width:100%;display:block;text-align:left;background:#f7f9fb;color:#243443;border:1px solid #e2e9ee;border-radius:6px;padding:5px 6px;font-size:10.5px;line-height:1.25;font-weight:600}
.calendar-event:hover,.calendar-event.selected{background:#e8f2f7;border-color:#b9d1df}
.calendar-event .cal-kind{display:inline-block;font-size:9px;padding:1px 4px;border-radius:4px;background:#ddeaf1;color:#315b74;margin-right:4px;font-weight:800}
.calendar-event.kind-evaluation{background:#eef9ef;border-color:#cfe7d2}
.calendar-event.kind-evaluation:hover,.calendar-event.kind-evaluation.selected{background:#e2f4e5;border-color:#aed2b4}
.calendar-event.kind-evaluation .cal-kind{background:#d9efdd;color:#276137}
.calendar-event.kind-deadline .cal-kind{background:#ddeaf1;color:#315b74}
.calendar-event.kind-result-win{background:#e9f7ef;border-color:#cfe7d7}
.calendar-event.kind-result-win:hover,.calendar-event.kind-result-win.selected{background:#def2e6;border-color:#afd3bc}
.calendar-event.kind-result-win .cal-kind{background:#e9f7ef;color:#28764a}
.calendar-event.kind-result-loss{background:#fdecec;border-color:#f2cccc}
.calendar-event.kind-result-loss:hover,.calendar-event.kind-result-loss.selected{background:#f9dddd;border-color:#e8b5b5}
.calendar-event.kind-result-loss .cal-kind{background:#fdecec;color:#a33}
.calendar-event .cal-agency{font-weight:800}
.calendar-event .cal-name{color:#5e6c78}
.calendar-more{font-size:10px;color:#607482;padding:2px 4px}
.calendar-detail{position:sticky;top:91px;max-height:calc(100vh - 120px);overflow:auto}
.calendar-detail .detail-block p{white-space:pre-line}
@media(max-width:1500px){
  .calendar-toolbar{grid-template-columns:max-content minmax(0,1fr);row-gap:8px}
  .calendar-result-kpis.show{grid-column:1 / -1;grid-template-columns:repeat(4,minmax(82px,1fr)) minmax(118px,1.25fr)}
}
@media(max-width:1250px){
  .calendar-toolbar{grid-template-columns:1fr}
  .calendar-tabs{flex-wrap:wrap}
  .calendar-month-nav{justify-content:center}
  .calendar-result-kpis.show{grid-column:auto;grid-template-columns:repeat(5,minmax(80px,1fr))}
  .calendar-shell{grid-template-columns:1fr}
  .calendar-detail{position:relative;top:auto;max-height:none}
  .calendar-day{min-height:112px}
}
@media(max-width:760px){.calendar-result-kpis.show{grid-template-columns:repeat(2,1fr)}.calendar-result-kpi:last-child{grid-column:span 2}}
/* V0.60.7.34 KPI alignment and assignment column filters */
.kpi,.module-kpi,.ongoing-kpi,.assignment-kpi,.personal-kpi,.operation-kpi,.history-kpi,.calendar-result-kpi,.operation-stats>div,.storage-kpis>div{text-align:center!important}
.kpi>*,.module-kpi>*,.ongoing-kpi>*,.assignment-kpi>*,.personal-kpi>*,.operation-kpi>*,.history-kpi>*,.calendar-result-kpi>*,.operation-stats>div>*,.storage-kpis>div>*{text-align:center!important;margin-left:auto!important;margin-right:auto!important}
.assignment-column-filter{display:block;width:100%;min-width:0;box-sizing:border-box;margin-top:5px;padding:3px 0;font-size:10px;border:1px solid #bdcddd;border-radius:4px;background:white;color:#234}
.assignment-column-filter.active{background:#e2efff;border-color:#2876b0;font-weight:bold}

/* V0.60.7.34 공통 결과/KPI 색상 체계 */
.status-win,
.kpi-win-result,
.personal-kpi[data-pkpi="win"],
.calendar-event.kind-result-win,
.calendar-event.kind-result-win .cal-kind{
  background:#fdecec!important;
  color:#a33!important;
  border-color:#f2cccc!important;
}
.status-win *,
.kpi-win-result *,
.personal-kpi[data-pkpi="win"] *,
.calendar-event.kind-result-win .cal-kind{color:#a33!important}
.ongoing-kpi.kpi-win-result:hover,
.kpi-win-result:hover,
.kpi-win-result.active,
.personal-kpi[data-pkpi="win"].active,
.calendar-event.kind-result-win:hover,
.calendar-event.kind-result-win.selected{
  background:#f9dddd!important;
  border-color:#e8b5b5!important;
  color:#a33!important;
}

.status-loss,
.kpi-loss-result,
.personal-kpi[data-pkpi="loss"],
.calendar-event.kind-result-loss,
.calendar-event.kind-result-loss .cal-kind{
  background:#e5f2ff!important;
  color:#175a86!important;
  border-color:#c7deef!important;
}
.status-loss *,
.kpi-loss-result *,
.personal-kpi[data-pkpi="loss"] *,
.calendar-event.kind-result-loss .cal-kind{color:#175a86!important}
.ongoing-kpi.kpi-loss-result:hover,
.kpi-loss-result:hover,
.kpi-loss-result.active,
.personal-kpi[data-pkpi="loss"].active,
.calendar-event.kind-result-loss:hover,
.calendar-event.kind-result-loss.selected{
  background:#d8ebff!important;
  border-color:#a9cce7!important;
  color:#175a86!important;
}

.operation-stats>div:has(#opWinRate),
.operation-stats>div:has(#opWinAmount),
.op-win-amount-kpi,
.history-kpi:has(#histKpiRate),
.history-kpi:has(#histKpiAmount),
.calendar-result-kpi:has(#calResultRate),
.calendar-result-kpi:has(#calResultAmount){
  background:#e9f7ef!important;
  color:#28764a!important;
  border-color:#cfe7d7!important;
}
.operation-stats>div:has(#opWinRate) *,
.operation-stats>div:has(#opWinAmount) *,
.op-win-amount-kpi *,
.history-kpi:has(#histKpiRate) *,
.history-kpi:has(#histKpiAmount) *,
.calendar-result-kpi:has(#calResultRate) *,
.calendar-result-kpi:has(#calResultAmount) *{color:#28764a!important}

/* V0.60.7.34 KPI 글자색 우선순위 보정 */
.kpi-win-result b,
.kpi-win-result span,
.operation-stats .kpi-win-result b,
.operation-stats .kpi-win-result span,
.ongoing-kpi.kpi-win-result b,
.ongoing-kpi.kpi-win-result span,
.history-kpi.kpi-win-result b,
.history-kpi.kpi-win-result span,
.personal-kpi.kpi-win-result b,
.personal-kpi.kpi-win-result span,
.calendar-result-kpi.kpi-win-result b,
.calendar-result-kpi.kpi-win-result span{
  color:#a33!important;
}

.kpi-loss-result b,
.kpi-loss-result span,
.operation-stats .kpi-loss-result b,
.operation-stats .kpi-loss-result span,
.ongoing-kpi.kpi-loss-result b,
.ongoing-kpi.kpi-loss-result span,
.history-kpi.kpi-loss-result b,
.history-kpi.kpi-loss-result span,
.personal-kpi.kpi-loss-result b,
.personal-kpi.kpi-loss-result span,
.calendar-result-kpi.kpi-loss-result b,
.calendar-result-kpi.kpi-loss-result span{
  color:#175a86!important;
}

/* V0.60.7.34 캘린더 상단 배치 */
@media(min-width:1251px){
  .calendar-toolbar{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 420px!important;
    column-gap:14px!important;
    row-gap:0!important;
    position:relative!important;
    min-height:42px;
    width:100%;
    align-items:center;
  }
  .calendar-tabs{
    grid-column:1;
    grid-row:1;
    justify-self:start;
    z-index:1;
  }
  .calendar-month-nav{
    position:absolute!important;
    left:calc((100% - 434px) / 2)!important;
    top:50%!important;
    transform:translate(-50%,-50%)!important;
    justify-content:center!important;
    z-index:2;
  }
  .calendar-result-kpis{
    position:absolute!important;
    left:calc((100% - 434px) * 0.9214285714)!important;
    right:0!important;
    top:50%!important;
    transform:translateY(-50%)!important;
    width:auto!important;
    min-width:0!important;
    grid-template-columns:repeat(5,minmax(72px,1fr))!important;
    gap:6px!important;
    z-index:3;
  }
}
@media(max-width:1250px){
  .calendar-month-nav{
    position:static!important;
    transform:none!important;
    justify-content:center!important;
  }
  .calendar-result-kpis{
    position:static!important;
    transform:none!important;
    width:100%!important;
  }
}


/* V0.60.7.40 PC 화면 호환성 1차 패치
   - 1920급 기존 배치는 유지
   - 좁은 PC/Windows 배율 환경에서는 버튼·KPI·2단 패널 겹침 방지
   - 넓은 업무표는 축소 대신 자체 가로스크롤 유지 */
@media(max-width:1600px){
  .page-head{align-items:flex-start;flex-wrap:wrap}
  .page-head .sheet-tag{max-width:100%;white-space:normal}
  .business-tabs,.admin-tabs,.actions,.ongoing-actions,.assignment-actions,.storage-actions{flex-wrap:wrap}
  #page-ongoing .ongoing-toolbar-compact{
    grid-template-columns:minmax(220px,.9fr) minmax(0,2.6fr);
  }
  #page-ongoing .ongoing-kpis-inline{
    grid-template-columns:repeat(8,minmax(64px,1fr)) !important;
  }
  .assignment-toolbar{grid-template-columns:minmax(200px,1.4fr) repeat(2,minmax(120px,1fr)) repeat(2,minmax(110px,.8fr)) auto}
  .personal-toolbar{grid-template-columns:minmax(200px,1.5fr) repeat(3,minmax(120px,1fr)) auto}
}
@media(max-width:1400px){
  main{padding:14px}
  .card{padding:13px}
  #page-ongoing .ongoing-toolbar-compact{grid-template-columns:1fr}
  #page-ongoing .ongoing-kpis-inline{grid-template-columns:repeat(4,minmax(100px,1fr)) !important}
  .assignment-summary,.personal-kpis,.history-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .assignment-toolbar,.personal-toolbar,.history-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}
  .assignment-toolbar>div:last-child,.personal-toolbar>div:last-child{min-width:0}
  .assignment-toolbar button,.personal-toolbar button{width:100%}
  .operation-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
  .operation-performance-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .operation-stage-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:1250px){
  .calendar-toolbar{gap:8px}
  .calendar-tabs{flex-wrap:wrap!important}
  .calendar-tabs button{flex:0 1 auto}
  .calendar-month-nav{flex-wrap:wrap}
  .calendar-result-kpis.show{grid-template-columns:repeat(3,minmax(90px,1fr))!important}
  .calendar-shell{grid-template-columns:1fr!important}
  .calendar-detail{position:static!important;max-height:none!important}
}
@media(max-width:1180px){
  #page-ongoing .ongoing-kpis-inline{grid-template-columns:repeat(3,minmax(100px,1fr)) !important}
  .assignment-summary,.personal-kpis,.history-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .assignment-toolbar,.personal-toolbar,.history-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}
  .operation-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .operation-performance-stats,.operation-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .operation-stage-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .timeline-mini{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:1000px){
  main{padding:10px}
  .page-head{gap:8px}
  .page-head h2{font-size:20px}
  .module-toolbar,.ongoing-toolbar,.assignment-toolbar,.personal-toolbar,.history-toolbar{grid-template-columns:1fr 1fr}
  .module-kpis,.ongoing-kpis,.assignment-summary,.personal-kpis,.history-kpis,.operation-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  #page-ongoing .ongoing-kpis-inline{grid-template-columns:repeat(2,minmax(110px,1fr)) !important}
  .new-project-grid{grid-template-columns:1fr 1fr}
  .new-project-grid .span4{grid-column:span 2}
  .calendar-result-kpis.show{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .calendar-result-kpi:last-child{grid-column:auto!important}
  .detail-grid,.assignment-meta,.personal-meta{grid-template-columns:1fr 1fr}
}
@media(max-width:760px){
  .module-toolbar,.ongoing-toolbar,.assignment-toolbar,.personal-toolbar,.history-toolbar{grid-template-columns:1fr}
  .module-kpis,.ongoing-kpis,.assignment-summary,.personal-kpis,.history-kpis,.operation-kpis{grid-template-columns:1fr 1fr}
  #page-ongoing .ongoing-kpis-inline{grid-template-columns:1fr 1fr !important}
  .operation-performance-stats,.operation-stage-stats,.operation-stats{grid-template-columns:1fr 1fr}
  .new-project-grid{grid-template-columns:1fr}
  .new-project-grid .span2,.new-project-grid .span4{grid-column:auto}
  .new-project-actions{flex-wrap:wrap}
  .new-project-actions button{flex:1 1 150px}
  .calendar-tabs button{flex:1 1 140px}
  .calendar-month-nav{justify-content:center}
  .calendar-month-title{order:-1;flex:1 0 100%;min-width:0}
  .detail-grid,.assignment-meta,.personal-meta{grid-template-columns:1fr}
  .timeline-mini{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:800px){#manpowerEditDialog form>div{grid-template-columns:1fr 1fr!important}}
@media(max-width:560px){#manpowerEditDialog form>div{grid-template-columns:1fr!important}}

/* V0.60.7.50 인력관리 KPI 클릭 필터 + 선택상태 강조 */
#page-manpower .module-kpi[data-mp-kpi]{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease,transform .15s ease;user-select:none}
#page-manpower .module-kpi[data-mp-kpi]:hover{border-color:#7898aa;box-shadow:0 3px 10px rgba(34,65,84,.14)}
#page-manpower .module-kpi[data-mp-kpi].active{border-color:#173f57;background:#234f68;box-shadow:0 4px 12px rgba(23,63,87,.24),inset 0 0 0 1px rgba(255,255,255,.12);transform:translateY(-1px)}
#page-manpower .module-kpi[data-mp-kpi].active b,#page-manpower .module-kpi[data-mp-kpi].active span{color:#fff}
#page-manpower .module-kpi[data-mp-kpi]:focus-visible{outline:3px solid #6f9db8;outline-offset:2px}

/* V0.60.7.56 인력관리 총괄수행능력 통합표시 */
.manpower-table{min-width:1680px!important}
.manpower-table th:nth-child(13),.manpower-table td:nth-child(13){min-width:150px}
.manpower-table th:nth-child(14),.manpower-table td:nth-child(14){min-width:170px}
.manpower-table th:nth-child(15),.manpower-table td:nth-child(15){min-width:150px}
/* V0.60.7.56 인력관리 전문분야 통합표시 */
#page-manpower .mp-expertise{min-width:210px;white-space:normal;line-height:1.55;color:#334e5c;font-weight:600}
#manpowerEditDialog fieldset input[type=checkbox]{width:16px;height:16px;accent-color:#17365d}


/* V0.60.7.59 좌측 브랜드 KCA CI 적용 */
/* V0.60.7.57 K-PAMS 공통 목록 디자인 — 컨설팅 보고서형 테이블 */
:root{
  --kp-table-navy:#17324d;
  --kp-table-navy-2:#244761;
  --kp-table-line:#e3e8ed;
  --kp-table-muted:#66788a;
  --kp-table-hover:#f3f6f8;
  --kp-table-stripe:#fafbfc;
  --kp-table-selected:#e9f0f5;
}
/* 목록 컨테이너: 장식은 줄이고 표 자체의 정보 위계를 강조 */
.table-wrap,.module-table-wrap,.ongoing-table-wrap,.assignment-table-wrap,
.personal-table-wrap,.operation-table-wrap,.manpower-table-wrap{
  border:1px solid #dce3e8!important;
  border-radius:4px!important;
  background:#fff!important;
  box-shadow:none!important;
}
/* 목록표 공통 타이포/선 */
.table-wrap table,.module-table,.ongoing-table,.assignment-table,.personal-table,
.operation-table-wrap table,.manpower-table,.history-table,.change-log-table,
.deleted-table,.stage-history-table{
  border-collapse:collapse!important;
  background:#fff;
  color:#263746;
}
.table-wrap table th,.module-table th,.ongoing-table th,.assignment-table th,.personal-table th,
.operation-table-wrap table th,.manpower-table th,.history-table th,.change-log-table th,
.deleted-table th,.stage-history-table th{
  background:var(--kp-table-navy)!important;
  color:#fff!important;
  border-left:0!important;
  border-right:0!important;
  border-top:0!important;
  border-bottom:1px solid var(--kp-table-navy-2)!important;
  font-weight:700!important;
  letter-spacing:-.01em;
}
.table-wrap table td,.module-table td,.ongoing-table td,.assignment-table td,.personal-table td,
.operation-table-wrap table td,.manpower-table td,.history-table td,.change-log-table td,
.deleted-table td,.stage-history-table td{
  border-left:0!important;
  border-right:0!important;
  border-top:0!important;
  border-bottom:1px solid var(--kp-table-line)!important;
  background:#fff;
  vertical-align:middle;
}
/* 긴 목록의 시선 이동을 돕는 아주 약한 행 구분 */
.table-wrap table tbody tr:nth-child(even) td,.module-table tbody tr:nth-child(even) td,
.ongoing-table tbody tr:nth-child(even) td,.assignment-table tbody tr:nth-child(even) td,
.personal-table tbody tr:nth-child(even) td,.operation-table-wrap table tbody tr:nth-child(even) td,
.manpower-table tbody tr:nth-child(even) td,.history-table tbody tr:nth-child(even) td,
.change-log-table tbody tr:nth-child(even) td,.deleted-table tbody tr:nth-child(even) td,
.stage-history-table tbody tr:nth-child(even) td{background:var(--kp-table-stripe)}
.table-wrap table tbody tr:hover td,.module-table tbody tr:hover td,.ongoing-table tbody tr:hover td,
.assignment-table tbody tr:hover td,.personal-table tbody tr:hover td,
.operation-table-wrap table tbody tr:hover td,.manpower-table tbody tr:hover td,
.history-table tbody tr:hover td,.change-log-table tbody tr:hover td,
.deleted-table tbody tr:hover td,.stage-history-table tbody tr:hover td{
  background:var(--kp-table-hover)!important;
}
/* 선택행은 색을 과장하지 않고 네이비 계열의 옅은 면으로 통일 */
tr.selected td,tr.selected-project td,tr.selected-project-row td,tr.selected-assignment-row td{
  background:var(--kp-table-selected)!important;
}
/* 사업관리의 2단 헤더: 제목행은 네이비, 필터행은 밝은 중립색 */
#page-ongoing .ongoing-table .ongoing-sort-row th{background:var(--kp-table-navy)!important;padding:7px 3px!important}
#page-ongoing .ongoing-table .og-sort{color:#fff!important;font-size:11px!important;font-weight:700!important}
#page-ongoing .ongoing-table .og-sort:hover,#page-ongoing .ongoing-table .og-sort.active{
  background:rgba(255,255,255,.12)!important;color:#fff!important;
}
#page-ongoing .ongoing-table .ongoing-filter-row th{
  background:#f1f4f6!important;color:#425466!important;border-bottom:1px solid #d7e0e6!important;
}
#page-ongoing .ongoing-table .ongoing-filter-row input,
#page-ongoing .ongoing-table .ongoing-filter-row select{
  border:1px solid #d5dde3!important;border-radius:3px!important;background:#fff!important;color:#334155!important;
}
/* 인력관리 헤더필터도 동일한 네이비 헤더 체계 유지 */
.manpower-table thead th{background:var(--kp-table-navy)!important;color:#fff!important}
.manpower-table th.mp-filter-active{background:#244d69!important}
.manpower-table th.mp-filter-active .mp-head-filter-btn,.manpower-table .mp-head-filter-btn{color:#fff!important}
/* 핵심 명칭은 좌측 정렬/진한 본문색으로, 링크성 파랑은 절제 */
td.name,.module-table td.name-link,.assignment-table td.project,.personal-table td.person-name,
.manpower-table td.name-link,.ongoing-table td.project-name{
  color:#173b56!important;font-weight:700!important;
}
/* 상태/결과 badge의 기존 의미색은 그대로 보존 */


/* V0.60.7.58 좌측 메인메뉴 — Deep Navy Navigation */
.sidebar{
  background:#102a43 !important;
  border-right:1px solid #0b2238 !important;
  padding:16px 12px 18px !important;
  color:#dbe7f1;
  box-shadow:4px 0 18px rgba(15,42,67,.08);
  scrollbar-color:#46627a #102a43;
}
.sidebar-brand{display:flex;align-items:center;justify-content:center;gap:11px;min-height:56px;padding:3px 8px 18px;margin-bottom:7px;border-bottom:1px solid rgba(255,255,255,.12)}
.sidebar-brand-mark{width:38px;height:38px;display:flex;align-items:center;justify-content:center;flex:0 0 38px}
.sidebar-brand-mark img{display:block;width:36px;height:auto;max-height:36px;object-fit:contain}
.sidebar-brand-name{font-size:17px;font-weight:800;letter-spacing:.035em;color:#fff;line-height:1.15}
.sidebar-brand-sub{margin-top:3px;font-size:9.5px;font-weight:600;letter-spacing:.035em;color:#9fb4c7;white-space:nowrap}
.sidebar .side-title{font-size:9.5px;color:#829bb0;font-weight:800;letter-spacing:.14em;padding:9px 12px 6px}
.sidebar .side-title-admin{padding-top:2px}
.sidebar .nav-btn{position:relative;width:100%;display:flex;align-items:center;gap:10px;text-align:left;background:transparent;color:#cbd9e5;border:0;border-radius:6px;padding:10px 11px;margin:2px 0;font-weight:700;box-shadow:none;transition:background .14s ease,color .14s ease,transform .14s ease}
.sidebar .nav-btn:hover{background:#193b58;color:#fff;transform:translateX(1px)}
.sidebar .nav-btn.active{background:#f7fafc;color:#102a43;box-shadow:none}
.sidebar .nav-btn.active::before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:#2f6f95}
.sidebar .nav-icon{width:20px;text-align:center;font-size:13px;color:#8eabc0;opacity:.95}
.sidebar .nav-btn:hover .nav-icon{color:#dce8f1}
.sidebar .nav-btn.active .nav-icon{color:#2f6f95}
.sidebar .nav-divider{height:1px;background:rgba(255,255,255,.13);margin:12px 9px 7px}
.sidebar .sidebar-clock-panel{border-top:1px solid rgba(255,255,255,.13) !important;border-bottom:1px solid rgba(255,255,255,.13) !important;color:#c9d8e4;padding-top:13px;padding-bottom:13px}
.sidebar .sidebar-date-text,.sidebar .sidebar-time-text{color:#dbe7f1}
.sidebar .analog-clock{background:#f8fbfd;border-color:#7f9bb0;box-shadow:inset 0 0 0 2px #e8f0f5}
.sidebar .data-source-box{background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.10);border-radius:7px;padding:10px;margin-top:10px}
.sidebar .data-title{color:#8fa8bc;letter-spacing:.12em}
.sidebar .web-db-status{color:#9fd3b5}.sidebar .web-db-status.warn{color:#f0d38a}.sidebar .web-db-status.bad{color:#f0aaaa}
.sidebar .web-db-time,.sidebar .data-source-status{color:#a9bdcd}
.sidebar .sidebar-external-status{border-top-color:rgba(255,255,255,.12);color:#d4bd72}
.sidebar .sidebar-external-status.good{color:#9fd3b5}.sidebar .sidebar-external-status.bad{color:#f0aaaa}
.sidebar .data-load-btn{width:100%;background:#244965;color:#eef5fa;border:1px solid rgba(255,255,255,.12);box-shadow:none}
.sidebar .data-load-btn:hover{background:#2e5877;color:#fff}
.sidebar .side-foot{border-top:1px solid rgba(255,255,255,.13);margin-top:14px;padding:13px 10px 0;font-size:10.5px;color:#829bb0;line-height:1.65}
@media(max-width:1000px){
  .sidebar{background:#102a43 !important;border-bottom:1px solid #0b2238 !important;padding:8px !important;align-items:center}
  .sidebar-brand{display:none}
  .sidebar .side-title,.sidebar .side-foot{display:none}
  .sidebar .nav-btn{width:auto;white-space:nowrap;margin:0;padding:9px 11px}
  .sidebar .nav-btn.active::before{left:7px;right:7px;top:auto;bottom:0;width:auto;height:3px;border-radius:3px 3px 0 0}
  .sidebar .nav-divider{width:1px;height:26px;margin:0 5px;background:rgba(255,255,255,.18);flex:0 0 auto}
  .sidebar .sidebar-clock-panel,.sidebar .data-source-box{display:none}
}


/* V0.60.7.61 단계 KPI 공통 색상 체계: 사전규격 → 본공고 → 결과대기 순으로 동일 Blue 계열 농도 상승 */
.stage-flow-kpi.stage-flow-pre{background:#edf5fc!important;border-color:#c9deef!important;color:#244f73!important}
.stage-flow-kpi.stage-flow-main{background:#cfe3f6!important;border-color:#a9cbe7!important;color:#173f63!important}
.stage-flow-kpi.stage-flow-evaluation{background:#b8d5ec!important;border-color:#95bfdf!important;color:#174f7a!important}
.stage-flow-kpi.stage-flow-waiting{background:#8fb9dc!important;border-color:#6fa4cf!important;color:#0b3153!important}
.stage-flow-kpi.stage-flow-pre b,.stage-flow-kpi.stage-flow-pre span{color:#244f73!important}
.stage-flow-kpi.stage-flow-main b,.stage-flow-kpi.stage-flow-main span{color:#173f63!important}
.stage-flow-kpi.stage-flow-evaluation b,.stage-flow-kpi.stage-flow-evaluation span{color:#174f7a!important}
.stage-flow-kpi.stage-flow-waiting b,.stage-flow-kpi.stage-flow-waiting span{color:#0b3153!important}
.ongoing-kpi.stage-flow-pre:hover,.assignment-kpi.stage-flow-pre:hover{background:#e1eef9!important;border-color:#b5d2e9!important}
.ongoing-kpi.stage-flow-main:hover,.assignment-kpi.stage-flow-main:hover{background:#bfdaf1!important;border-color:#93bddf!important}
.ongoing-kpi.stage-flow-evaluation:hover,.assignment-kpi.stage-flow-evaluation:hover{background:#a7cae5!important;border-color:#82b2d7!important}
.ongoing-kpi.stage-flow-waiting:hover,.assignment-kpi.stage-flow-waiting:hover{background:#7eadd3!important;border-color:#5e97c5!important}
.assignment-kpi.stage-flow-kpi.active{box-shadow:0 0 0 2px #315f83 inset,0 2px 7px rgba(15,45,70,.12)!important}

/* V0.71 품질검토 1차 */
.quality-card{padding:18px}.quality-kpis{grid-template-columns:repeat(6,minmax(120px,1fr));gap:10px;margin-bottom:12px}.quality-kpis .module-kpi{cursor:pointer;transition:.15s ease}.quality-kpis .module-kpi.active{background:#17365d;color:#fff;border-color:#17365d;box-shadow:0 3px 10px rgba(23,54,93,.18)}.quality-kpis .module-kpi.active span{color:inherit}.quality-kpis .module-kpi{box-shadow:none}.quality-kpis .module-kpi.kpi-review-all{background:#f3f5f7;color:#536273;border-color:#dde3e8}.quality-kpis .module-kpi.kpi-review-pink{background:#fff0f4;color:#9f3151;border-color:#f3ccd8}.quality-kpis .module-kpi.kpi-review-red1{background:#fff2ee;color:#a34531;border-color:#f2d1c8}.quality-kpis .module-kpi.kpi-review-red2{background:#fdeeee;color:#943737;border-color:#edcaca}.quality-kpis .module-kpi.kpi-review-final{background:#eef5fb;color:#28567d;border-color:#cdddea}.quality-kpis .module-kpi.kpi-review-rehearsal{background:#f4f0fa;color:#665080;border-color:#ddd2ea}.quality-kpis .module-kpi.active{box-shadow:inset 0 0 0 2px currentColor;filter:saturate(1.05)}.quality-kpis .module-kpi b,.quality-kpis .module-kpi span{color:inherit}.quality-policy-note{padding:11px 13px;margin:4px 0 14px;border:1px solid #d9e2ec;background:#f8fafc;border-radius:8px;font-size:12px;line-height:1.6}.quality-toolbar{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px}.quality-toolbar .muted{margin-left:8px}.module-table-wrap:has(.quality-table){overflow-x:hidden}.quality-table{width:100%;min-width:0!important;table-layout:fixed}.quality-table th,.quality-table td{white-space:nowrap;padding-left:3px!important;padding-right:3px!important;overflow:hidden;text-overflow:ellipsis}.quality-table th:nth-child(1),.quality-table td:nth-child(1){width:5%}.quality-table th:nth-child(2),.quality-table td:nth-child(2){white-space:normal;width:7.5%;min-width:0;max-width:none}.quality-table th:nth-child(2){text-align:center}.quality-table td:nth-child(2){text-align:left}.quality-table th:nth-child(3),.quality-table td:nth-child(3){white-space:normal;width:10%;min-width:0;max-width:none}.quality-table th:nth-child(3){text-align:center}.quality-table td:nth-child(3){text-align:left}.quality-table th:nth-child(4),.quality-table td:nth-child(4){width:5%}.quality-table th:nth-child(5),.quality-table td:nth-child(5){width:5%}.quality-table th:nth-child(6),.quality-table td:nth-child(6){width:5.5%}.quality-table th:nth-child(7),.quality-table td:nth-child(7){width:5.5%}.quality-table th:nth-child(8),.quality-table td:nth-child(8){width:4%}.quality-table th:nth-child(9),.quality-table td:nth-child(9){width:5%}.quality-table th:nth-child(10),.quality-table td:nth-child(10){width:3%}.quality-table th:nth-child(11),.quality-table td:nth-child(11){width:44.5%;min-width:0;overflow:visible}.quality-table th:nth-child(11){text-align:center}.quality-table td:nth-child(11){text-overflow:clip}.review-chip{display:inline-flex;align-items:center;justify-content:center;min-width:54px;padding:4px 6px;border-radius:999px;font-size:11px;font-weight:800;border:1px solid transparent}.review-chip.na{background:#f3f4f6;color:#9ca3af}.review-chip.warn{background:#fff4d6;color:#8a5a00;border-color:#f2d28a}.review-chip.check{background:#eef4fb;color:#17365d;border-color:#c7d7e8}.review-pipeline{display:flex;align-items:flex-start;justify-content:flex-start;gap:4px;min-width:650px;width:auto}.review-step-wrap{display:inline-flex;flex:0 0 82px;flex-direction:column;align-items:center;justify-content:flex-start;width:82px;min-width:82px}.review-step-date{margin-top:4px;min-height:14px;font-size:10px;font-weight:700;line-height:1;color:#64748b;white-space:nowrap}.review-step-date.stage-pink{color:#9f3151}.review-step-date.stage-red1{color:#a34531}.review-step-date.stage-red2{color:#943737}.review-step-date.stage-final{color:#28567d}.review-step-date.stage-rehearsal{color:#665080}.review-step-date.stage-submit{color:#28665f}.review-step-date.stage-pt,.review-step-date.stage-eval{color:#46558a}.review-step-date.done{color:#7b8188}.review-step{display:inline-flex;align-items:center;justify-content:center;width:74px;min-width:74px;box-sizing:border-box;padding:7px 8px;border-radius:6px;background:#f4f6f8;color:#475569;font-size:11px;font-weight:800;border:1px solid transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.review-step.stage-pink{background:#fff0f4;color:#9f3151;border-color:#f3ccd8}.review-step.stage-red1{background:#fff2ee;color:#a34531;border-color:#f2d1c8}.review-step.stage-red2{background:#fdeeee;color:#943737;border-color:#edcaca}.review-step.stage-final{background:#eef5fb;color:#28567d;border-color:#cdddea}.review-step.stage-rehearsal{background:#f4f0fa;color:#665080;border-color:#ddd2ea}.review-step.stage-submit{background:#e9f7f5;color:#28665f;border-color:#bfdfda}.review-step.stage-pt,.review-step.stage-eval{background:#edf0fb;color:#46558a;border-color:#cfd5ec}.review-step.warn,.review-step.check,.review-step.scheduled{box-shadow:none}.review-step.done{background:#f1f2f3!important;color:#7b8188!important;border-color:#d9dde1!important;opacity:1;box-shadow:none}.review-step-action{cursor:pointer;transition:border-color .12s ease,filter .12s ease}.review-step-action:hover{filter:saturate(1.12);border-color:currentColor}.review-step-action:focus{outline:2px solid currentColor;outline-offset:1px}.review-arrow{color:#94a3b8;font-size:11px;flex:0 0 6px;text-align:center;padding-top:7px}@media(max-width:1450px){.quality-kpis{grid-template-columns:repeat(3,1fr)}}

/* V0.72 제안서리뷰 2차 */
.quality-stage-badge{display:inline-flex;align-items:center;justify-content:center;min-width:58px;box-sizing:border-box;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800;line-height:1.2;white-space:nowrap;border:1px solid transparent}
.quality-stage-badge.stage-pre{background:#eef5ff;color:#2b5f91;border-color:#cddff2}
.quality-stage-badge.stage-main{background:#e9f7ef;color:#28764a;border-color:#c8e5d4}.quality-stage-badge.stage-renotice{background:#fff4e8;color:#9a5a16;border-color:#efd1ad}
.quality-stage-badge.stage-evaluation{background:#fff1d5;color:#88530e;border-color:#eac989}
.quality-stage-badge.stage-waiting{background:#eee6ff;color:#60369a;border-color:#d4c1f4}
.quality-table tbody tr{cursor:default}.quality-table tbody tr:hover{background:#f5f8fc}.quality-stage-action{display:inline-flex;cursor:pointer}.quality-stage-action .review-chip{transition:.12s ease}.quality-stage-action:hover .review-chip{filter:brightness(.97);box-shadow:0 1px 4px rgba(15,23,42,.10)}.review-chip.scheduled{background:#eaf2fb;color:#17365d;border-color:#b8cce1}.review-chip.done{background:#e9f5ec;color:#27633a;border-color:#b9d9c1}.review-chip.self{background:#f1ecfb;color:#5b3f8c;border-color:#d5c8ef}.review-detail-hint{font-size:11px;color:#64748b;margin-left:8px}.review-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.review-form-grid label{font-size:12px;font-weight:700;color:#334155}.review-form-grid input,.review-form-grid textarea,.review-form-grid select{display:block;width:100%;box-sizing:border-box;margin-top:5px}.review-form-grid .wide{grid-column:1/-1}.review-policy-box{padding:10px 12px;background:#f8fafc;border:1px solid #dbe4ee;border-radius:8px;font-size:12px;line-height:1.55;margin:10px 0 14px}@media(max-width:760px){.review-form-grid{grid-template-columns:1fr}}

/* V0.73 reviewer pool / project reviewer */
.reviewer-picker{border:1px solid #d7e0e7;border-radius:8px;padding:8px;background:#fafcfd}.reviewer-picker-row{display:flex;gap:6px}.reviewer-picker-row input{flex:1}.reviewer-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px;min-height:22px}.reviewer-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border:1px solid #b9cbd8;border-radius:999px;background:#eef5f8;color:#23465a;font-size:12px}.reviewer-chip button{border:0;background:transparent;color:#667b87;padding:0;min-width:auto;cursor:pointer}.reviewer-pool-card{margin-top:14px}.reviewer-pool-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:8px;align-items:end}.reviewer-pool-list{margin-top:12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.reviewer-pool-group{border:1px solid #dce5eb;border-radius:9px;padding:12px;background:#fff}.reviewer-pool-group h4{margin:0 0 8px;color:#173b56}.reviewer-pool-item{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid #eef2f5}.reviewer-pool-item:last-child{border-bottom:0}.reviewer-pool-item button{padding:4px 8px;font-size:11px}.reviewer-pool-note{font-size:12px;color:#667782;margin-top:6px}

/* V0.73.4.13.10 제안배정 현황 목록 단순화: 헤더필터 제거 / 검토자 추가 / 배정일까지 표시 */
#page-assignment .assignment-table-wrap{overflow-y:auto !important;overflow-x:hidden !important;}
#page-assignment .assignment-table{width:100% !important;min-width:0 !important;table-layout:fixed !important;font-size:11px;}
#page-assignment .assignment-table th,#page-assignment .assignment-table td{box-sizing:border-box;padding-left:5px !important;padding-right:5px !important;}
#page-assignment .assignment-table th{white-space:nowrap;font-size:11px;}
#page-assignment .assignment-table th:nth-child(1),#page-assignment .assignment-table td:nth-child(1){width:78px;}
#page-assignment .assignment-table th:nth-child(2),#page-assignment .assignment-table td:nth-child(2){width:70px;}
#page-assignment .assignment-table th:nth-child(3),#page-assignment .assignment-table td:nth-child(3){width:130px;}
#page-assignment .assignment-table th:nth-child(4),#page-assignment .assignment-table td:nth-child(4){width:250px;}
#page-assignment .assignment-table th:nth-child(5),#page-assignment .assignment-table td:nth-child(5){width:92px;}
#page-assignment .assignment-table th:nth-child(6),#page-assignment .assignment-table td:nth-child(6){width:82px;}
#page-assignment .assignment-table th:nth-child(7),#page-assignment .assignment-table td:nth-child(7){width:90px;}
#page-assignment .assignment-table th:nth-child(8),#page-assignment .assignment-table td:nth-child(8){width:72px;}
#page-assignment .assignment-table th:nth-child(9),#page-assignment .assignment-table td:nth-child(9){width:105px;}
#page-assignment .assignment-table th:nth-child(10),#page-assignment .assignment-table td:nth-child(10){width:86px;}
#page-assignment .assignment-table td:nth-child(3),#page-assignment .assignment-table td:nth-child(4){white-space:normal !important;word-break:keep-all;line-height:1.25;}
#page-assignment .assignment-table td:nth-child(5),#page-assignment .assignment-table td:nth-child(6),#page-assignment .assignment-table td:nth-child(7),#page-assignment .assignment-table td:nth-child(8),#page-assignment .assignment-table td:nth-child(9),#page-assignment .assignment-table td:nth-child(10){white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* V0.73.4.13.12.11: personal win amount display precision and alignment */
#page-personal .personal-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
#page-personal .personal-detail{position:relative;top:auto;width:auto;max-height:none}
#page-personal .personal-table-wrap{overflow-x:hidden;overflow-y:auto;max-width:100%}
#page-personal .personal-table{table-layout:fixed;width:100%;min-width:0!important;font-size:11px}
#page-personal .personal-table th,#page-personal .personal-table td{padding:8px 3px;white-space:nowrap;text-align:center;letter-spacing:-.025em}
#page-personal .personal-table th:nth-child(1){width:7%}
#page-personal .personal-table th:nth-child(2){width:10%}
#page-personal .personal-table th:nth-child(3){width:8%}
#page-personal .personal-table th:nth-child(4){width:11%}
#page-personal .personal-table th:nth-child(5),#page-personal .personal-table th:nth-child(6){width:5%}
#page-personal .personal-table th:nth-child(7),#page-personal .personal-table th:nth-child(8){width:7%}
#page-personal .personal-table th:nth-child(9){width:6%}
#page-personal .personal-table th:nth-child(10){width:7%}
#page-personal .personal-table th:nth-child(11){width:7%}
#page-personal .personal-table th:nth-child(12){width:12%}
#page-personal .personal-table th:nth-child(13){width:8%}
#page-personal .personal-table td.person-name{text-align:center}
#page-personal .personal-table td{overflow:hidden;text-overflow:ellipsis}
#page-personal .personal-table td.personal-win-amount{text-align:right;font-weight:700;color:#1d6845;font-variant-numeric:tabular-nums}
#page-personal .personal-table td .badge{font-size:10px;padding:3px 5px}

/* V0.73.4.13.12.14: 14px personal list with narrower affiliation column, preserve right detail/sorting */
#page-personal .personal-layout{display:grid;grid-template-columns:minmax(0,1fr) 275px;gap:8px;align-items:start}
#page-personal .personal-detail{position:sticky;top:8px;max-height:760px;overflow:auto;min-width:0;padding:12px}
#page-personal .personal-table-wrap{overflow-x:hidden;overflow-y:auto;max-width:100%}
#page-personal .personal-table{width:100%;min-width:0!important;table-layout:fixed;font-size:14px}
#page-personal .personal-table th,#page-personal .personal-table td{padding:8px 1px;letter-spacing:-.025em;text-align:center;line-height:1.22}
#page-personal .personal-table th{white-space:normal;word-break:keep-all;font-size:13.5px;cursor:pointer;user-select:none;vertical-align:middle}
#page-personal .personal-table th:hover{background:#eaf4f7}
#page-personal .personal-table th:focus-visible{outline:2px solid #276e91;outline-offset:-2px}
#page-personal .personal-table th.personal-sort-active{background:#e8f3fb;color:#185780}
#page-personal .personal-table th .personal-sort-icon{display:inline;font-size:12px;white-space:nowrap;color:#62849c;margin-left:1px}
#page-personal .personal-table th:nth-child(1){width:8%}
#page-personal .personal-table th:nth-child(2){width:8%}
#page-personal .personal-table th:nth-child(3){width:7%}
#page-personal .personal-table th:nth-child(4){width:11%}
#page-personal .personal-table th:nth-child(5){width:5%}
#page-personal .personal-table th:nth-child(6){width:5%}
#page-personal .personal-table th:nth-child(7){width:7%}
#page-personal .personal-table th:nth-child(8){width:7%}
#page-personal .personal-table th:nth-child(9){width:7%}
#page-personal .personal-table th:nth-child(10){width:9%}
#page-personal .personal-table th:nth-child(11){width:7%}
#page-personal .personal-table th:nth-child(12){width:9%}
#page-personal .personal-table th:nth-child(13){width:10%}
#page-personal .personal-table td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#page-personal .personal-table td.person-name{text-align:center}
#page-personal .personal-table td.personal-win-amount{text-align:right;padding-right:5px}
#page-personal .personal-table td .badge{font-size:13px;padding:3px 2px;max-width:100%;overflow:hidden;text-overflow:ellipsis}
#page-personal .personal-meta{gap:5px}
#page-personal .personal-meta div{padding:6px}
@media(max-width:900px){#page-personal .personal-layout{grid-template-columns:minmax(0,1fr)}#page-personal .personal-detail{position:relative;top:auto;max-height:none}}

/* V0.73.4.13.12.18 사업관리: 우측 상세창 440px 복원, KPI 자체 폭만 조정 */
@media (min-width:1181px){
  #page-ongoing .business-shell{grid-template-columns:minmax(0,1fr) 440px !important;gap:14px !important}
  /* 검색을 윗줄로 분리하여 KPI 9개에 목록 전체 너비 확보 */
  #page-ongoing .ongoing-toolbar-compact{grid-template-columns:minmax(0,1fr) !important;gap:7px !important}
  #page-ongoing .ongoing-kpis-inline{
    grid-template-columns:repeat(8,minmax(0,1fr)) minmax(114px,1.65fr) !important;
    gap:4px !important;
    width:100%;min-width:0;
  }
  #page-ongoing .ongoing-kpis-inline .ongoing-kpi{padding:7px 3px !important;min-width:0;text-align:center}
  #page-ongoing .ongoing-kpis-inline .ongoing-kpi span{font-size:10px !important;white-space:nowrap;letter-spacing:-.4px}
  #page-ongoing .ongoing-kpis-inline .ongoing-kpi b{font-size:16px !important;white-space:nowrap}
}

/* 개별 사업 리뷰 생략: 정책상의 흐름은 유지, 일정에서는 제거 */
.review-step.skipped{background:#f1f3f5!important;color:#808995!important;border-color:#d8dee6!important;opacity:.85;text-decoration:line-through}
.review-step-date.skipped{color:#88929f!important}
.review-policy-exception{border:1px solid #dae0e7;background:#f8fafc;padding:12px;border-radius:8px;margin:10px 0}
.review-policy-exception label{font-size:13px;font-weight:700}
.review-policy-exception select,.review-policy-exception input{width:100%;max-width:100%;margin-top:5px}
.review-policy-exception .muted{font-size:12px;line-height:1.5}

/* V0.73.4.13.12.28: two-row writer recommendation entry form */
#page-recommend .recommend-project-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(175px,1.1fr) minmax(220px,2.25fr);gap:10px;align-items:end}
#page-recommend .recommend-weight-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;align-items:end;margin-top:12px}
#page-recommend .recommend-project-row .field,#page-recommend .recommend-weight-row .field{min-width:0}
#page-recommend .recommend-weight-row .field label{min-height:30px;display:flex;align-items:flex-end;line-height:1.2;word-break:keep-all}
#page-recommend .recommend-weight-row input{height:36px}
#page-recommend #wTotal{background:#f1f5f9;color:#183750;font-weight:800} #page-recommend #wTotal.weight-out-of-range{background:#ffe4e6;color:#991b1b;border-color:#dc2626}
@media(max-width:850px){#page-recommend .recommend-project-row{grid-template-columns:1fr 1fr}#page-recommend .recommend-project-row>.field:last-child{grid-column:1/-1}#page-recommend .recommend-weight-row{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:480px){#page-recommend .recommend-project-row{grid-template-columns:1fr}#page-recommend .recommend-project-row>.field:last-child{grid-column:auto}#page-recommend .recommend-weight-row{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V0.73.4.13.12.28: remove recommendation draft panel; align entry card with the list */
#page-recommend .recommend-top{display:block;margin-bottom:10px}
#page-recommend .recommend-input-card{width:100%;box-sizing:border-box;padding:14px 16px 12px}
#page-recommend .recommend-project-row{grid-template-columns:minmax(125px,1fr) minmax(160px,1.15fr) minmax(250px,2.55fr);gap:10px}
#page-recommend .recommend-weight-row{margin-top:9px;gap:9px}
#page-recommend .recommend-weight-row .field label{min-height:30px}
#page-recommend .recommend-input-card .actions{margin-top:9px;gap:8px}
@media(max-width:850px){#page-recommend .recommend-project-row{grid-template-columns:1fr 1fr}}
@media(max-width:480px){#page-recommend .recommend-project-row{grid-template-columns:1fr}}

/* Reviewer pool controls: consistent light K-PAMS palette */
.reviewer-search-wrap{position:relative;flex:1;min-width:0}.reviewer-search-wrap input{width:100%;box-sizing:border-box;background:#fff;color:#18384e;border:1px solid #cddbe5;border-radius:8px}.reviewer-search-options{position:absolute;z-index:200;width:100%;box-sizing:border-box;top:calc(100% + 3px);left:0;max-height:200px;overflow-y:auto;background:#fff;color:#21394b;border:1px solid #c8d8e4;border-radius:8px;box-shadow:0 8px 22px rgba(17,48,72,.13);padding:4px}.reviewer-search-options[hidden],.reviewer-modal-backdrop[hidden]{display:none!important}.reviewer-search-options button{display:block;width:100%;text-align:left;background:transparent;color:#21394b;border:0;border-radius:5px;padding:9px 11px;cursor:pointer;font-size:13px}.reviewer-search-options button:hover,.reviewer-search-options button:focus{background:#e9f3fa;color:#0e577e}.reviewer-search-options .muted{display:block;padding:10px;font-size:12px}.reviewer-manage-link{display:flex;justify-content:flex-end;margin-top:7px}.reviewer-manage-link button{font-size:12px;padding:5px 10px}.reviewer-modal-backdrop{position:fixed;inset:0;z-index:9999;background:rgba(16,36,56,.42);display:flex;align-items:center;justify-content:center;padding:18px}.reviewer-modal{box-sizing:border-box;width:min(620px,100%);max-height:85vh;overflow-y:auto;background:#fff;border-radius:12px;border:1px solid #cedde7;box-shadow:0 20px 56px rgba(0,0,0,.22);padding:22px;color:#1b3548}.reviewer-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.reviewer-modal-head h3{margin:0 0 5px}.reviewer-modal-head p{margin:0;font-size:12px}.reviewer-status-inactive{color:#8996a2;font-size:12px}.reviewer-pool-item.inactive{opacity:.75}.reviewer-pool-item .reviewer-pool-identity{display:flex;gap:9px;align-items:center}.reviewer-pool-item button{min-width:68px}

/* V0.73.4.13.12.37: 일정 탭 5개 + 금요일 우측 경계에 월 이동 정렬 */
@media(min-width:1251px){
  #page-calendar .calendar-toolbar{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 420px!important;
    grid-template-rows:auto auto!important;
    row-gap:8px!important;
    align-items:center!important;
    position:relative!important;
    min-height:0!important;
  }
  #page-calendar .calendar-tabs{grid-column:1 / -1!important;grid-row:1!important;position:static!important;justify-self:start!important;}
  #page-calendar .calendar-month-nav{
    grid-column:1!important;grid-row:2!important;
    position:static!important;left:auto!important;top:auto!important;
    transform:none!important;justify-self:end!important;
    margin-right:7.85714286%!important;z-index:auto!important;
  }
  #page-calendar .calendar-result-kpis{
    grid-column:1 / -1!important;grid-row:3!important;
    position:static!important;left:auto!important;right:auto!important;top:auto!important;
    transform:none!important;width:100%!important;
    grid-template-columns:repeat(5,minmax(72px,1fr))!important;
    justify-self:stretch!important;
  }
}
.calendar-event.kind-review-pink{background:#fff0f4;border-color:#f3ccd8}
.calendar-event.kind-review-pink .cal-kind{background:#f7dbe5;color:#9f3151}
.calendar-event.kind-review-red1{background:#fff2ee;border-color:#f2d1c8}
.calendar-event.kind-review-red1 .cal-kind{background:#f5dfd8;color:#a34531}
.calendar-event.kind-review-red2{background:#fdeeee;border-color:#edcaca}
.calendar-event.kind-review-red2 .cal-kind{background:#f4d8d8;color:#943737}
.calendar-event.kind-review-final{background:#eef5fb;border-color:#cdddea}
.calendar-event.kind-review-final .cal-kind{background:#dcebf7;color:#28567d}
.calendar-event.kind-review-rehearsal{background:#f4f0fa;border-color:#ddd2ea}
.calendar-event.kind-review-rehearsal .cal-kind{background:#e9dff4;color:#665080}
.calendar-event[class*="kind-review-"]:hover,.calendar-event[class*="kind-review-"].selected{border-color:#a9bfce;filter:saturate(1.07)}


/* V0.73.4.13.12.37: 제안결과 5 KPI를 일~수 영역에 한 줄로 배치 */
@media(min-width:1251px){
  #page-calendar .calendar-toolbar{grid-template-rows:auto minmax(48px,auto)!important;}
  #page-calendar .calendar-result-kpis.show{
    grid-column:1!important;
    grid-row:2!important;
    position:static!important;
    transform:none!important;
    display:grid!important;
    width:58.42857143%!important; /* 일요일 .55 + 월~수 1.18*3 / 총 7 */
    max-width:58.42857143%!important;
    min-width:0!important;
    justify-self:start!important;
    align-self:center!important;
    grid-template-columns:minmax(0,.95fr) minmax(0,.77fr) minmax(0,.77fr) minmax(0,.86fr) minmax(0,1.35fr)!important;
    gap:4px!important;
    z-index:1!important;
  }
  #page-calendar .calendar-result-kpi{padding:6px 3px!important;overflow:hidden!important}
  #page-calendar .calendar-result-kpi b{font-size:14px!important;white-space:nowrap!important;letter-spacing:-.25px!important}
  #page-calendar .calendar-result-kpi span{font-size:9px!important;white-space:nowrap!important;letter-spacing:-.35px!important}
}
/* 오른쪽 월 이동 버튼과 KPI가 닿는 화면에서는 독립 행 사용 (KPI 5개는 계속 한 줄). */
@media(min-width:1251px) and (max-width:1750px){
  #page-calendar .calendar-result-kpis.show{grid-row:3!important;margin-top:3px!important}
}
@media(max-width:1250px){
  #page-calendar .calendar-result-kpis.show{
    display:grid!important;
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    gap:4px!important;
  }
  #page-calendar .calendar-result-kpi:last-child{grid-column:auto!important}
  #page-calendar .calendar-result-kpi{padding:6px 3px!important}
  #page-calendar .calendar-result-kpi span{font-size:9px!important;letter-spacing:-.3px!important}
}
@media(max-width:600px){
  #page-calendar .calendar-result-kpi b{font-size:12px!important}
  #page-calendar .calendar-result-kpi span{font-size:8px!important}
}


/* V4 review dialog form control alignment: explicit class instead of :has-only inference. */
dialog.kpams-review-dialog{box-sizing:border-box!important;width:min(850px,96vw)!important;max-height:90vh!important;padding:22px 24px!important}
dialog.kpams-review-dialog .review-form-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:15px 20px!important;align-items:start!important}
dialog.kpams-review-dialog .review-form-grid>label{min-width:0!important;line-height:1.5!important}
dialog.kpams-review-dialog .review-form-grid>label.review-check-option{display:flex!important;flex-direction:row!important;justify-content:flex-start!important;align-items:center!important;gap:10px!important;min-height:38px!important;padding:5px 2px!important;white-space:normal!important;cursor:pointer!important}
dialog.kpams-review-dialog .review-form-grid>label.review-check-option>input[type=checkbox]{display:block!important;position:static!important;float:none!important;flex:0 0 17px!important;width:17px!important;height:17px!important;min-width:17px!important;max-width:17px!important;margin:0!important;padding:0!important;appearance:auto!important;box-sizing:border-box!important}
dialog.kpams-review-dialog .review-check-option .review-check-label{display:inline!important;flex:1 1 auto!important;min-width:0!important;font-size:13px!important;line-height:1.45!important}
dialog.kpams-review-dialog .review-form-grid input:not([type=checkbox]),dialog.kpams-review-dialog .review-form-grid textarea,dialog.kpams-review-dialog .review-form-grid select{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;margin:6px 0 0!important}
dialog.kpams-review-dialog .review-dialog-actions{display:flex!important;justify-content:flex-end!important;align-items:center!important;gap:12px!important;flex-wrap:wrap!important;margin-top:18px!important}
dialog.kpams-review-dialog .review-dialog-actions>button{display:inline-flex!important;justify-content:center!important;align-items:center!important;min-width:106px!important;min-height:36px!important;padding:8px 14px!important;margin:0!important;white-space:nowrap!important}
@media(max-width:760px){dialog.kpams-review-dialog{padding:15px!important}dialog.kpams-review-dialog .review-form-grid{grid-template-columns:1fr!important}}

/* Unified stage badges: evaluation waiting distinct from reannouncement */
.quality-stage-badge.stage-evaluation,.badge.stage-evaluation,.badge.stage-flow-evaluation{background:#ffe3e5!important;color:#a32437!important;border-color:#f3adb6!important}
.stage-flow-kpi.stage-flow-evaluation,.ongoing-kpi.stage-flow-evaluation,.assignment-kpi.stage-flow-evaluation{background:#ffdce1!important;border-color:#e9a3ae!important;color:#91243a!important}
.stage-flow-kpi.stage-flow-evaluation b,.stage-flow-kpi.stage-flow-evaluation span,.ongoing-kpi.stage-flow-evaluation b,.ongoing-kpi.stage-flow-evaluation span,.assignment-kpi.stage-flow-evaluation b,.assignment-kpi.stage-flow-evaluation span{color:#91243a!important}
.ongoing-kpi.stage-flow-evaluation:hover,.assignment-kpi.stage-flow-evaluation:hover{background:#ffcdd5!important;border-color:#e68d9b!important}

.ongoing-kpi.stage-flow-renotice{background:#fff0e0!important;border:1px solid #efcfab!important;color:#96540c!important}

/* Patch: 사업관리 KPI 10개를 한 줄로 표시하고 결과대기는 보라색으로 통일 */
#page-ongoing .ongoing-kpis-inline{display:grid!important;grid-template-columns:repeat(9,minmax(0,1fr)) minmax(100px,1.50fr)!important;gap:4px!important;flex-wrap:nowrap!important;width:100%!important;min-width:0!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi{box-sizing:border-box!important;min-width:0!important;min-height:43px!important;padding:6px 2px!important;text-align:center!important;margin:0!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi b{font-size:clamp(11px,1.03vw,16px)!important;white-space:nowrap!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi span{font-size:clamp(8px,.69vw,10px)!important;letter-spacing:-.45px!important;white-space:nowrap!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi[data-summary-kpi="amount"] span{font-size:clamp(7px,.62vw,9px)!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi[data-kpi="waiting"],
#page-ongoing .ongoing-kpis-inline .stage-flow-waiting{background:#eee6ff!important;border-color:#d4c1f4!important;color:#60369a!important}
#page-ongoing .ongoing-kpis-inline .stage-flow-waiting b,
#page-ongoing .ongoing-kpis-inline .stage-flow-waiting span{color:#60369a!important}
#page-ongoing .ongoing-kpis-inline .stage-flow-waiting:hover{background:#e4d8fa!important;border-color:#c4adee!important}
#page-ongoing .badge.status-waiting, #page-ongoing .status-waiting,
#page-quality .badge.status-waiting, #page-quality .status-waiting{background:#eee6ff!important;border-color:#d4c1f4!important;color:#60369a!important}
@media (max-width:780px){#page-ongoing .ongoing-kpis-inline{overflow-x:auto!important;grid-template-columns:repeat(9,minmax(58px,1fr)) minmax(105px,1.5fr)!important}}

/* Review dialog: fixed PDF control positions and visible close action */
dialog.kpams-review-dialog {position:relative!important;}
dialog.kpams-review-dialog .review-dialog-close {position:sticky;top:0;float:right;z-index:12;width:32px;height:32px;min-width:32px;padding:0!important;display:grid!important;place-items:center;border:1px solid #c5d2dc;border-radius:7px;background:#f1f5f9;color:#243b53;font-size:23px;line-height:1;cursor:pointer;margin:-8px -8px 3px 8px;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-file-row {display:flex;align-items:center;gap:10px;min-width:0;margin-top:9px;flex-wrap:wrap;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-file-row input[type=file] {max-width:265px;min-width:180px;flex:0 1 265px;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-info {flex:1 1 225px;min-width:0;overflow-wrap:anywhere;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-actions {display:flex!important;align-items:center;justify-content:flex-start;gap:10px;flex-wrap:nowrap;margin-top:10px;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-actions button {flex:0 0 90px;min-width:90px;max-width:110px;text-align:center;white-space:nowrap;padding:7px 8px;}
@media(max-width:440px){dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-actions{gap:5px;}dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-actions button{flex:1 1 0;min-width:0;}}
