/* 제안프로젝트: 현황 숫자 · 도구줄 · 정렬 가능한 표, 그리고 상세(드래프트) 화면 */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pp-none{color:var(--off)}

/* 현황 숫자 */
.pp-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0 4px}
.pp-kpi{display:grid;gap:2px;align-content:start;text-align:left;padding:16px 18px;background:var(--surface);border:1px solid var(--card-line);border-radius:var(--r-card);box-shadow:var(--card-shadow)}
.pp-kpi span{font-size:var(--fs-sm);font-weight:600;color:var(--muted)}
.pp-kpi b{font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.02em;line-height:1.3}
.pp-kpi small{font-size:var(--fs-xs);color:var(--muted)}
.pp-kpi.hot b{color:var(--danger)}
.pp-kpi.ok b{color:var(--ok)}

/* 도구줄 */
.pp-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:16px 0 10px}
.pp-tools .grow{flex:1 1 260px;min-width:0}
.pp-sel{padding:9px 32px 9px 12px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);min-width:120px}
.pp-cnt{margin-left:6px;font-size:var(--fs-xs);font-weight:600;opacity:.7}
.chips+.pp-table-card{margin-top:12px}

/* 표 */
.pp-table-card{overflow:hidden}
.pp-scroll{max-height:calc(100vh - 150px);overflow:auto}
.pp-table{font-size:var(--fs-sm)}
.pp-table thead th{position:sticky;top:0;z-index:1;padding:0;background:color-mix(in srgb,var(--surface-2) 70%,var(--surface))}
.pp-table th button{display:flex;align-items:center;gap:4px;width:100%;border:0;background:none;padding:11px 12px;font-size:var(--fs-xs);font-weight:600;color:var(--muted);white-space:nowrap;text-align:left}
.pp-table th button:hover{color:var(--fg)}
.pp-table th.on button{color:var(--fg)}
.pp-table th.num button{justify-content:flex-end}
.pp-arrow{font-style:normal;font-size:11px;opacity:.35}
.pp-table th.on .pp-arrow{opacity:1;color:var(--accent)}
.pp-table td{padding:13px 12px;vertical-align:middle}
.pp-table td:first-child,.pp-table th:first-child button{padding-left:20px}
.pp-table td.num{text-align:right;font-weight:600}
.pp-table tbody tr:hover td{background:color-mix(in srgb,var(--accent-soft) 45%,var(--surface))}
.pp-table tr.pp-dim td{color:var(--muted)}
.pp-table tr.pp-dim .pp-t b{font-weight:600}
.pp-c-title{min-width:300px;max-width:440px;white-space:normal!important}
.pp-c-year{width:1%}
.pp-year{display:inline-block;font-size:var(--fs-sm);font-weight:700;padding:3px 9px;border-radius:var(--r-sm);background:var(--surface-2);color:var(--fg)}
.pp-t{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pp-t b{font-weight:700;font-size:var(--fs-md);line-height:1.4;color:var(--fg)}
.pp-sub{margin-top:2px;font-size:var(--fs-sm);color:var(--muted)}
.pp-sub .mono{font-size:var(--fs-xs)}
.pp-c-act{width:1%;text-align:right;padding-right:16px!important}
.pp-go{opacity:.65}
.pp-table tr:hover .pp-go{opacity:1;background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}
.pp-sub-at{display:flex;align-items:center;gap:6px}
.pp-foot{padding:10px 4px 0;text-align:right}

/* 상태 점 표시, 마감 D-day, 담당자 */
.pp-st{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:600;white-space:nowrap}
.pp-st i{width:8px;height:8px;border-radius:50%;background:var(--off)}
.pp-st.blue i{background:var(--accent)} .pp-st.green i{background:var(--ok)} .pp-st.orange i{background:var(--warn)}
.pp-dd{font-size:var(--fs-xs);font-weight:700;padding:1px 7px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted);white-space:nowrap}
.pp-dd.soon{background:var(--warn-soft);color:var(--warn)}
.pp-dd.hot{background:var(--danger);color:var(--on-solid)}
.pp-dd.past{background:none;color:var(--off);padding:0}
.pp-owner{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.pp-owner i{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:var(--fs-xs);font-weight:700;background:var(--accent-soft);color:var(--side-active-fg)}

/* 상세 */
.pp-back{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px}
.pp-back .acts{display:flex;gap:6px}
.pp-hero{padding:24px 26px 22px}
.pp-hero-k{font-size:var(--fs-sm);color:var(--muted)}
.pp-hero h2{font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.02em;margin:4px 0 10px}
.pp-hero-tags{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* 기본 정보 칸도 아래 요약 타일(.pp-sumt)과 같은 모양: 따로 떨어진 카드, 같은 테두리·모서리·여백 */
.pp-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:20px}
.pp-fact{display:grid;gap:3px;align-content:start;padding:12px 14px;background:var(--surface-2);border:1px solid transparent;border-radius:var(--r-ctl);min-width:0}
.pp-fact span{font-size:var(--fs-xs);color:var(--muted);font-weight:600}
.pp-fact b{font-size:var(--fs-lg);font-weight:700;overflow-wrap:anywhere}
.pp-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px;margin-top:16px;align-items:start}
.pp-col{display:grid;gap:16px}
.pp-sec{padding:18px 20px}
.pp-sec h3{font-size:var(--fs-lg);font-weight:700;margin-bottom:12px}
.pp-sec-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.pp-memo{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--bg);line-height:1.65;resize:vertical}
.pp-memo:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--surface)}
.pp-memo[readonly]{background:var(--surface-2)}
.pp-memo-act{display:flex;justify-content:flex-end;margin-top:10px}

