/* LinkBiz 자동차 PLM+QMS 프로토타입 — mylink-Design 토큰 계승 (plm_app 디자인 정합) */
*{box-sizing:border-box;}
html,body{margin:0;padding:0;height:100%;}
body{font-family:'Pretendard','맑은 고딕','Malgun Gothic',-apple-system,sans-serif;font-size:14px;color:#303030;background:#eef0f4;-webkit-font-smoothing:antialiased;}
#root{height:100%;}
.loading{display:flex;align-items:center;justify-content:center;height:100vh;color:#909090;}
.mono{font-variant-numeric:tabular-nums;} .muted{color:#909090;} .sm{font-size:12px;}
.flex{display:flex;align-items:center;gap:8px;} .between{justify-content:space-between;}

/* ===== 전체 레이아웃 ===== */
.linkbiz-root{height:100vh;display:flex;flex-direction:column;overflow:hidden;}
.topbar{height:54px;background:#3b3f4c;display:flex;align-items:center;flex-shrink:0;color:#cfd2da;padding:0 10px;}
.topbar .ham{background:none;border:0;color:#cfd2da;font-size:20px;cursor:pointer;padding:0 12px;}
.topmenu{flex:1;display:flex;gap:1px;overflow-x:auto;}
.tm-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:62px;padding:7px 9px;cursor:pointer;border-radius:6px;color:#c4c8d2;border:0;background:none;font-family:inherit;}
.tm-item:hover{background:rgba(255,255,255,.08);color:#fff;}
.tm-item.on{background:#5629ee;color:#fff;}
.tm-item .tm-ic{font-size:15px;} .tm-item .tm-tx{font-size:11px;white-space:nowrap;}
.top-right{display:flex;gap:4px;padding:0 8px;align-items:center;}
.top-right .ti{position:relative;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;font-size:15px;color:#cfd2da;border:0;background:none;}
.top-right .ti:hover{background:rgba(255,255,255,.1);}
.top-right .bell .dot{position:absolute;top:2px;right:2px;background:#f10f3a;color:#fff;font-size:9px;font-style:normal;border-radius:8px;padding:0 4px;}
.top-search{display:flex;align-items:center;background:rgba(255,255,255,.09);border-radius:16px;padding:4px 12px;margin-right:6px;}
.top-search .ri{color:#8a8f9c;font-size:15px;margin-right:6px;}
.top-search input{background:none;border:0;outline:none;color:#e8eaf0;font-size:12.5px;width:170px;font-family:inherit;}
.top-search input::placeholder{color:#8a8f9c;}
.crumb .home{font-size:14px;}
.body{flex:1;display:flex;min-height:0;}

/* ===== LNB ===== */
.lnb{width:236px;flex-shrink:0;background:#fff;border-right:1px solid #e3e6ec;display:flex;flex-direction:column;}
.lnb.hide{display:none;}
.lnb-brand{padding:18px 18px 12px;}
.lnb-brand .logo{font-size:24px;font-weight:800;color:#1b2a6b;letter-spacing:-.3px;}
.lnb-brand .logo::first-letter{color:#5629ee;}
.lnb-brand .sub{font-size:11px;color:#909090;margin-top:2px;}
.lnb-user{display:flex;align-items:center;gap:10px;padding:10px 18px 14px;border-bottom:1px solid #eef0f3;margin-bottom:6px;}
.lnb-user .ava{width:38px;height:38px;border-radius:50%;background:#5629ee;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;}
.lnb-user .uinfo b{display:block;font-size:14px;color:#101010;} .lnb-user .uinfo span{font-size:11.5px;color:#909090;}
.lnb-nav{flex:1;overflow:auto;padding:4px 0;}
.tree-row{display:flex;align-items:center;gap:5px;width:100%;border:0;background:none;font-family:inherit;text-align:left;cursor:pointer;color:#404652;font-size:13.5px;padding:9px 16px;}
.tree-row.group{font-size:14px;font-weight:700;color:#1b2a6b;padding:10px 16px 8px;cursor:default;border-bottom:1px solid #f0f2f5;}
.tree-row.leaf{padding-left:38px;color:#5b6270;}
.tree-row.leaf:hover{background:#f6f5ff;color:#5629ee;}
.tree-row.leaf.on{background:#efecfd;color:#5629ee;font-weight:700;border-right:3px solid #5629ee;}
.lnb-foot{padding:12px 18px;font-size:10.5px;color:#a0a4ad;border-top:1px solid #eef0f3;line-height:1.5;}

/* ===== content ===== */
.content{flex:1;min-width:0;display:flex;flex-direction:column;background:#f0f2f5;}
.content-head{height:42px;background:#fff;border-bottom:1px solid #e3e6ec;display:flex;align-items:center;justify-content:space-between;padding:0 22px;flex-shrink:0;}
.crumb{font-size:12.5px;color:#606060;display:flex;align-items:center;gap:7px;}
.crumb .home{color:#909090;} .crumb i{color:#c4c8d0;font-style:normal;} .crumb b{color:#101010;}
.mode-badge{font-size:11px;color:#5629ee;background:#ece7fb;padding:3px 10px;border-radius:11px;margin-right:8px;}
.help-ico{width:22px;height:22px;border-radius:50%;background:#5629ee;color:#fff;font-weight:700;font-size:13px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;user-select:none;border:0;}
.help-ico:hover{background:#3d1bb8;}
.scroll{flex:1;overflow:auto;padding:16px 22px 36px;}
.dev-content{max-width:1320px;}
.page-title{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.page-title h2{margin:0;font-size:21px;font-weight:700;color:#101010;}

/* ===== stitArea ===== */
.stitArea{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.stit03{margin:0;font-size:15px;font-weight:700;color:#101010;position:relative;padding-left:11px;}
.stit03:before{content:'';position:absolute;left:0;top:3px;bottom:3px;width:3px;border-radius:2px;background:#5629ee;}
.stitL .cnt{font-size:13px;color:#606060;display:inline-flex;align-items:center;gap:8px;} .stitL .cnt b{color:#5629ee;}
.stitR{display:flex;align-items:center;gap:8px;}

/* ===== 버튼 ===== */
.Button{border:1px solid #c9ccd4;background:#fff;color:#404040;border-radius:6px;padding:7px 13px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;line-height:1.1;}
.Button:hover{border-color:#9aa0ad;}
.Button:disabled{opacity:.45;cursor:not-allowed;}
.Button.info{background:#5629ee;border-color:#5629ee;color:#fff;} .Button.info:hover{background:#4a22d4;}
.Button.info.line{background:#fff;color:#5629ee;border-color:#5629ee;} .Button.info.line:hover{background:#f3f0ff;}
.Button.danger{background:#fff;color:#e00e36;border-color:#f2b4c0;} .Button.danger:hover{background:#fdf0f3;}
.Button.small{padding:4px 9px;font-size:12px;border-radius:5px;}
.seg{display:inline-flex;gap:4px;}
.sub-tit{font-size:12.5px;font-weight:600;color:#5b6270;margin:10px 0 6px;}
.chip-wrap{display:flex;flex-wrap:wrap;gap:6px;}
.Label-color.small{height:18px;padding:0 6px;font-size:11px;}

/* ===== 폼/입력 ===== */
.com-searchbox{background:#f7f8fa;border:1px solid #e6e9ef;border-radius:8px;padding:8px 12px;margin-bottom:10px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.Textinput{border:1px solid #c9ccd4;border-radius:6px;padding:6px 9px;font-size:13px;font-family:inherit;background:#fff;color:#303030;}
.Textinput:focus{outline:2px solid #d9cffb;border-color:#5629ee;}
.Divselect select{border:1px solid #c9ccd4;border-radius:6px;padding:6px 26px 6px 9px;font-size:13px;font-family:inherit;background:#fff;color:#303030;cursor:pointer;}
.wid100p{width:100%;}
.fld label{display:block;font-size:12px;color:#5b6270;font-weight:600;margin-bottom:4px;} .fld .req{color:#f10f3a;font-style:normal;margin-left:3px;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;}

/* ===== 카드/KPI ===== */
.card{background:#fff;border:1px solid #e3e6ec;border-radius:10px;padding:14px 16px;margin-bottom:14px;min-width:0;overflow:hidden;}
.col2{display:grid;grid-template-columns:1fr 1fr;gap:14px;} .col2>*{min-width:0;}
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px;}
.kpi{background:#fff;border:1px solid #e3e6ec;border-radius:10px;padding:14px 16px;cursor:pointer;}
.kpi:hover{border-color:#c8bdf5;}
.kpi .k-tit{font-size:12.5px;color:#5b6270;font-weight:600;display:flex;justify-content:space-between;}
.kpi .k-val{font-size:26px;font-weight:800;color:#101010;margin-top:6px;}
.kpi .k-val small{font-size:12px;color:#909090;font-weight:500;margin-left:4px;}
.kpi.warn .k-val{color:#e00e36;}
.track-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px;}
.track-card{flex:1 1 200px;background:#f6f5ff;border:1px solid #e3ddfb;border-radius:9px;padding:12px 14px;}
.track-card b{color:#5629ee;} .track-card span{display:block;color:#909090;font-size:12px;margin-top:4px;}

/* ===== 그리드 ===== */
.com-grid{margin-top:8px;}
.jqx-grid{border:1px solid #e0e3e9;border-top:2px solid #5629ee;border-radius:0 0 4px 4px;background:#fff;overflow:hidden;}
.proto-row{display:flex;border-bottom:1px solid #eef0f3;} .proto-row:last-child{border-bottom:none;}
.proto-cell{flex-shrink:0;padding:8px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;font-size:13px;border-right:1px solid #f0f1f4;}
.proto-cell.flex1{flex:1;border-right:none;} .proto-cell.tcenter{justify-content:center;text-align:center;}
.jqx-widget-header{background:#f4f5f8;} .jqx-widget-header .proto-cell{color:#5b6270;font-weight:600;font-size:12.5px;border-right:1px solid #e7e9ee;}
.proto-row.clk{cursor:pointer;} .proto-row.clk:hover{background:#f6f5ff;} .proto-row.sel{background:#efecfd;}
.grid-empty{padding:34px 20px;text-align:center;color:#909090;font-size:13px;}
.grid-empty .Button{margin-top:10px;}

/* ===== 배지 ===== */
.Label-color{display:inline-flex;align-items:center;justify-content:center;border-radius:5px;padding:0 8px;height:22px;font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;cursor:pointer;border:0;font-family:inherit;}
.bdg-red{background:#fae2e7;color:#e00e36;}
.bdg-orange{background:#ffe3cf;color:#ff6a00;}
.bdg-green{background:#e9f7ec;color:#1a9e34;}
.bdg-blue{background:#e3edff;color:#2563eb;}
.bdg-purple{background:#ece7fb;color:#5629ee;}
.bdg-gray{background:#eef0f3;color:#5b6270;}

/* ===== 모달 ===== */
.modal-bg{position:fixed;inset:0;background:rgba(16,18,30,.42);display:flex;align-items:center;justify-content:center;z-index:100;}
.modal{background:#fff;border-radius:12px;width:560px;max-width:94vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 16px 48px rgba(0,0,0,.25);}
.modal-h{padding:15px 20px;border-bottom:1px solid #eef0f3;display:flex;align-items:center;justify-content:space-between;}
.modal-h b{font-size:16px;color:#101010;} .modal-h .x{border:0;background:none;font-size:22px;color:#909090;cursor:pointer;line-height:1;}
.modal-b{padding:18px 20px;overflow:auto;}
.modal-f{padding:13px 20px;border-top:1px solid #eef0f3;display:flex;justify-content:flex-end;gap:8px;}

/* ===== Drawer (상세/도움말) ===== */
.drawer-bg{position:fixed;inset:0;background:rgba(16,18,30,.25);z-index:90;}
.drawer{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:92vw;background:#fff;box-shadow:-8px 0 32px rgba(0,0,0,.18);z-index:95;display:flex;flex-direction:column;}
.drawer-h{padding:16px 20px;border-bottom:1px solid #eef0f3;display:flex;align-items:center;justify-content:space-between;}
.drawer-h b{font-size:16px;color:#101010;} .drawer-h .x{border:0;background:none;font-size:22px;color:#909090;cursor:pointer;line-height:1;}
.drawer-b{padding:16px 20px;overflow:auto;flex:1;}
.dtl-table{width:100%;border-collapse:collapse;font-size:13px;}
.dtl-table th{background:#f7f8fa;color:#5b6270;font-weight:600;text-align:left;padding:7px 10px;border:1px solid #eceef2;white-space:nowrap;font-size:12.5px;width:110px;}
.dtl-table td{padding:7px 10px;border:1px solid #eceef2;word-break:break-all;}
.help-sec{margin-bottom:14px;}
.help-sec b{display:block;font-size:13px;color:#5629ee;margin-bottom:4px;}
.help-sec p{margin:0;font-size:13px;color:#404652;line-height:1.65;}
.help-purpose{background:#f6f5ff;border:1px solid #e3ddfb;border-radius:8px;padding:10px 13px;font-size:13px;color:#404652;line-height:1.6;margin-bottom:14px;}

/* ===== 안내 박스 ===== */
.guide-box{background:#fff8e6;border:1px solid #ffe39e;color:#8a6400;font-size:12.5px;border-radius:8px;padding:10px 13px;margin-top:12px;line-height:1.6;}
.guide-box.danger{background:#fdeceb;border-color:#ffc9bf;color:#b3261e;}
.guide-box.info{background:#f0f4ff;border-color:#c8d8fb;color:#2b4a9b;}

/* ===== 토스트 ===== */
.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,20px);background:#23272f;color:#fff;padding:11px 22px;border-radius:24px;font-size:13.5px;font-weight:600;opacity:0;transition:.3s;z-index:200;box-shadow:0 8px 24px rgba(0,0,0,.3);pointer-events:none;}
.toast.on{opacity:1;transform:translate(-50%,0);}
.toast.err{background:#b3261e;}

/* ===== 로그인 ===== */
.login-wrap{height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#3b3f4c 0%,#23263166 60%),#eef0f4;}
.login-card{background:#fff;border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.25);width:380px;padding:36px 34px 30px;}
.login-card .logo{font-size:30px;font-weight:800;color:#1b2a6b;} .login-card .logo::first-letter{color:#5629ee;}
.login-card .sub{color:#909090;font-size:13px;margin:4px 0 22px;}
.login-card .fld{margin-bottom:12px;}
.login-card .Textinput{width:100%;padding:10px 12px;font-size:14px;}
.login-card .Button{width:100%;justify-content:center;padding:11px;font-size:14.5px;margin-top:6px;}
.login-err{color:#e00e36;font-size:12.5px;margin-top:10px;min-height:16px;}
.login-demo{margin-top:16px;font-size:11.5px;color:#a0a4ad;border-top:1px solid #eef0f3;padding-top:12px;line-height:1.7;}

/* ===== Gantt (Phase② PMS) ===== */
.gantt{position:relative;padding:6px 0 2px;}
.gantt-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid #f2f3f6;cursor:pointer;}
.gantt-row:hover{background:#f6f5ff;}
.gantt-row:last-child{border-bottom:none;}
.gantt-label{width:190px;flex-shrink:0;font-size:13px;font-weight:600;color:#404652;padding-left:6px;}
.gantt-track{flex:1;position:relative;height:26px;background:#f4f5f8;border-radius:6px;overflow:hidden;}
.gantt-bar{position:absolute;top:3px;bottom:3px;background:#e3ddfb;border:1px solid #c8bdf5;border-radius:5px;overflow:hidden;display:flex;align-items:center;}
.gantt-bar.run{background:#e3edff;border-color:#a9c4f5;}
.gantt-bar.done{background:#e9f7ec;border-color:#a9dcb5;}
.gantt-bar.late{background:#fae2e7;border-color:#f0a9b8;}
.gantt-fill{position:absolute;left:0;top:0;bottom:0;background:#5629ee33;}
.gantt-bar.done .gantt-fill{background:#1a9e3433;}
.gantt-bar.late .gantt-fill{background:#e00e3633;}
.gantt-pct{position:relative;font-size:10.5px;font-weight:700;color:#404652;padding-left:6px;}
.gantt-st{width:70px;flex-shrink:0;text-align:center;}
.gantt-now{position:absolute;top:0;bottom:0;width:2px;background:#f10f3a;z-index:2;opacity:.55;}

/* ===== PDM 도면 뷰어 목업 · BOM 트리 (Phase③-B) ===== */
.dwg-viewer{position:relative;background:#f4f5f8;border:1px solid #e0e3e9;border-radius:8px;height:220px;overflow:hidden;display:flex;align-items:center;justify-content:center;}
.dwg-watermark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;color:rgba(86,41,238,.10);transform:rotate(-18deg);pointer-events:none;letter-spacing:2px;white-space:nowrap;}
.dwg-page{text-align:center;color:#5b6270;background:#fff;border:1px solid #e0e3e9;border-radius:6px;padding:26px 40px;box-shadow:0 4px 14px rgba(0,0,0,.06);}
.dwg-page .ri{font-size:34px;color:#5629ee;display:block;margin-bottom:8px;}
.dwg-page div{font-weight:700;color:#303030;margin-bottom:4px;}
.bom-tree{border:1px solid #eef0f3;border-radius:8px;padding:6px 0;background:#fff;}
.bom-row{padding:7px 14px;border-bottom:1px solid #f4f5f8;font-size:13px;display:flex;align-items:center;gap:6px;}
.bom-row:last-child{border-bottom:none;}
.bom-row:hover{background:#f6f5ff;}

/* ===== 생산·원가 목업 (Phase⑥) ===== */
.mes-chart{display:flex;flex-direction:column;gap:7px;padding:4px 0;}
.mes-day{display:flex;align-items:center;gap:10px;}
.mes-date{width:44px;flex-shrink:0;font-size:11.5px;color:#5b6270;font-variant-numeric:tabular-nums;}
.mes-bars{flex:1;display:flex;flex-direction:column;gap:2px;}
.mes-bar{height:9px;border-radius:4px;min-width:2px;}
.mes-bar.plan{background:#d9dce3;}
.mes-bar.actual{background:#5629ee;}
.mes-bar.actual.under{background:#ff6a00;}
.mes-val{width:110px;flex-shrink:0;font-size:11px;color:#909090;text-align:right;font-variant-numeric:tabular-nums;}
.qcell{padding:4px 8px;font-size:12.5px;}
.Textinput.tright{text-align:right;}
.proto-cell.mono{font-variant-numeric:tabular-nums;}

/* ===== 검사 시료×항목 측정 매트릭스 (기능심화① QMS) ===== */
.matrix-wrap{overflow-x:auto;margin:10px 0;border:1px solid #e7e9ee;border-radius:8px;}
.ins-matrix{border-collapse:collapse;font-size:12.5px;width:100%;min-width:520px;}
.ins-matrix th,.ins-matrix td{border:1px solid #eceef2;padding:6px 8px;text-align:center;white-space:nowrap;}
.ins-matrix th{background:#f4f5f8;color:#5b6270;font-weight:600;font-size:12px;}
.ins-matrix td:nth-child(1),.ins-matrix td:nth-child(2),.ins-matrix td:nth-child(3){text-align:left;}
.ins-matrix td.ok{background:#eafaf0;}
.ins-matrix td.ng{background:#fdecef;color:#d9364c;font-weight:700;}
.ins-in{width:76px;padding:3px 5px;border:1px solid #d5d8e0;border-radius:5px;font-size:12.5px;text-align:center;font-variant-numeric:tabular-nums;}
select.ins-in{width:84px;}
.matrix-foot{margin:10px 0 2px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.report-doc{font-size:13px;} .report-doc h3{letter-spacing:6px;}

/* 요구사항 Trace Matrix */
.req-matrix{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;}
.req-cell{border:1px solid #e7e9ee;border-radius:8px;padding:8px;background:#fafbfc;}
.req-cell.on{border-color:#bfe3cf;background:#f2fbf6;}
.req-cell-h{font-size:12px;color:#5b6270;font-weight:600;margin-bottom:4px;}
.req-cell-i{font-size:12px;display:flex;justify-content:space-between;align-items:center;padding:2px 0;}
.req-cell-e{color:#c8ccd4;font-size:12px;}
.req-x{border:none;background:none;color:#d9364c;cursor:pointer;font-size:13px;}
/* Lot 계보 */
.lot-geneal{display:flex;flex-direction:column;gap:3px;margin:6px 0;}
.lot-node{font-size:13px;padding:3px 0;}
.lot-node.cur{font-weight:700;background:#f6f5ff;border-radius:6px;padding:4px 8px;}

/* WBS 7유형 트리 */
.wbs-tree{border-collapse:collapse;font-size:12.5px;width:100%;min-width:720px;}
.wbs-tree th,.wbs-tree td{border:1px solid #eceef2;padding:6px 8px;white-space:nowrap;}
.wbs-tree th{background:#f4f5f8;color:#5b6270;font-weight:600;font-size:12px;text-align:left;}
.wbs-tree tr.clk{cursor:pointer;} .wbs-tree tr.clk:hover td{background:#f6f5ff;}
.wbs-tree td.tcenter{text-align:center;} .wbs-tree td.mono{font-variant-numeric:tabular-nums;color:#5b6270;}
.wbs-bar{display:inline-block;width:60px;height:8px;border-radius:4px;background:#e3e6ec;overflow:hidden;vertical-align:middle;margin-right:5px;}
.wbs-bar i{display:block;height:100%;background:#5629ee;}

/* Automotive Control Tower — 리스크 밴드 + Top Risk */
.ct-band{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:12px;}
.ct-cell{background:#fff;border:1px solid #e7e9ee;border-radius:10px;padding:10px 8px;text-align:center;cursor:pointer;transition:.15s;}
.ct-cell:hover{box-shadow:0 4px 14px rgba(0,0,0,.08);}
.ct-cell.on{border-color:#ffcaca;background:#fff6f6;}
.ct-cell .ct-v{font-size:22px;font-weight:800;color:#9aa0ab;}
.ct-cell.on .ct-v{color:#d9364c;}
.ct-cell .ct-t{font-size:11.5px;color:#5b6270;margin-top:2px;}
.ct-risks{display:flex;flex-direction:column;gap:6px;}
.ct-risk{padding:8px 10px;border-radius:8px;background:#f7f8fa;font-size:13px;cursor:pointer;border-left:3px solid #d9dce3;}
.ct-risk:hover{background:#f0f1f4;}
.ct-risk.high{border-left-color:#d9364c;} .ct-risk.mid{border-left-color:#ff8a00;}

/* 특별특성 전개 스트립 */
.sc-thread{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.sc-node{padding:6px 12px;border-radius:16px;background:#eef0f4;color:#9aa0ab;font-size:12.5px;font-weight:600;}
.sc-node.on{background:#5629ee;color:#fff;}
.sc-arrow{color:#c8ccd4;font-weight:700;}

/* 4M 대책 진행 4단계 인디케이터 */
.fourm-prog{display:inline-flex;gap:3px;}
.fourm-prog i{width:18px;height:18px;line-height:18px;border-radius:50%;font-size:10px;font-style:normal;background:#e3e6ec;color:#9aa0ab;text-align:center;}
.fourm-prog i.on{background:#1f9d55;color:#fff;}

/* ===== 알림 패널 ===== */
.noti-pop{position:fixed;top:58px;right:14px;width:360px;max-height:70vh;background:#fff;border:1px solid #e3e6ec;border-radius:12px;box-shadow:0 14px 40px rgba(0,0,0,.18);z-index:96;display:flex;flex-direction:column;}
.noti-pop .np-h{padding:12px 16px;border-bottom:1px solid #eef0f3;display:flex;justify-content:space-between;align-items:center;font-weight:700;}
.noti-pop .np-b{overflow:auto;}
.noti-item{padding:11px 16px;border-bottom:1px solid #f4f5f8;cursor:pointer;}
.noti-item:hover{background:#f6f5ff;}
.noti-item b{display:block;font-size:13px;color:#101010;}
.noti-item.unread b:before{content:'●';color:#5629ee;font-size:8px;margin-right:6px;vertical-align:2px;}
.noti-item span{font-size:12px;color:#909090;}

/* ============ Dashboard Suite 2.0 (PRD v3.1) ============ */
.ds-toolbar{display:flex;gap:8px;justify-content:flex-end;margin:-4px 0 12px;}
.ds-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px;}
.ds-kpi{background:#fff;border:1px solid #e3e6ec;border-radius:11px;padding:14px 16px;border-top:3px solid #d9dce3;}
.ds-kpi .ds-k-val{font-size:26px;font-weight:800;color:#25272e;line-height:1.1;}
.ds-kpi .ds-k-val small{font-size:13px;font-weight:600;color:#8a90a0;margin-left:3px;}
.ds-kpi .ds-k-lab{font-size:12.5px;color:#5b6270;margin-top:4px;}
.ds-kpi .ds-k-sub{font-size:11.5px;color:#9aa0ab;margin-top:2px;}
.ds-kpi.tone-high{border-top-color:#d9364c;} .ds-kpi.tone-high .ds-k-val{color:#d9364c;}
.ds-kpi.tone-mid{border-top-color:#ff8a00;} .ds-kpi.tone-mid .ds-k-val{color:#c9760b;}
.ds-kpi.tone-ok{border-top-color:#1f9d55;}
/* Heatmap */
.ds-heat-wrap{overflow-x:auto;}
.ds-heat{border-collapse:collapse;font-size:12px;width:100%;}
.ds-heat th{background:#f4f5f8;color:#5b6270;font-weight:600;padding:6px 8px;border:1px solid #eceef2;white-space:nowrap;}
.ds-heat th.rowh,.ds-heat td.rowh{text-align:left;position:sticky;left:0;background:#f4f5f8;max-width:160px;overflow:hidden;text-overflow:ellipsis;}
.ds-heat td.heat{text-align:center;border:1px solid #fff;font-weight:700;color:#fff;min-width:38px;}
.ds-heat td.heat.none{background:#eef0f4;color:#c2c7d0;}
.ds-heat td.heat.low{background:#ffe6b3;color:#8a6d1f;}
.ds-heat td.heat.mid{background:#ff9d3c;}
.ds-heat td.heat.high{background:#d9364c;}
/* Horizontal bars */
.ds-bars{display:flex;flex-direction:column;gap:8px;}
.ds-bar-row{display:flex;align-items:center;gap:10px;}
.ds-bar-lab{width:150px;flex:0 0 150px;font-size:12.5px;color:#4a4f5c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ds-bar-track{flex:1;height:16px;background:#eef0f4;border-radius:8px;overflow:hidden;}
.ds-bar-fill{height:100%;border-radius:8px;background:#5629ee;transition:width .3s;}
.ds-bar-fill.tone-high{background:#d9364c;} .ds-bar-fill.tone-mid{background:#ff8a00;} .ds-bar-fill.tone-ok{background:#1f9d55;}
.ds-bar-val{width:150px;flex:0 0 150px;text-align:right;font-size:12px;color:#5b6270;font-weight:600;}
/* Kanban */
.ds-kanban{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;}
.ds-kan-col{flex:1 1 0;min-width:150px;background:#f7f8fa;border:1px solid #e7e9ee;border-radius:10px;}
.ds-kan-head{padding:8px 10px;font-size:12.5px;font-weight:700;color:#4a4f5c;border-bottom:1px solid #e7e9ee;}
.ds-kan-cnt{background:#5629ee;color:#fff;border-radius:9px;padding:0 7px;font-size:11px;margin-left:4px;}
.ds-kan-body{padding:8px;display:flex;flex-direction:column;gap:7px;min-height:40px;}
.ds-kan-card{background:#fff;border:1px solid #e3e6ec;border-radius:8px;padding:8px 10px;cursor:pointer;transition:.12s;}
.ds-kan-card:hover{box-shadow:0 3px 10px rgba(0,0,0,.08);border-color:#c9bffa;}
.ds-kan-no{font-size:11px;color:#5629ee;font-weight:700;}
.ds-kan-tit{font-size:12.5px;color:#25272e;margin-top:2px;}
.ds-kan-meta{font-size:11px;color:#9aa0ab;margin-top:3px;}
.ds-kan-empty{color:#c2c7d0;font-size:12px;text-align:center;padding:8px;}
/* Chips */
.ds-chips{display:flex;flex-wrap:wrap;gap:6px;}
.ds-chip{background:#fff6f6;border:1px solid #ffcaca;color:#d9364c;border-radius:6px;padding:3px 9px;font-size:12px;}
/* Presentation Mode */
.present-bg{position:fixed;inset:0;background:rgba(20,18,40,.72);backdrop-filter:blur(3px);z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;}
.present{width:min(1100px,96vw);max-height:92vh;overflow:auto;background:linear-gradient(160deg,#241b52,#3a2a86);color:#fff;border-radius:18px;padding:28px 32px;box-shadow:0 20px 60px rgba(0,0,0,.5);}
.pm-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;}
.pm-title{font-size:26px;font-weight:800;}
.pm-sub{opacity:.8;font-size:14px;margin-top:4px;}
.pm-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;}
.pm-kpi{background:rgba(255,255,255,.1);border-radius:12px;padding:16px;text-align:center;}
.pm-kpi .pm-v{font-size:32px;font-weight:800;}
.pm-kpi .pm-l{font-size:12.5px;opacity:.85;margin-top:4px;}
.pm-kpi.tone-high{background:rgba(217,54,76,.35);} .pm-kpi.tone-mid{background:rgba(255,138,0,.3);}
.pm-two{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.pm-box{background:rgba(255,255,255,.08);border-radius:12px;padding:16px;}
.pm-bt{font-size:15px;font-weight:700;margin-bottom:10px;}
.pm-risk{font-size:13px;padding:7px 10px;border-radius:8px;background:rgba(255,255,255,.07);margin-bottom:6px;border-left:3px solid #ff8a00;}
.pm-risk.high{border-left-color:#ff5b72;}
.pm-risk b{color:#ffd6dc;margin-right:5px;}
.pm-score{display:flex;justify-content:space-between;align-items:center;padding:6px 2px;font-size:13.5px;border-bottom:1px solid rgba(255,255,255,.1);}
.pm-score b{font-size:18px;} .pm-score b.hi{color:#ff8095;} .pm-score b.mid{color:#ffbf66;} .pm-score b.ok{color:#7be0a3;}
@media(max-width:860px){.pm-kpis{grid-template-columns:repeat(2,1fr);}.pm-two{grid-template-columns:1fr;}}

/* ============ Search & Knowledge Center (PRD v3.1 §6) ============ */
.srch-summary{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:10px;}
.srch-list{padding:6px;}
.srch-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;cursor:pointer;border-bottom:1px solid #f0f1f4;}
.srch-row:hover{background:#f6f5ff;}
.srch-row:last-child{border-bottom:0;}
.srch-body{flex:1;min-width:0;}
.srch-tit{font-size:13.5px;color:#25272e;font-weight:600;}
.srch-tit .srch-st{font-size:11px;color:#8a90a0;font-weight:500;margin-left:6px;}
.srch-snip{font-size:12px;color:#7a808c;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.srch-row mark{background:#fff3b0;color:#7a5b00;border-radius:2px;padding:0 1px;}
.srch-go{color:#c2c7d0;}
.srch-row:hover .srch-go{color:#5629ee;}
.af-types{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.af-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#5b6270;background:#f4f5f8;border:1px solid #e3e6ec;border-radius:15px;padding:3px 10px;cursor:pointer;}
.af-chip.on{background:#efeaff;border-color:#c9bffa;color:#5629ee;font-weight:600;}
.af-chip input{margin:0;}

/* ============ Report Center (PRD v3.1 §5) ============ */
.rpt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin-bottom:14px;}
.rpt-card{background:#fff;border:1px solid #e3e6ec;border-radius:11px;padding:16px;display:flex;flex-direction:column;gap:6px;}
.rpt-card .rpt-out{font-size:11px;color:#5629ee;background:#efeaff;align-self:flex-start;border-radius:6px;padding:2px 8px;}
.rpt-card .rpt-tit{font-size:14.5px;font-weight:700;color:#25272e;}
.rpt-card .rpt-desc{font-size:12px;color:#7a808c;flex:1;line-height:1.5;}
.rpt-card .Button{align-self:flex-start;margin-top:4px;}
.rpt-actions{display:flex;gap:8px;justify-content:flex-end;margin-bottom:12px;}
.report-doc{background:#fff;border:1px solid #e3e6ec;border-radius:12px;padding:36px 44px;max-width:900px;margin:0 auto;box-shadow:0 2px 10px rgba(0,0,0,.05);}
.rpt-head{border-bottom:3px solid #5629ee;padding-bottom:14px;margin-bottom:22px;}
.rpt-head .rpt-brand{font-size:12px;color:#5629ee;font-weight:700;letter-spacing:.5px;}
.rpt-head h1{font-size:24px;margin:6px 0 6px;color:#1a1c22;}
.rpt-head .rpt-meta{font-size:12px;color:#8a90a0;}
.rpt-sec{margin-bottom:22px;}
.rpt-sec h2{font-size:15.5px;color:#5629ee;border-left:3px solid #5629ee;padding-left:9px;margin:0 0 10px;}
.rpt-table{width:100%;border-collapse:collapse;font-size:13px;}
.rpt-table th,.rpt-table td{border:1px solid #e3e6ec;padding:7px 10px;text-align:left;vertical-align:top;}
.rpt-table thead th{background:#f4f5f8;color:#4a4f5c;font-weight:600;}
.rpt-table.kv th{background:#f7f8fa;color:#5b6270;width:150px;white-space:nowrap;}
.rpt-note{font-size:12px;color:#8a90a0;margin-top:6px;}
.rpt-foot{margin-top:28px;padding-top:12px;border-top:1px solid #eceef2;font-size:11px;color:#9aa0ab;text-align:center;}
@media print{
  .topbar,.lnb,.no-print,.help-ico,.drawer-bg,.modal-bg{display:none!important;}
  .main,.content,body{margin:0!important;padding:0!important;background:#fff!important;}
  .report-doc{border:0;box-shadow:none;max-width:100%;padding:0;}
  .rpt-table th,.rpt-table td{border-color:#bbb;}
}

/* ============ AI Copilot 2.0 (PRD v3.1 §7) ============ */
.cop-list{display:flex;flex-direction:column;gap:6px;}
.cop-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;cursor:pointer;background:#f7f8fa;border-left:3px solid #d9dce3;}
.cop-item:hover{background:#f0eefe;}
.cop-prio{flex:0 0 34px;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:#fff;background:#9aa0ab;}
.cop-prio.tone-high{background:#d9364c;} .cop-prio.tone-mid{background:#ff8a00;} .cop-prio.tone-ok{background:#1f9d55;}
.cop-body{flex:1;min-width:0;}
.cop-tit{font-size:13.5px;color:#25272e;font-weight:600;}
.cop-reason{font-size:12px;color:#7a808c;margin-top:2px;}
.cop-answer{background:#f6f5ff;border:1px solid #e3ddfb;border-radius:10px;padding:12px 14px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
.cop-ans-txt{font-size:13.5px;color:#2a2450;line-height:1.6;flex:1;}
.cop-ans-txt .ri{color:#5629ee;}
.cop-conf{font-size:11px;color:#8a90a0;white-space:nowrap;}
.cop-src-tit{font-size:12px;color:#5b6270;font-weight:700;margin:12px 0 6px;}
.cop-recos{margin:4px 0 8px;padding-left:20px;font-size:13px;color:#4a4f5c;}
.cop-recos li{margin:3px 0;}
.cop-brief{display:flex;gap:14px;align-items:center;margin-bottom:8px;}
.cop-brief-score{flex:0 0 auto;font-size:34px;font-weight:800;color:#9aa0ab;}
.cop-brief-score small{font-size:14px;font-weight:600;color:#b5bac4;}
.cop-brief-score.tone-high{color:#d9364c;} .cop-brief-score.tone-mid{color:#c9760b;} .cop-brief-score.tone-ok{color:#1f9d55;}
.cop-brief-txt{font-size:13px;color:#3a3f4c;line-height:1.6;}
.cop-draft-tit{font-size:13px;font-weight:700;color:#5629ee;margin:8px 0 6px;}
.cop-draft-ta{width:100%;min-height:150px;font-family:'Consolas',monospace;font-size:12.5px;border:1px solid #e3e6ec;border-radius:8px;padding:10px;resize:vertical;color:#2a2c33;background:#fbfbfd;}
.cop-sub{font-size:12px;color:#8a90a0;font-weight:600;margin-bottom:6px;}

/* ============ PMS Advanced (PRD v3.1 §8) ============ */
.cp-total{font-size:13px;color:#4a4f5c;margin-bottom:8px;}
.cp-total b{color:#5629ee;font-size:16px;}
.cp-path{display:flex;flex-wrap:wrap;align-items:center;gap:6px;}
.cp-node{background:#efeaff;border:1px solid #d3cbf9;color:#4a22d4;border-radius:8px;padding:5px 10px;font-size:12.5px;font-weight:600;}
.cp-node small{color:#8a80c0;font-weight:400;}
.cp-arrow{color:#b9bdc9;}
.bc-sum{font-size:13px;color:#4a4f5c;margin-bottom:8px;} .bc-sum .tone-h{color:#d9364c;font-weight:700;}
.ms-line{display:flex;flex-direction:column;gap:0;position:relative;padding-left:8px;}
.ms-item{display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:center;padding:10px 0 10px 20px;border-left:2px solid #e3e6ec;position:relative;}
.ms-item .ms-dot{position:absolute;left:-7px;top:16px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid #5629ee;}
.ms-item.done .ms-dot{background:#1f9d55;border-color:#1f9d55;}
.ms-date{font-size:12.5px;color:#8a90a0;font-weight:600;}
.ms-name{font-size:13.5px;color:#25272e;}

/* ============ PMS P1 — Calendar · Risk · Meeting (PRD v3.1 §8) ============ */
.cal-nav{display:flex;align-items:center;gap:6px;margin-left:auto;}
.cal-ym{font-weight:700;color:#25272e;min-width:78px;text-align:center;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.cal-dow{text-align:center;font-size:12px;font-weight:700;color:#8a90a0;padding:4px 0;}
.cal-dow:first-child{color:#d9364c;} .cal-dow:last-child{color:#2b7fe0;}
.cal-cell{min-height:96px;border:1px solid #eceef2;border-radius:8px;padding:4px 5px;background:#fff;overflow:hidden;}
.cal-cell.empty{background:#fafbfc;border-style:dashed;}
.cal-cell.today{border-color:#5629ee;box-shadow:inset 0 0 0 1px #5629ee;}
.cal-day{font-size:12px;font-weight:700;color:#5b6270;margin-bottom:3px;}
.cal-cell.today .cal-day{color:#5629ee;}
.cal-ev{font-size:10.5px;background:#eef0ff;color:#4a22d4;border-radius:4px;padding:1px 4px;margin-bottom:2px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cal-ev b{font-weight:700;}
.cal-ev.cal-ev-warn{background:#fff2e3;color:#c9760b;} .cal-ev.cal-ev-ok{background:#e7f7ee;color:#1f9d55;}
.cal-more{font-size:10px;color:#9aa0ab;}
.ta{width:100%;min-height:70px;border:1px solid #e3e6ec;border-radius:8px;padding:8px;font-size:13px;font-family:inherit;resize:vertical;}
.mtg-card .mtg-min{font-size:13px;color:#3a3f4c;white-space:pre-wrap;background:#f7f8fa;border-radius:8px;padding:10px;margin-top:6px;}
.mtg-card .mtg-dec{font-size:13px;color:#25272e;background:#f6f5ff;border-left:3px solid #5629ee;border-radius:0 8px 8px 0;padding:8px 10px;margin-top:6px;}
@media(max-width:720px){.cal-cell{min-height:64px;}.cal-ev{font-size:9px;}}

/* Report Template — 워터마크 */
.report-doc.has-wm{position:relative;overflow:hidden;}
.report-doc.has-wm::before{content:attr(data-wm);position:absolute;top:45%;left:50%;transform:translate(-50%,-50%) rotate(-30deg);font-size:72px;font-weight:800;color:rgba(217,54,76,.08);white-space:nowrap;pointer-events:none;z-index:0;}
.report-doc.has-wm>*{position:relative;z-index:1;}
@media print{.report-doc.has-wm::before{color:rgba(217,54,76,.12);}}

/* AI Simulation Assistant */
.cop-sim-head{font-size:13.5px;color:#25272e;background:#f6f5ff;border-radius:8px;padding:10px 12px;margin-bottom:6px;}
.cop-sim-head b{color:#5629ee;}

/* 문서함(DMS) */
.dms-text{white-space:pre-wrap;font-size:12.5px;color:#3a3f4c;background:#f7f8fa;border:1px solid #eceef2;border-radius:8px;padding:12px;max-height:340px;overflow:auto;line-height:1.6;}

/* AI 자연어 Workflow 생성 */
.wf-phase{margin:8px 0;border-left:3px solid #5629ee;padding-left:10px;}
.wf-pname{font-size:13px;font-weight:700;color:#25272e;margin-bottom:4px;}
.wf-task{display:flex;justify-content:space-between;font-size:12.5px;color:#4a4f5c;padding:3px 0;border-bottom:1px dashed #eceef2;}
.wf-task .wf-meta{color:#8a90a0;font-size:11.5px;white-space:nowrap;}
