/* 프로젝트·할 일: 프로젝트 카드, 칸반 보드, 내 할 일 목록 */
.pj-tabs{margin-right:6px}
.chip .cnt{opacity:.7;font-size:var(--fs-xs)}
.pj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.pj-card{display:grid;gap:10px;align-content:start;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-ctl);padding:16px;min-width:0}
.pj-card:hover{border-color:var(--accent)}
.pj-card-h{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.pj-card-h b{font-size:var(--fs-lg);overflow-wrap:anywhere}
.pj-desc{margin:0;color:var(--muted);font-size:var(--fs-sm);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pj-meta{display:flex;justify-content:space-between;gap:8px;font-size:var(--fs-sm);color:var(--muted)}
.pj-st{font-size:var(--fs-xs);font-weight:600;padding:2px 9px;border-radius:var(--r-pill);white-space:nowrap;vertical-align:middle}
.pj-st.s-진행{background:var(--accent-soft);color:var(--accent)} .pj-st.s-보류{background:var(--warn-soft);color:var(--warn)} .pj-st.s-완료{background:var(--ok-soft);color:var(--ok)}
.page-head h2 .pj-st{font-size:var(--fs-xs);font-weight:600;letter-spacing:0}
.pj-prog{display:flex;align-items:center;gap:10px;font-size:var(--fs-xs);color:var(--muted)}
.pj-bar{flex:1;height:8px;border-radius:var(--r-pill);background:var(--surface-2);overflow:hidden;min-width:60px}
.pj-bar i{display:block;height:100%;background:var(--ok);border-radius:var(--r-pill)}
.pj-due.over{color:var(--danger);font-weight:600} .pj-due.soon{color:var(--warn);font-weight:600}
.pj-back{padding:0;margin-bottom:4px}
.pj-info{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:16px}
.pj-info .pj-prog{flex:1 1 260px;max-width:420px}
.pj-mems{display:flex;flex-wrap:wrap;gap:6px}
.pj-mem{font-size:var(--fs-xs);padding:2px 9px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted)}
.pj-mem.lead{background:var(--accent-soft);color:var(--accent);font-weight:600}
.pj-who{padding:6px 10px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);margin-left:auto}

/* kanban */
.pj-board{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px;align-items:start;overflow-x:auto;padding-bottom:6px}
.pj-col{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-ctl);display:flex;flex-direction:column;min-width:0;max-height:calc(100vh - 220px)}
.pj-col-h{display:flex;justify-content:space-between;align-items:center;padding:10px 12px 6px;font-size:var(--fs-sm)}
.pj-col-h span{font-size:var(--fs-xs);color:var(--muted)}
.pj-col.c-doing .pj-col-h b{color:var(--accent)} .pj-col.c-review .pj-col-h b{color:var(--warn)} .pj-col.c-done .pj-col-h b{color:var(--ok)}
.pj-col-list{display:grid;gap:8px;padding:4px 8px 8px;min-height:60px;overflow-y:auto;align-content:start;flex:1}
.pj-task{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:var(--r-ctl);padding:9px 10px 8px;display:grid;gap:6px;cursor:grab;min-width:0}
.pj-task:hover{border-color:var(--accent)}
.pj-task.p-high{border-left-color:var(--danger)} .pj-task.p-low{border-left-color:var(--off)}
.pj-task.dragging{opacity:.4}
.pj-task.done .pj-t-title{color:var(--muted);text-decoration:line-through}
.pj-t-title{font-size:var(--fs-sm);font-weight:600;overflow-wrap:anywhere}
.pj-t-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:var(--fs-xs);color:var(--muted)}
.pj-t-meta:empty{display:none}
.pj-t-foot{display:flex;justify-content:space-between;align-items:center;gap:6px}
.pj-as{font-size:var(--fs-xs);color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj-as.none{color:var(--muted)}
.pj-pr{font-size:var(--fs-xs);font-weight:700;padding:1px 6px;border-radius:var(--r-xs);background:var(--surface-2);color:var(--muted)}
.pj-pr.p-high{background:var(--danger-soft);color:var(--danger)}
.pj-cm{font-size:var(--fs-xs);color:var(--muted)}
.pj-move{font-size:var(--fs-xs);padding:2px 4px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);color:var(--muted);max-width:84px}
.pj-drop{height:4px;border-radius:var(--r-pill);background:var(--accent)}
.pj-qa{margin:0 8px 8px;padding:7px 9px;border:1px dashed var(--line);border-radius:var(--r-sm);background:transparent;font-size:var(--fs-sm)}
.pj-qa:focus{border-style:solid;background:var(--surface)}
.pj-table select.pj-move{max-width:none}

/* 내 할 일 */
.pm-add{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.pm-add #pm-title{flex:1 1 260px;min-width:0;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface)}
.pm-add #pm-due{padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface)}
.pm-groups{display:grid;gap:14px}
.pm-group.over .phead h2{color:var(--danger)} .pm-group.today .phead h2{color:var(--warn)}
.pm-list{list-style:none;margin:0;padding:4px 0}
.pm-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:6px 16px;border-top:1px solid var(--line)}
.pm-row:first-child{border-top:0}
.pm-row input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent)}
.pm-main{border:0;background:none;text-align:left;display:grid;gap:2px;padding:2px 0;min-width:0}
.pm-t{font-size:var(--fs-md);font-weight:500;overflow-wrap:anywhere}
.pm-row.done .pm-t{color:var(--muted);text-decoration:line-through}
.pm-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:var(--fs-xs);color:var(--muted)}
.pm-proj{font-weight:600;color:var(--accent)} .pm-proj.me{color:var(--muted)}
.pm-st{padding:0 6px;border-radius:var(--r-xs);background:var(--surface-2)}
.pm-row .pj-due{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}
.pj-c-body{margin-top:2px;white-space:pre-wrap;overflow-wrap:anywhere}

@media (max-width:760px){
  .pj-board{grid-template-columns:repeat(4,minmax(240px,82vw));scroll-snap-type:x mandatory}
  .pj-col{scroll-snap-align:start;max-height:none}
  .pj-who{margin-left:0;width:100%}
  .pm-row{grid-template-columns:auto minmax(0,1fr);padding:8px 12px}
  .pm-row .pj-due{grid-column:2}
}