.pp-meta{margin-top:14px}
.pp-reflink{margin-left:auto;font-size:var(--fs-sm);font-weight:600;color:var(--accent);text-decoration:none}

/* 요약 타일 (진행률) */
.pp-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}
.pp-sumt{display:grid;gap:3px;align-content:start;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);min-width:0}
.pp-sumt[onclick],.pp-sumt:not(:first-child):hover{cursor:pointer}
.pp-sumt:not(:first-child):hover{border-color:var(--accent)}
.pp-sumt span{font-size:var(--fs-xs);font-weight:600;color:var(--muted)}
.pp-sumt b{font-size:var(--fs-lg);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-sumt small{font-size:var(--fs-xs);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-sumt .pp-dd{justify-self:start}
.pp-bar{height:6px;border-radius:var(--r-pill);background:var(--surface-2);overflow:hidden;min-width:60px}
.pp-bar i{display:block;height:100%;border-radius:var(--r-pill);background:var(--accent);transition:width .3s}

/* 탭 */
.pp-tabs{display:flex;gap:2px;margin:20px 0 14px;border-bottom:1px solid var(--line);overflow-x:auto}
.pp-tab{border:0;background:none;padding:10px 14px;font-size:var(--fs-md);font-weight:600;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.pp-tab:hover{color:var(--fg)}
.pp-tab[aria-selected="true"]{color:var(--accent);border-bottom-color:var(--accent)}
.pp-ptools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.pp-ptools .acts{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap}
.pp-ptools>.btn:last-child{margin-left:auto}
.pp-prog{display:flex;align-items:center;gap:10px}
.pp-prog .pp-bar{width:160px}
.pp-legend{display:flex;gap:10px;flex-wrap:wrap;font-size:var(--fs-sm);color:var(--muted)}
.pp-empty-acts{display:flex;gap:8px;justify-content:center;padding:0 0 30px}
.pp-help{margin:10px 2px 0}

/* 바로 고치는 표 */
.pp-wt{overflow:hidden}
.pp-grid-t{table-layout:auto;font-size:var(--fs-sm)}
.pp-grid-t th{background:color-mix(in srgb,var(--surface-2) 70%,var(--surface));font-size:var(--fs-xs);padding:9px 8px}
.pp-grid-t td{padding:3px 4px;white-space:nowrap}
.pp-grid-t td:first-child,.pp-grid-t th:first-child{padding-left:12px}
.pp-grid-t tbody tr{cursor:default}
.pp-grid-t tbody tr:hover td{background:color-mix(in srgb,var(--accent-soft) 35%,var(--surface))}
.pp-grid-t th.num,.pp-grid-t td.num{text-align:right}
.pp-grid-t tfoot td{padding:10px 8px;font-weight:700;background:var(--surface-2);border-bottom:0}
.pp-cell{width:100%;min-width:0;border:1px solid transparent;background:transparent;border-radius:var(--r-sm);padding:6px 8px;font-size:var(--fs-sm)}
.pp-cell:hover{border-color:var(--line);background:var(--surface)}
.pp-cell:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--surface)}
.pp-cell.num{text-align:right;font-variant-numeric:tabular-nums}
.pp-cell[type=date]{font-variant-numeric:tabular-nums}
.pp-cell::placeholder{color:var(--off);opacity:0}
.pp-cell:hover::placeholder,.pp-cell:focus::placeholder{opacity:.75}
.pp-ro{display:block;padding:6px 8px}
select.pp-selc{width:auto;padding:4px 24px 4px 11px;border:0;border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:600;color:var(--c);cursor:pointer;-webkit-appearance:none;appearance:none;
  background:var(--cb) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='none' stroke='%238b95a1' stroke-width='1.8'%3E%3Cpath d='m2 3.5 3 3 3-3'/%3E%3C/svg%3E") no-repeat right 9px center}
select.pp-selc:hover{border:0;filter:brightness(.97)}
.pp-ib{border:0;background:none;width:26px;height:26px;border-radius:var(--r-sm);color:var(--muted);font-size:var(--fs-md);line-height:1;display:inline-grid;place-items:center}
.pp-ib:hover{background:var(--surface-2);color:var(--fg)}
.pp-ib.x:hover{background:var(--danger-soft);color:var(--danger)}
.pp-c-act .pp-ib{opacity:0}
.pp-grid-t tr:hover .pp-ib,.pp-ib:focus-visible{opacity:1}
.pp-late .pp-cell,.pp-late .pp-ro{color:var(--danger);font-weight:600}
.pp-when{padding-left:8px!important}

/* 작업 일정 막대 */
.pp-tl{margin-top:14px;padding:16px 18px 12px}
.pp-tl-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.pp-tl-h b{font-size:var(--fs-md)}
.pp-key{display:inline-block;width:10px;height:2px;vertical-align:middle;margin:0 4px 0 10px}
.pp-key.today{background:var(--accent)} .pp-key.sub{background:var(--danger)}
.pp-tl-axis{position:relative;height:20px;margin-left:180px;border-bottom:1px solid var(--line);font-size:var(--fs-xs);color:var(--muted)}
.pp-tl-axis span{position:absolute;bottom:3px;transform:translateX(-50%);white-space:nowrap}
.pp-tl-row{display:grid;grid-template-columns:180px 1fr;align-items:center;height:30px}
.pp-tl-name{font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px}
.pp-tl-track{position:relative;height:100%;border-bottom:1px dashed color-mix(in srgb,var(--line) 70%,transparent)}
.pp-tl-bar{position:absolute;top:8px;height:14px;border-radius:var(--r-sm);background:var(--c);opacity:.85;padding:0}
.pp-tl-bar.gray{background:var(--off)}
.pp-vl{position:absolute;top:0;bottom:0;width:2px;z-index:1}
.pp-vl.today{background:var(--accent)} .pp-vl.sub{background:var(--danger)}

/* 스토리보드 */
.pp-sb-in{display:flex;align-items:center;gap:6px}
.pp-lv{flex:none;font-size:10.5px;font-weight:700;width:30px;text-align:center;padding:2px 0;border-radius:var(--r-sm);background:var(--surface-2);color:var(--muted)}
.pp-sb-l1 td{background:color-mix(in srgb,var(--accent-soft) 45%,var(--surface))}
.pp-sb-l1 .pp-lv{background:var(--accent);color:var(--accent-fg)}
.pp-sb-l1 .pp-cell,.pp-sb-l1 .pp-ro{font-weight:700;font-size:var(--fs-md)}
.pp-sb-parent .pp-cell,.pp-sb-parent .pp-ro{font-weight:700}
.pp-sb-l2 .pp-lv{background:var(--accent-soft);color:var(--side-active-fg)}
.pp-sb-cnt{font-size:var(--fs-xs);color:var(--muted);padding:0 8px}
.pp-start{color:var(--muted);padding-right:10px!important}
.pp-sb-act{white-space:nowrap}
tr.pp-dim .pp-cell,tr.pp-dim .pp-ro{color:var(--muted)}
.pp-paste{width:100%;min-height:180px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--bg);font-size:var(--fs-sm);font-family:var(--f-mono);white-space:pre;resize:vertical}
.pp-paste:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.pp-paste-prev{max-height:220px;overflow:auto;padding:10px 12px;border-radius:var(--r-ctl);background:var(--surface-2);font-size:var(--fs-sm)}
.pp-paste-prev ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:3px}
.pp-paste-prev li{display:flex;align-items:center;gap:6px}
.pp-chk{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm)}
.pp-chk input{width:auto;margin:0}

/* 제출 서류 */
.pp-comps{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto}
.pp-comp{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 10px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);font-size:var(--fs-sm);font-weight:600}
.pp-comp small{font-size:var(--fs-xs);font-weight:700;padding:0 6px;border-radius:var(--r-pill);background:var(--accent);color:var(--accent-fg)}
.pp-comp-n{border:0;background:none;padding:2px 0;font-weight:600}
.pp-comp .pp-ib{width:22px;height:22px;font-size:var(--fs-xs)}
.pp-comp .pp-ib[data-arm]{width:auto;padding:0 6px;color:var(--danger)}
.pp-docs th{text-align:center}
.pp-docs th:nth-child(2),.pp-docs th:nth-child(3){text-align:left}
.pp-comp-h{border-left:1px solid var(--line);color:var(--fg)!important}
.pp-need,.pp-done{text-align:center;width:52px}
td.pp-need{border-left:1px solid var(--line)}
.pp-o{width:30px;height:26px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-weight:700;font-size:var(--fs-sm);color:var(--off)}
.pp-o.on{border-color:transparent;background:var(--accent-soft);color:var(--side-active-fg)}
.pp-done input{width:17px;height:17px;accent-color:var(--ok);cursor:pointer;vertical-align:middle}
.pp-no{color:var(--muted);width:40px}
.pp-cat{width:120px}
.pp-same{display:block;padding:6px 8px;color:var(--off)}
.pp-grp td{background:var(--surface-2);padding:9px 12px!important}
.pp-grp b{font-size:var(--fs-sm)}
.pp-add{float:right;border:0;background:none;color:var(--accent);font-size:var(--fs-sm);font-weight:600;padding:0 4px}
tr.pp-miss td:first-child{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--danger) 70%,transparent)}
.pp-docs .pp-dtitle{min-width:240px}
.pp-docs .pp-note{min-width:300px}
.pp-docs .pp-form{width:110px}
.pp-sb .pp-rfp{min-width:200px}