/* 할 일 창: 넓은 설명, 첨부, 담당자 여러 명 */
.tk-dlg .tk-desc{min-height:520px;resize:vertical;line-height:1.6}
.tk-as{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:44px}
.tk-as-opt{border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:var(--r-pill);padding:6px 12px;font-size:var(--fs-sm);font-weight:600;cursor:pointer}
.tk-as-opt small{font-weight:500;color:var(--muted)}
.tk-as-opt.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.tk-as-opt:disabled{cursor:default;opacity:.8}
.tk-filebox{border:1px dashed var(--line);border-radius:var(--r-ctl);padding:10px 12px;transition:border-color .15s,background .15s}
.tk-filebox.drag{border-color:var(--accent);background:var(--accent-soft)}
.tk-file-h{display:flex;align-items:center;gap:10px}
.tk-file-h>span:first-child{font-size:var(--fs-sm);font-weight:600}
.tk-file-h .btn{margin-left:auto}
.tk-files{margin:8px 0 0}
.tk-nofile{list-style:none;padding:6px 0}

/* 수행 조직 띠 */
.pj-team{flex:1 1 auto;min-width:0}
.pj-team-h{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:var(--fs-sm)}
.pj-team-h .btn{margin-left:auto}
.pj-mem small{color:var(--muted);font-weight:500}
.tm-table td,.tm-table th{padding:6px 8px}
.tm-table .tm-duty{width:120px}

/* 공유 (노션 공유 메뉴처럼) */
.pj-share-btn{display:inline-flex;align-items:center;gap:8px}
.pj-avs{display:inline-flex}
.pj-avs i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:11px;font-weight:700;background:var(--accent-soft);color:var(--accent);border:2px solid var(--surface);margin-left:-6px}
.pj-avs i:first-child{margin-left:0}
.pj-share-all{color:var(--ok);font-weight:700}
.pj-ro-badge{align-self:center;font-size:var(--fs-xs);font-weight:700;padding:4px 10px;border-radius:var(--r-pill);background:var(--warn-soft);color:var(--warn)}
.sh-add{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap}
.sh-add-u{flex:1 1 220px;min-width:0}
.sh-dept,.sh-addlv{height:40px}
.sh-list{display:grid;gap:2px;margin-top:8px}
.sh-sec{font-size:var(--fs-xs);font-weight:700;color:var(--muted);margin:12px 0 4px}
.sh-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-radius:var(--r-ctl)}
.sh-row:hover{background:var(--surface-2,rgba(0,0,0,.03))}
.sh-general{background:var(--surface-2,rgba(0,0,0,.03));padding:10px}
.sh-ic{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:var(--fs-lg);background:var(--surface);border:1px solid var(--line);flex:none}
.sh-ic.av{font-size:var(--fs-xs);font-weight:700;color:var(--accent);background:var(--accent-soft);border-color:transparent}
.sh-who{display:grid;flex:1 1 auto;min-width:0}
.sh-who b{font-size:var(--fs-sm)}
.sh-lv{font-size:var(--fs-sm)}
.sh-row select{height:32px;font-size:var(--fs-sm)}
.sh-empty{padding:6px 4px}