/* 메모 · 기록 */
.pp-log-add{display:flex;gap:8px;margin-bottom:12px}
.pp-log-in{flex:1;min-width:0;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--bg)}
.pp-log-in:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--surface)}
.pp-logs{list-style:none;margin:0;padding:0;display:grid}
.pp-logs li{padding:10px 0;border-top:1px solid var(--line)}
.pp-logs li:first-child{border-top:0}
.pp-log-m{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm)}
.pp-log-m .pp-ib{margin-left:auto;opacity:0}
.pp-logs li:hover .pp-ib{opacity:1}
.pp-logs p{margin:3px 0 0;font-size:var(--fs-md);white-space:pre-wrap;overflow-wrap:anywhere}
.pp-csv-cols{margin:0;padding:10px 12px;border-radius:var(--r-ctl);background:var(--surface-2);font-size:var(--fs-sm);line-height:1.7}

@media (max-width:1100px){
  .pp-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pp-grid{grid-template-columns:1fr}
}
@media (max-width:1100px){ .pp-sum{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:760px){
  .pp-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pp-tl-axis{margin-left:110px} .pp-tl-row{grid-template-columns:110px 1fr}
  .pp-c-act .pp-ib{opacity:1}
  .pp-hero{padding:18px}
  .pp-hero h2{font-size:var(--fs-xl)}
  .pp-scroll{max-height:none}
}

/* 사업금액 + 부가세 기준 */
.pp-amount-block{padding:14px;border:1px solid var(--line);border-radius:var(--r-ctl)}
.pp-amount-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:end}
.pp-amount-row .seg{height:42px;align-items:stretch}
.pp-amount-row .seg span{height:100%;display:flex;align-items:center}
.pp-amt small{display:block}
.pp-vat-tag{font-size:var(--fs-xs);font-weight:600;color:var(--muted)}
.pp-vat-tag.ex{color:var(--warn)}
.pp-hero .vat-box{margin-top:12px}
@media (max-width:760px){ .pp-amount-row{grid-template-columns:1fr} .vat-box>i{display:none} .vat-c{flex:1 1 40%} }

/* 목록에서 바로 고치는 제안작업 상태 · 공고 진행단계 */
select.pp-lsel{max-width:100%}
select.pp-lsel.none{--c:var(--muted);--cb:transparent;box-shadow:inset 0 0 0 1px var(--line)}
select.pp-lsel:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
select.pp-lsel:disabled{opacity:.6;cursor:progress}
.pp-chips-l{align-self:center;font-size:var(--fs-sm);font-weight:600;color:var(--muted);margin-right:2px}