/* 프로젝트 자료 카드 (노션 사업 페이지 위쪽처럼) */
.pr-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin:14px 0 4px}
.pr-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--card-line,var(--line));border-radius:var(--r-card,14px);box-shadow:var(--card-shadow,none);padding:12px 14px;min-height:118px;text-align:left}
.pr-card-h{display:flex;align-items:center;gap:6px;padding:6px 8px;margin:-4px -6px 8px;border-radius:var(--r-ctl);background:var(--surface-2,rgba(0,0,0,.04))}
.pr-card-h b{font-size:var(--fs-sm)}
.pr-cnt{font-size:var(--fs-xs);color:var(--muted);font-weight:600}
.pr-card-acts{margin-left:auto;display:inline-flex;gap:2px;opacity:0;transition:opacity .15s}
.pr-card:hover .pr-card-acts,.pr-card:focus-within .pr-card-acts{opacity:1}
.pr-card-acts button{border:0;background:none;width:24px;height:24px;border-radius:var(--r-sm);color:var(--muted);font-size:var(--fs-md);cursor:pointer}
.pr-card-acts button:hover{background:var(--surface);color:var(--accent)}
.pr-items{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.pr-items li{display:flex;align-items:center;gap:8px;padding:5px 4px;border-radius:var(--r-sm);font-size:var(--fs-sm);min-width:0}
.pr-items li:hover{background:var(--surface-2,rgba(0,0,0,.04))}
.pr-items a{color:var(--fg);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}
.pr-items a:hover{text-decoration:underline}
.pr-ver{font-size:var(--fs-xs);color:var(--muted)}
.pr-edit{border:0;background:none;color:var(--muted);opacity:0;cursor:pointer;padding:0 4px}
.pr-items li:hover .pr-edit{opacity:1}
.pr-empty{color:var(--muted);font-size:var(--fs-sm);padding:6px 4px}
.pr-addcard{align-items:center;justify-content:center;border-style:dashed;color:var(--muted);font-weight:600;cursor:pointer;box-shadow:none}
.pr-addcard:hover{color:var(--accent);border-color:var(--accent)}
.pr-ic{flex:none;width:20px;height:20px;border-radius:5px;display:grid;place-items:center;font-size:10.5px;font-weight:800;color:#fff;background:var(--off,#999)}
.pr-ic.fg{background:#a259ff}.pr-ic.gd{background:#4285f4}.pr-ic.gs{background:#0f9d58}.pr-ic.gp{background:#f4b400}.pr-ic.gf{background:#7248b9}
.pr-ic.gdr{background:#1fa463}.pr-ic.nt{background:#191919}.pr-ic.gh{background:#24292f}.pr-ic.mr{background:#ffd02f;color:#050038}.pr-ic.nas{background:#0b5cad}
.pr-ic.web{background:var(--accent-soft);color:var(--accent)}
.pr-ic.file{background:#8a94a6;font-size:8.5px}.pr-ic.file.pdf{background:#e5484d}.pr-ic.file.xls{background:#1f9d55}.pr-ic.file.doc{background:#2f6fde}.pr-ic.file.ppt{background:#e8710a}.pr-ic.file.img{background:#9b59b6}
.pj-teamline{border:0;background:none;padding:0;font-size:var(--fs-sm);color:var(--fg);cursor:pointer;text-align:left}
.pj-teamline:hover .hint:last-child{color:var(--accent)}

/* 공유 파일 표 */
.pr-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:4px 0 12px}
.pr-tools .grow{flex:1 1 260px;min-width:0}
.pr-tools select{height:40px}
.pr-tools .btn:last-child{margin-left:auto}
.pr-table td{vertical-align:middle}
.pr-tname{min-width:240px}
.pr-tname>a{font-weight:600;color:var(--fg);text-decoration:none;margin-left:8px}
.pr-tname>a:hover{text-decoration:underline}
.pr-tname .pr-ic{display:inline-grid;vertical-align:middle}
.pr-note{margin:2px 0 0 28px;font-size:var(--fs-xs)}
.pr-where a{color:var(--accent);text-decoration:none;font-size:var(--fs-sm)}

/* 사업수행조직도 */
.og-key{display:inline-block;width:10px;height:10px;border-radius:var(--r-xs);background:var(--accent);margin-right:4px;vertical-align:-1px}
.og-chart{padding:22px 20px;margin-bottom:14px;display:flex;flex-direction:column;align-items:center;overflow-x:auto}
.og-top{display:flex;flex-direction:column;align-items:center;gap:8px}
.og-ph-h{font-size:var(--fs-xs);font-weight:700;color:var(--muted)}
.og-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.og-vline{display:block;width:2px;height:22px;background:var(--line);margin:4px 0}
.og-vline.dashed{background:none;border-left:2px dashed var(--line)}
.og-parts{position:relative;display:grid;grid-template-columns:repeat(var(--n),minmax(170px,1fr));gap:14px;width:100%;padding-top:20px}
.og-parts::before{content:"";position:absolute;top:0;left:calc(50% / var(--n));right:calc(50% / var(--n));height:2px;background:var(--line)}
.og-col{position:relative;display:flex;flex-direction:column;gap:8px;align-items:stretch}
.og-col::before{content:"";position:absolute;top:-20px;left:50%;width:2px;height:20px;background:var(--line)}
.og-col-h{text-align:center;font-size:var(--fs-sm);font-weight:700;padding:7px 10px;border-radius:var(--r-ctl);background:var(--accent);color:var(--accent-fg)}
.og-col-h span{margin-left:6px;font-size:var(--fs-xs);opacity:.8}
.og-p{display:grid;gap:1px;text-align:center;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);cursor:pointer;min-width:150px;position:relative}
.og-p:hover{border-color:var(--accent)}
.og-p.linked{box-shadow:inset 3px 0 0 var(--accent)}
.og-p b{font-size:var(--fs-md)}
.og-star{color:var(--star)}
.og-role{font-size:var(--fs-sm);color:var(--accent);font-weight:600}
.og-co,.og-ph{font-size:var(--fs-xs);color:var(--muted)}
.og-lead .og-p{background:var(--accent-soft);border-color:transparent}
.og-client .og-p{border-style:dashed}
.og-table tbody tr{cursor:pointer}
@media (max-width:900px){ .og-parts{grid-template-columns:1fr} .og-parts::before,.og-col::before{display:none} }
.pr-wrap{margin:16px 0 6px}
.pr-wrap-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--fs-md)}
.pr-wrap-acts{margin-left:auto;display:inline-flex;gap:8px;align-items:center}
.pr-wrap .pr-cards{margin-top:10px}

/* 회의록 */
.pr-card-acts.pr-on{opacity:1}
.pr-meet{border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}
.pr-meet .pr-card-h{background:var(--accent-soft)}
.pr-next{display:grid;gap:1px;padding:7px 9px;margin-bottom:6px;border-radius:var(--r-ctl);border:1px solid var(--line);cursor:pointer}
.pr-next:hover{border-color:var(--accent)}
.pr-next small{font-size:var(--fs-xs);font-weight:700;color:var(--accent)}
.pr-next b{font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-next .hint{font-size:var(--fs-xs)}
.pr-ic.mt{font-size:9.5px}
.pr-ic.mt.blue{background:#3b7ddd}.pr-ic.mt.green{background:#2f9e63}.pr-ic.mt.purple{background:#8a4fd8}.pr-ic.mt.orange{background:#e8860a}
.mt-legend{display:inline-flex;gap:10px;font-size:var(--fs-xs);color:var(--muted)}
.mt-legend i{display:inline-block;width:10px;height:10px;border-radius:var(--r-xs);margin-right:4px;vertical-align:-1px}
.mt-cal{padding:14px}
.mt-cal-h{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.mt-cal-h b{font-size:var(--fs-lg);min-width:110px;text-align:center}
.mt-cal-h .btn:last-child{margin-left:auto}
.mt-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.mt-wd{padding:6px 8px;font-size:var(--fs-xs);font-weight:700;color:var(--muted);border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface-2,rgba(0,0,0,.03))}
.mt-wd.sun,.mt-dn.sun{color:var(--danger)} .mt-wd.sat,.mt-dn.sat{color:var(--accent)}
.mt-day{min-height:104px;padding:5px 6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px;min-width:0}
.mt-day.can{cursor:pointer}
.mt-day.can:hover{background:color-mix(in srgb,var(--accent-soft) 40%,transparent)}
.mt-day.out{background:var(--surface-2,rgba(0,0,0,.02))}
.mt-day.out .mt-dn{opacity:.45}
.mt-dn{font-size:var(--fs-sm);font-weight:600;align-self:flex-start;min-width:22px;height:22px;display:grid;place-items:center;border-radius:var(--r-pill)}
.mt-day.today .mt-dn{background:var(--accent);color:var(--accent-fg)}
.mt-ev{display:block;width:100%;text-align:left;border:0;border-radius:var(--r-sm);padding:3px 6px;font-size:var(--fs-xs);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.mt-ev small{font-weight:500;opacity:.8}
.mt-st{font-style:normal;font-size:var(--fs-xs);font-weight:500;opacity:.75;margin-left:4px}
.mt-help{margin-top:8px}
.mt-when{display:grid;grid-template-columns:1.3fr 1fr 1fr 1.2fr 1fr;gap:10px}
.f textarea.mt-body,.mt-body{width:100%;min-height:460px;font:inherit;font-size:var(--fs-md);line-height:1.65;resize:vertical}
.mt-body.ro{border:1px solid var(--line);border-radius:var(--r-ctl);padding:12px;min-height:200px;white-space:pre-wrap}
.mt-attpick{flex:0 1 200px}
.mt-attpick .pk-chips{display:none}
@media (max-width:760px){ .mt-when{grid-template-columns:1fr 1fr} .mt-day{min-height:70px} }
.mt-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.mt-dot.blue{background:#3b7ddd}.mt-dot.green{background:#2f9e63}.mt-dot.purple{background:#8a4fd8}.mt-dot.orange{background:#e8860a}

/* 산출물 */
.pr-deliv{border-color:color-mix(in srgb,var(--ok) 30%,var(--line))}
.pr-deliv .pr-card-h{background:color-mix(in srgb,var(--ok) 10%,transparent)}
.dv-mini{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.dv-mini li{display:grid;grid-template-columns:62px 1fr 34px;align-items:center;gap:8px;font-size:var(--fs-sm);cursor:pointer}
.dv-mini-n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-mini small{color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}
.dv-bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.dv-bar i{display:block;height:100%;background:var(--ok);border-radius:3px}
.dv-table tbody tr{cursor:default}
.dv-table tr.dv-first>td{border-top:2px solid var(--line)}
.dv-table td.dv-ph{width:110px;background:var(--surface-2,rgba(0,0,0,.03));border-right:1px solid var(--line)}
.dv-ph b{display:block;font-size:var(--fs-sm)}
.dv-ph-acts{display:flex;gap:2px;margin-top:6px}
.dv-ph-acts button,.dv-acts button{border:0;background:none;width:24px;height:24px;border-radius:var(--r-sm);color:var(--muted);cursor:pointer;font-size:var(--fs-sm)}
.dv-ph-acts button:hover,.dv-acts button:hover{background:var(--accent-soft);color:var(--accent)}
.dv-name{min-width:170px;font-weight:500}
.dv-name .link{font-weight:500;text-align:left;color:var(--fg)}
.dv-note{color:var(--muted);font-size:var(--fs-sm);white-space:pre-wrap;min-width:120px}
.dv-acts{white-space:nowrap;width:1%}
.dv-table tr.drag>td{background:var(--accent-soft)}

/* ===== 프로젝트 화면 다듬기 (2.6.0) ===== */
.pj-detail{--c-task:#3182f6;--c-deliv:#12a36b;--c-meet:#6b5cf6;--c-team:#f08c00;--c-todo:#8b95a1;--c-doing:#3182f6;--c-review:#f08c00;--c-done:#12a36b}
:root[data-theme="dark"] .pj-detail{--c-task:#5b9dff;--c-deliv:#4fd19a;--c-meet:#a397ff;--c-team:#f2a35e;--c-todo:#808a96;--c-doing:#5b9dff;--c-review:#f2a35e;--c-done:#4fd19a}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .pj-detail{--c-task:#5b9dff;--c-deliv:#4fd19a;--c-meet:#a397ff;--c-team:#f2a35e;--c-todo:#808a96;--c-doing:#5b9dff;--c-review:#f2a35e;--c-done:#4fd19a}}
.pj-detail .page-head{margin-bottom:4px}

/* 요약 타일 */
.pj-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0 6px}
.pj-kpi{--c:var(--accent);display:grid;gap:4px;align-content:start;text-align:left;min-width:0;padding:14px 16px;border:1px solid var(--card-line,var(--line));border-radius:var(--r-card,14px);background:var(--surface);box-shadow:var(--card-shadow,none);cursor:pointer;color:var(--fg);position:relative;overflow:hidden;transition:border-color .15s,transform .15s var(--ease)}
.pj-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c)}
.pj-kpi:hover{border-color:color-mix(in srgb,var(--c) 45%,var(--line));transform:translateY(-1px)}
.pj-kpi.k-task{--c:var(--c-task)} .pj-kpi.k-deliv{--c:var(--c-deliv)} .pj-kpi.k-meet{--c:var(--c-meet)} .pj-kpi.k-team{--c:var(--c-team)}
.pj-kpi-l{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:600;color:var(--muted)}
.pj-kpi-ic{font-style:normal;width:22px;height:22px;border-radius:var(--r-sm);display:grid;place-items:center;font-size:var(--fs-xs);background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--c)}
.pj-kpi b{font-size:var(--fs-xl);font-weight:700;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-kpi.k-meet b,.pj-kpi.k-team b{font-size:var(--fs-lg);padding:2px 0 1px}
.pj-kpi small{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-kbar{height:6px;border-radius:var(--r-pill);background:var(--surface-2);overflow:hidden}
.pj-kbar i{display:block;height:100%;border-radius:var(--r-pill);background:var(--c)}

/* 프로젝트 자료 */
.pj-detail .pr-wrap{margin:18px 0 8px}
.pj-detail .pr-wrap-h>b{font-size:var(--fs-lg)}
.pj-detail .pr-cards{gap:12px}
.pj-detail .pr-card{padding:12px 14px 10px;transition:border-color .15s,box-shadow .15s}
.pj-detail .pr-card:hover{border-color:color-mix(in srgb,var(--accent) 30%,var(--line))}
.pj-detail .pr-card-h{background:none;margin:-2px -4px 8px;padding:2px 4px 8px;border-radius:0;border-bottom:1px solid var(--line)}
.pj-detail .pr-card-h b{display:inline-flex;align-items:center;gap:6px}
.pj-detail .pr-grp .pr-card-h b::before{content:"";width:8px;height:8px;border-radius:var(--r-xs);background:var(--off)}
.pj-detail .pr-cnt{background:var(--surface-2);padding:1px 7px;border-radius:var(--r-pill);font-size:var(--fs-xs)}
.pj-detail .pr-meet{border-color:color-mix(in srgb,var(--c-meet) 35%,var(--card-line,var(--line)));background:linear-gradient(180deg,color-mix(in srgb,var(--c-meet) 6%,var(--surface)),var(--surface) 60%)}
.pj-detail .pr-meet .pr-card-h{background:none;border-bottom-color:color-mix(in srgb,var(--c-meet) 22%,var(--line))}
.pj-detail .pr-meet .pr-cnt{background:color-mix(in srgb,var(--c-meet) 14%,transparent);color:var(--c-meet)}
.pj-detail .pr-next small{color:var(--c-meet)}
.pj-detail .pr-next:hover{border-color:var(--c-meet)}
.pj-detail .pr-deliv{border-color:color-mix(in srgb,var(--c-deliv) 35%,var(--card-line,var(--line)));background:linear-gradient(180deg,color-mix(in srgb,var(--c-deliv) 6%,var(--surface)),var(--surface) 60%)}
.pj-detail .pr-deliv .pr-card-h{background:none;border-bottom-color:color-mix(in srgb,var(--c-deliv) 22%,var(--line))}
.pj-detail .pr-deliv .pr-cnt{background:color-mix(in srgb,var(--c-deliv) 14%,transparent);color:var(--c-deliv)}
.pj-detail .dv-bar{background:var(--surface-2)}
.pj-detail .dv-bar i{background:var(--c-deliv)}
.dv-mini li{padding:1px 2px;border-radius:var(--r-sm)}
.dv-mini li:hover{background:var(--surface-2)}

/* 보기 탭 (밑줄 탭) */
.pj-modebar{display:flex;align-items:flex-end;gap:12px;margin:18px 0 14px;border-bottom:1px solid var(--line)}
.pj-modes{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;flex:1 1 auto;min-width:0}
.pj-modes::-webkit-scrollbar{display:none}
.pj-mode{border:0;background:none;padding:10px 12px 11px;font:inherit;font-size:var(--fs-md);font-weight:600;color:var(--muted);cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:8px 8px 0 0}
.pj-mode:hover{color:var(--fg);background:var(--surface-2)}
.pj-mode[aria-selected="true"]{color:var(--accent);border-bottom-color:var(--accent)}
.pj-mode-c{font-size:var(--fs-xs);font-weight:700;padding:1px 7px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted)}
.pj-mode[aria-selected="true"] .pj-mode-c{background:var(--accent-soft);color:var(--accent)}
.pj-modebar .pj-who{margin:0 0 6px;height:36px}

/* 칸반 */
.pj-detail .pj-col{background:color-mix(in srgb,var(--surface-2) 70%,var(--bg));border-color:transparent;border-top:3px solid var(--cc,var(--c-todo));border-radius:var(--r-card)}
.pj-col.c-todo{--cc:var(--c-todo)} .pj-col.c-doing{--cc:var(--c-doing)} .pj-col.c-review{--cc:var(--c-review)} .pj-col.c-done{--cc:var(--c-done)}
.pj-detail .pj-col-h{padding:11px 12px 8px}
.pj-detail .pj-col-h b{display:inline-flex;align-items:center;gap:7px;color:var(--fg)!important}
.pj-dot{width:8px;height:8px;border-radius:50%;background:var(--cc,var(--c-todo))}
.pj-col-n{font-size:var(--fs-xs);font-weight:700;min-width:22px;text-align:center;padding:1px 7px;border-radius:var(--r-pill);background:var(--surface);color:var(--muted)}
.pj-detail .pj-task{border-radius:var(--r-ctl);border-color:var(--card-line,var(--line));box-shadow:var(--card-shadow,none);transition:border-color .15s,box-shadow .15s}
.pj-detail .pj-task:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:0 4px 14px rgba(25,31,40,.08)}
.pj-detail .pj-qa{background:transparent}

/* 산출물 표 */
.dv-table{table-layout:auto}
.dv-table td{vertical-align:middle}
.dv-table td.dv-ph{vertical-align:top;width:120px;padding-left:14px;position:relative;background:color-mix(in srgb,var(--pc) 6%,var(--surface))}
.dv-table td.dv-ph::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--pc)}
.dv-ph b{color:var(--pc)}
.ph-c0{--pc:#3182f6}.ph-c1{--pc:#6b5cf6}.ph-c2{--pc:#d6336c}.ph-c3{--pc:#f08c00}.ph-c4{--pc:#12a36b}.ph-c5{--pc:#0c8599}
.dv-ph-acts{opacity:.55;transition:opacity .15s}
.dv-ph:hover .dv-ph-acts{opacity:1}
.dv-files{min-width:280px;width:36%}
.dv-fcell{display:flex;align-items:center;gap:10px;min-width:0}
.dv-fcell ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;flex:1 1 auto;min-width:0}
.dv-fcell a{display:flex;align-items:center;gap:7px;color:var(--fg);font-size:var(--fs-sm);text-decoration:none;min-width:0}
.dv-fcell a:hover .dv-fn{color:var(--accent);text-decoration:underline}
.dv-fcell .pr-ic{width:22px;height:18px;font-size:8px}
.dv-fn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.dv-none-t{flex:1 1 auto;font-size:var(--fs-sm);color:var(--muted)}
.dv-up{flex:none;margin-left:auto;background:var(--c-deliv,#12a36b);border-color:var(--c-deliv,#12a36b);color:var(--surface);font-weight:700}
.dv-up:hover{background:color-mix(in srgb,var(--c-deliv,#12a36b) 85%,#000);border-color:transparent;color:var(--surface)}
.dv-table tr.dv-none .dv-name{color:var(--muted)}
.dv-acts button{opacity:.35}
.dv-table tr:hover .dv-acts button{opacity:1}
.dv-table tbody tr:hover>td:not(.dv-ph){background:color-mix(in srgb,var(--surface-2) 55%,transparent)}

@media (max-width:1100px){ .pj-kpis{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:760px){
  .pj-kpis{gap:8px} .pj-kpi{padding:11px 12px} .pj-kpi b{font-size:var(--fs-xl)}
  .pj-modebar{flex-wrap:wrap;border-bottom:0} .pj-modes{border-bottom:1px solid var(--line);width:100%} .pj-modebar .pj-who{width:100%}
}
.pr-ic.file{display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:20px;padding:0 3px;letter-spacing:-.02em}

/* 보기 탭 묶음: 할 일 | 프로젝트 자료 */
.pj-modes{gap:0;align-items:flex-end}
.pj-tgroup{display:flex;flex-direction:column;gap:2px;flex:none}
.pj-tgroup+.pj-tgroup{margin-left:14px;padding-left:14px;position:relative}
.pj-tgroup+.pj-tgroup::before{content:"";position:absolute;left:0;top:4px;bottom:10px;width:1px;background:var(--line)}
.pj-tgroup-l{font-size:var(--fs-xs);font-weight:700;letter-spacing:.02em;color:var(--muted);padding:0 12px;display:flex;align-items:center;gap:5px}
.pj-tgroup-l::before{content:"";width:6px;height:6px;border-radius:var(--r-xs);background:var(--gc)}
.pj-tgroup.g-task{--gc:var(--c-task)} .pj-tgroup.g-res{--gc:var(--c-meet)}
.pj-tgroup.on .pj-tgroup-l{color:var(--fg)}
.pj-tgroup-tabs{display:flex;gap:2px}
.pj-mode-ic{font-style:normal;font-size:var(--fs-sm);line-height:1;opacity:.7}
.pj-mode[aria-selected="true"] .pj-mode-ic{opacity:1}
/* 선택된 탭 밑줄 색: 할 일은 파랑, 자료 탭은 기능 색 */
.pj-mode{--mc:var(--accent)}
.pj-mode.m-meet{--mc:var(--c-meet)} .pj-mode.m-deliv{--mc:var(--c-deliv)} .pj-mode.m-files{--mc:#5f6b7a} .pj-mode.m-org{--mc:var(--c-team)}
:root[data-theme="dark"] .pj-mode.m-files{--mc:#aab3be}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .pj-mode.m-files{--mc:#aab3be}}
.pj-mode[aria-selected="true"]{color:var(--mc);border-bottom-color:var(--mc)}
.pj-mode[aria-selected="true"] .pj-mode-c{background:color-mix(in srgb,var(--mc) 14%,transparent);color:var(--mc)}
.pj-tgroup.g-res .pj-tgroup-tabs{background:color-mix(in srgb,var(--surface-2) 60%,transparent);border-radius:8px 8px 0 0}
@media (max-width:760px){ .pj-tgroup-l{padding:0 8px} .pj-mode{padding:9px 9px 10px} .pj-tgroup+.pj-tgroup{margin-left:8px;padding-left:8px} }

/* 보드·목록 필터 */
.pj-tfbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-4px 0 14px;padding:8px 10px;border:1px solid var(--card-line,var(--line));border-radius:var(--r-card);background:var(--surface)}
.pj-tf-search{flex:1 1 200px;min-width:160px}
.pj-tf-search .search{width:100%;height:34px}
.pj-tfbar .pj-who{margin:0;height:34px}
.pj-tf-sel{display:inline-flex;align-items:center;gap:0;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);height:34px;overflow:hidden}
.pj-tf-sel span{font-size:var(--fs-xs);font-weight:600;color:var(--muted);padding:0 4px 0 10px;white-space:nowrap}
.pj-tf-sel select{border:0;background:transparent;height:100%;padding:0 8px 0 2px;font-size:var(--fs-sm);font-weight:600;color:var(--fg);cursor:pointer}
.pj-tf-sel.on{border-color:var(--accent);background:var(--accent-soft)}
.pj-tf-sel.on span,.pj-tf-sel.on select{color:var(--accent)}
.pj-tf-info{margin-left:auto;font-size:var(--fs-sm);color:var(--muted);white-space:nowrap}
.pj-tf-info .link{font-size:var(--fs-sm);padding:0}
.pj-tf-reset{margin-left:8px;font-weight:700}
.pj-col-sub{font-size:var(--fs-xs);font-weight:600;color:var(--muted);margin-left:2px}
.pj-col-more{margin:0 8px 8px;padding:7px 9px;border:1px dashed var(--line);border-radius:var(--r-sm);background:transparent;font-size:var(--fs-sm);color:var(--muted);cursor:pointer}
.pj-col-more:hover{color:var(--c-done,var(--ok));border-color:var(--c-done,var(--ok))}
@media (max-width:760px){ .pj-tfbar{padding:8px} .pj-tfbar .pj-who{width:auto;flex:1 1 140px} .pj-tf-info{margin-left:0;width:100%} }

/* 공정 관리: WBS · 산출물 테일러링 */
.pj-detail{--c-wbs:#0c8599;--c-tail:#4c6ef5}
:root[data-theme="dark"] .pj-detail{--c-wbs:#3bc9db;--c-tail:#91a7ff}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .pj-detail{--c-wbs:#3bc9db;--c-tail:#91a7ff}}
.pj-kpi.k-wbs{--c:var(--c-wbs)} .pj-kpi.k-wbs.late{--c:var(--danger)}
.pj-kbar{position:relative;overflow:visible}
.pj-kmark{position:absolute;top:-3px;bottom:-3px;width:2px;margin-left:-1px;background:var(--fg);opacity:.55;border-radius:1px}
.pj-tgroup.g-plan{--gc:var(--c-wbs)}
.pj-mode.m-wbs{--mc:var(--c-wbs)} .pj-mode.m-tailor{--mc:var(--c-tail)}
.pj-tgroup.g-plan .pj-tgroup-tabs{background:color-mix(in srgb,var(--c-wbs) 7%,transparent);border-radius:8px 8px 0 0}
.wb-sum{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;padding:10px 14px;margin:-2px 0 10px;border:1px solid color-mix(in srgb,var(--c-wbs) 30%,var(--line));border-radius:var(--r-card);background:color-mix(in srgb,var(--c-wbs) 6%,var(--surface));font-size:var(--fs-sm);color:var(--muted)}
.wb-sum b{color:var(--fg);font-variant-numeric:tabular-nums}
.wb-sum b.acc{color:var(--c-wbs);font-size:var(--fs-lg)}
.wb-sum .wb-late{color:var(--danger);font-weight:700;padding:0}
.wb-sum-acts{margin-left:auto;display:inline-flex;gap:6px;flex-wrap:wrap}
.wb-table{font-size:var(--fs-sm)}
.wb-table th,.wb-table td{padding:6px 8px;white-space:nowrap}
.wb-table td.num{text-align:right}
.wb-table td.neg{color:var(--danger)}
.wb-r.lv0>td{background:color-mix(in srgb,var(--c-wbs) 9%,var(--surface));font-weight:700;border-top:2px solid color-mix(in srgb,var(--c-wbs) 35%,var(--line))}
.wb-r.lv1>td{background:color-mix(in srgb,var(--surface-2) 70%,var(--surface));font-weight:600}
.wb-tg{width:22px;padding-right:0!important}
.wb-tog{border:0;background:none;color:var(--muted);cursor:pointer;width:20px;height:20px;border-radius:var(--r-sm);font-size:var(--fs-xs)}
.wb-tog:hover{background:var(--surface-2);color:var(--fg)}
.wb-kind{font-size:var(--fs-xs);font-weight:700;padding:1px 7px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted)}
.wb-kind.k0{background:var(--c-wbs);color:#fff} .wb-kind.k1{background:color-mix(in srgb,var(--c-wbs) 16%,transparent);color:var(--c-wbs)}
.wb-name{min-width:240px;max-width:380px;white-space:normal!important}
.wb-r.lv1 .wb-nm{padding-left:12px} .wb-r.lv2 .wb-nm{padding-left:26px}
.wb-r.lv2 .wb-sub{padding-left:26px}
.wb-nm .link{color:var(--fg);text-align:left;font-weight:inherit;padding:0}
.wb-dia{color:var(--milestone);margin-right:4px;font-size:11px}
.wb-sub{font-size:var(--fs-xs);white-space:normal}
.wb-dv{max-width:240px;overflow:hidden;text-overflow:ellipsis}
.wb-code{display:inline-block;font-size:var(--fs-xs);font-weight:700;padding:1px 6px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--c-tail,#4c6ef5) 12%,transparent);color:var(--c-tail,#4c6ef5);font-variant-numeric:tabular-nums;white-space:nowrap}
.wb-code.miss{background:var(--warn-soft);color:var(--warn)}
.wb-code.sub{background:var(--surface-2);color:var(--muted)}
.wb-act{width:62px;height:28px;padding:2px 6px;text-align:right;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font:inherit;font-size:var(--fs-sm)}
.wb-act:focus{border-color:var(--c-wbs);outline:none}
.wb-req{max-width:140px;overflow:hidden;text-overflow:ellipsis}
.wb-gc{min-width:260px;width:300px;padding-left:4px!important;padding-right:10px!important}
.wb-g{position:relative;height:16px}
.wb-gh{height:16px;font-size:var(--fs-xs);color:var(--muted);font-weight:600}
.wb-gh span{position:absolute;top:0;white-space:nowrap;padding-left:3px;border-left:1px solid var(--line)}
.wb-g-base{position:absolute;top:-6px;bottom:-6px;width:0;border-left:2px dashed var(--danger);opacity:.6;z-index:1}
.wb-g-bar{position:absolute;top:3px;height:10px;border-radius:3px;background:color-mix(in srgb,var(--c-wbs) 28%,transparent);overflow:hidden}
.wb-g-bar.lv0{top:5px;height:6px;background:color-mix(in srgb,var(--c-wbs) 55%,transparent)}
.wb-g-bar.lv1{top:4px;height:8px;background:color-mix(in srgb,var(--c-wbs) 38%,transparent)}
.wb-g-bar i{display:block;height:100%;background:var(--c-wbs)}
.wb-g-bar.s-지연{background:color-mix(in srgb,var(--danger) 25%,transparent)} .wb-g-bar.s-지연 i{background:var(--danger)}
.wb-g-bar.s-완료 i{background:var(--c-done,var(--ok))}
.wb-g-ms{position:absolute;top:2px;width:11px;height:11px;margin-left:-5px;background:var(--milestone);transform:rotate(45deg);border-radius:2px}
.wb-dates{display:grid;grid-template-columns:1.2fr .8fr 1.2fr 1fr;gap:10px}
.wb-days-in{width:100%}
@media (max-width:760px){ .wb-dates{grid-template-columns:1fr 1fr} .wb-sum-acts{margin-left:0} }
.pi-ta{width:100%;min-height:260px;font-family:ui-monospace,Consolas,monospace;font-size:var(--fs-xs);white-space:pre;overflow:auto}
.pi-cols{font-size:var(--fs-xs);line-height:1.6}
.pi-info{font-weight:600;color:var(--c-wbs,var(--accent))}
.tl-chips{margin-bottom:10px}
.tl-chip.warn[aria-pressed="true"]{background:var(--warn-soft);color:var(--warn);border-color:var(--warn)}
.tl-table{font-size:var(--fs-sm)}
.tl-table th,.tl-table td{padding:6px 8px;white-space:nowrap}
.tl-table td.c{text-align:center}
.tl-name{min-width:180px;white-space:normal!important}
.tl-name .link{color:var(--fg);font-weight:600;text-align:left;padding:0}
.tl-name .hint{font-size:var(--fs-xs)}
.tl-reason{max-width:280px;white-space:normal!important;font-size:var(--fs-xs);color:var(--muted);display:table-cell}
.tl-std{font-size:var(--fs-xs);font-weight:700;padding:1px 7px;border-radius:var(--r-pill)}
.tl-std.req{background:var(--danger-soft);color:var(--danger)} .tl-std.opt{background:var(--surface-2);color:var(--muted)}
.tl-o{color:var(--c-tail)}
.tl-apply{height:28px;font-size:var(--fs-sm);font-weight:700;border-radius:var(--r-pill);padding:0 8px;border:1px solid var(--line);background:var(--surface)}
.tl-apply.a-적용{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.tl-apply.a-통합{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.tl-apply.a-축소{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.tl-apply.a-미적용{background:var(--surface-2);color:var(--muted);border-color:transparent}
.tl-apply.a-none{border-style:dashed;color:var(--muted)}
.tl-r.a-미적용>td{color:var(--muted)}
.tl-r.a-미적용 .tl-name .link{color:var(--muted)}
.tl-chk{font-size:var(--fs-xs);font-weight:700;color:var(--warn)}
.tl-chk.ok{color:var(--muted);font-weight:500}
.tl-g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tl-g4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;align-items:end}
.tl-ck{flex-direction:row!important;align-items:center;gap:6px;height:40px}
@media (max-width:760px){ .tl-g3,.tl-g4{grid-template-columns:1fr 1fr} }
.dv-code{width:1%;white-space:nowrap}
.tl-reason{min-width:260px;max-width:360px}
.tl-empty{display:grid;justify-items:center;gap:8px;text-align:center;padding:40px 16px}
.tl-empty p{margin:0;max-width:520px}

/* WBS 표에서 바로 입력 */
.wb-help{margin:-4px 0 10px;font-size:var(--fs-sm)}
.wb-table.wb-edit td{padding:3px 4px}
.wb-table.wb-edit td.wb-gc{padding-left:6px!important}
.wc{width:100%;min-width:0;height:30px;padding:3px 6px;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;font:inherit;font-size:var(--fs-sm);color:var(--fg)}
.wc:hover{border-color:var(--line);background:var(--surface)}
.wc:focus{outline:none;border-color:var(--c-wbs);background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--c-wbs) 18%,transparent)}
.wc::placeholder{color:color-mix(in srgb,var(--muted) 70%,transparent)}
.wc-name{min-width:220px} .wb-r.lv0 .wc-name,.wb-r.lv1 .wc-name{font-weight:700}
.wc-code{width:78px;text-transform:uppercase;font-weight:700;color:var(--c-tail);font-size:var(--fs-xs)} .wc-code.miss{color:var(--warn)}
.wc-dname{min-width:140px} .wc-owner{width:96px} .wc-pred{width:120px}
.wc-start,.wc-end{width:128px;font-size:var(--fs-sm)} .wc-days{width:56px;text-align:right} .wc-actual{width:62px;text-align:right}
.wc-round{width:60px} .wc-req{width:110px} .wc-note{min-width:140px}
select.wc-kind{width:86px;font-size:var(--fs-xs);font-weight:700;padding:2px 4px;cursor:pointer}
select.wc-kind.k0{color:var(--c-wbs)} select.wc-kind.k1{color:color-mix(in srgb,var(--c-wbs) 80%,var(--fg))}
.wb-dvn{display:inline-block;max-width:180px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;padding:0 6px;font-size:var(--fs-sm)}
.wb-acts{white-space:nowrap}
.wb-del{border:0;background:none;width:24px;height:24px;border-radius:var(--r-sm);color:var(--muted);cursor:pointer;opacity:.35}
.wb-table tr:hover .wb-del{opacity:1}
.wb-del:hover{background:var(--danger-soft);color:var(--danger)}
.wb-del.armed{opacity:1;width:auto;padding:0 8px;background:var(--danger);color:var(--on-solid);font-size:var(--fs-xs);font-weight:700}
.wb-draft>td{background:color-mix(in srgb,var(--c-wbs) 4%,var(--surface));border-top:1px dashed color-mix(in srgb,var(--c-wbs) 35%,var(--line))}
.wb-draft.ins>td{background:color-mix(in srgb,var(--c-wbs) 9%,var(--surface))}
.wb-draft .wc{border-color:color-mix(in srgb,var(--line) 70%,transparent)}
.wb-plus{color:var(--c-wbs);font-weight:800;padding-left:6px}

/* WBS 단계: 공정 > 작업·마일스톤 > 상세작업 */
.wb-r.lv1>td{background:transparent;font-weight:inherit}
.wb-r.lv1.par>td{background:color-mix(in srgb,var(--surface-2) 70%,var(--surface))}
.wb-r.lv1 .wc-name{font-weight:600} .wb-r.lv2 .wc-name{font-weight:400}
.wb-r.lv1 .wb-nm{padding-left:12px} .wb-r.lv2 .wb-nm{padding-left:30px;position:relative}
.wb-r.lv2 .wb-nm::before{content:"└";position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:11px}
.wb-kind.k2{background:var(--surface-2);color:var(--muted)}
select.wc-kind.k2{color:var(--muted);font-weight:600}
.wb-g-bar.lv2{top:4px;height:8px;background:color-mix(in srgb,var(--c-wbs) 22%,transparent)}
.wb-edit .wb-nm{display:flex;align-items:center;gap:4px}
.wb-edit .wb-nm .wc-name{flex:1 1 auto}
.wb-acts button:disabled{opacity:.15;cursor:default;background:none}
.wb-out .wc{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,transparent)}
.wb-r.lv0 .wc-start,.wb-r.lv0 .wc-end,.wb-r.lv0 .wc-days{font-weight:700}
/* WBS 줄 버튼(+ ↑ ↓ ×): 표를 옆으로 밀어도 오른쪽 끝에 붙어 보이게 */
.wb-table.wb-edit th:last-child,.wb-table.wb-edit td.wb-acts{position:sticky;right:0;z-index:2;background:var(--surface);box-shadow:-6px 0 8px -6px rgba(25,31,40,.18)}
.wb-table.wb-edit .wb-r.lv0>td.wb-acts{background:color-mix(in srgb,var(--c-wbs) 9%,var(--surface))}
.wb-table.wb-edit .wb-r.lv1.par>td.wb-acts{background:color-mix(in srgb,var(--surface-2) 70%,var(--surface))}
.wb-table.wb-edit .wb-draft>td.wb-acts{background:color-mix(in srgb,var(--c-wbs) 4%,var(--surface))}
.wb-table.wb-edit .wb-acts button{opacity:.7}

/* ===== WBS: 주차 달력 · 고정 열 · 큰 화면 ===== */
.wb-table .wb-gc{min-width:0;width:auto;padding:0!important;vertical-align:middle}
.wb-table thead th.wb-gc{vertical-align:bottom}
.wb-cal{position:relative}
.wb-calh{font-size:var(--fs-xs);color:var(--muted);font-weight:600;user-select:none}
.wb-calh>div{display:flex;white-space:nowrap}
.wb-calh span{flex:none;overflow:hidden;text-overflow:clip;text-align:center;border-left:1px solid var(--line);padding:2px 0;font-variant-numeric:tabular-nums}
.wb-calm span{font-weight:700;color:var(--fg);text-align:left;padding-left:6px;border-bottom:1px solid var(--line)}
.wb-calw span{border-bottom:1px solid var(--line)}
.wb-calh span.now{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}
.wb-calr{height:34px;background-image:linear-gradient(to right,var(--line) 1px,transparent 1px);background-repeat:repeat-x}
.wb-calr .wb-g-bar{top:50%;transform:translateY(-50%);height:12px;border-radius:4px}
.wb-calr .wb-g-bar.lv0{height:8px;border-radius:2px}
.wb-calr .wb-g-bar.lv1{height:11px}
.wb-calr .wb-g-ms{top:50%;margin-top:-6px;margin-left:-6px;width:12px;height:12px}
.wb-cal-now{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--danger) 6%,transparent)}
.wb-cal-base{position:absolute;top:0;bottom:0;width:0;border-left:2px dashed color-mix(in srgb,var(--danger) 70%,transparent);z-index:1}
/* 왼쪽 고정 열: 접기 · 구분 · 작업명 */
.wb-table .wb-s{position:sticky;z-index:2;background:var(--surface)}
.wb-table thead th.wb-s{z-index:4}
.wb-table .s1{left:0;width:26px;min-width:26px;max-width:26px}
.wb-table .s2{left:26px;width:96px;min-width:96px;max-width:96px}
.wb-table .s3{left:122px;width:260px;min-width:260px;max-width:260px;box-shadow:6px 0 8px -6px rgba(25,31,40,.18)}
.wb-table .s3 .wc-name{min-width:0}
.wb-table:not(.wb-edit) .s3 .wb-nmt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.wb-table .wb-draft>.wb-s{background:color-mix(in srgb,var(--c-wbs) 4%,var(--surface))}
.wb-table .wb-draft.ins>.wb-s{background:color-mix(in srgb,var(--c-wbs) 9%,var(--surface))}
.wb-table:not(.wb-edit) .s2 .wb-kind{white-space:nowrap}
/* 열 보기 */
.wb-cols{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:-4px 0 10px}
.wb-cols-l{font-size:var(--fs-xs);font-weight:700;color:var(--muted);margin:0 2px 0 6px}
.wb-cols-l:first-child{margin-left:0}
.wb-colchip{font-size:var(--fs-sm);padding:4px 10px}
.wb-colchip[aria-pressed="false"]{opacity:.6;text-decoration:line-through}
/* .wb-seg 모양은 styles.css 의 공통 세그먼트 버튼 (선택된 칸만 WBS 색) */
.wb-fullbtn{font-weight:700}
.wb-fullbtn.on{background:var(--fg);color:var(--surface);border-color:var(--fg)}
/* 큰 화면: WBS만 화면 가득, 머리줄·왼쪽 열 고정 */
body.wb-noscroll{overflow:hidden}
.wb-wrap.wb-full{position:fixed;inset:0;z-index:900;background:var(--bg);padding:12px 16px 12px;display:flex;flex-direction:column;overflow:hidden}
.wb-full .wb-sum{margin-top:0}
.wb-full-t{font-size:var(--fs-lg);color:var(--fg);margin-right:6px}
.wb-full .pr-tools{margin-bottom:8px}
.wb-full .wb-panel{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.wb-full .wb-panel>.tscroll{flex:1 1 auto;min-height:0;overflow:auto}
.wb-full .wb-table thead th{position:sticky;top:0;z-index:3;background:var(--surface);box-shadow:inset 0 -1px 0 var(--line)}
.wb-full .wb-table thead th.wb-s,.wb-full .wb-table thead th:last-child{z-index:5}
/* 고정 열 배경: 옆으로 밀린 칸이 비쳐 보이지 않게 줄 종류별로 불투명하게 */
.wb-table .wb-r>td.wb-s{background:var(--surface)}
.wb-table .wb-r.lv0>td.wb-s{background:color-mix(in srgb,var(--c-wbs) 9%,var(--surface))}
.wb-table .wb-r.lv1.par>td.wb-s{background:color-mix(in srgb,var(--surface-2) 70%,var(--surface))}
.wb-table .wb-r.wb-draft>td.wb-s{background:color-mix(in srgb,var(--c-wbs) 4%,var(--surface))}
.wb-table .wb-r.wb-draft.ins>td.wb-s{background:color-mix(in srgb,var(--c-wbs) 9%,var(--surface))}
.wb-basefix{color:var(--warn)} .wb-basefix b{color:var(--warn)}
.wb-base-reset{margin-left:6px;font-weight:700;padding:0}
